PHP8.0的编译安装
安装与配置
本次使用的操作系统Ubuntu 18.04.4 LTS
安装
1.准备必要库
apt-get install -y autoconf libxml2-dev libsqlite3-dev \
libcurl4-openssl-dev libssl-dev libonig-dev libtidy-dev zlib1g-dev
2.去官网下载8.0正式版 https://www.php.net/releases/8.0/en.php
3.解压安装
tar php-8.0.0.tar.gzcd php-8.0.0
./configure --prefix=/opt/php8 --with-config-file-path=/opt/php8/etc \
--enable-fpm --enable-mysqlnd --enable-opcache --enable-pcntl \
--enable-mbstring --enable-soap --enable-zip --enable-calendar \
--enable-bcmath --enable-exif --enable-ftp --enable-intl --with-mysqli \
--with-pdo-mysql --with-openssl --with-curl --with-gd --with-gettext \
--with-mhash --with-openssl --with-mcrypt --with-tidy --enable-wddx \
--with-xmlrpc --with-zlibmakemake installcp php.ini-production /opt/php/etc/php.inicd /opt/php8/etccp php-fpm.conf.default php-fpm.confcp ./php-fpm.d/www.conf.default ./php-fpm.d/www.conf
4.做个软连接
ln -s /opt/php8/bin/php /usr/bin/php8
5.安装composer
cd /opt/php8/bin/curl -sS https://getcomposer.org/installer | php8ln -s /opt/php8/bin/composer.phar /usr/bin/composer8
composer8 config -g repo.packagist composer https://mirrors.aliyun.com/composer/
6.添加一个php8.0的system service
vim /lib/systemd/system/php8.0-fpm.service
内容如下
[Unit]
Description=The PHP 8.0 FastCGI Process Manager
Documentation=man:php-fpm8.0(8)
After=network.target
[Service]
Type=simple
PIDFile=/var/run/php8.0-fpm.pid
ExecStart=/opt/php8/sbin/php-fpm --nodaemonize --fpm-config /opt/php8/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
配置
fpm-fpm,php.ini配置
和PHP7一样,注意下用户权限
opcache配置
PHP8多了一个jit配置,如下
[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.jit_buffer_size=100M
opcache.jit=1255
启动
systemctl start php8.0-fpm
laravel
cd /opt/web
composer8 create-project --prefer-dist laravel/laravel php8
配置一下.env文件
nginx配置
nginx的配置和PHP7的一致
server {
listen 94;
access_log /tmp/test94.log main;
root /opt/web/php8/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php {
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
fastcgi_index /index.php;
include fastcgi_params;
fastcgi_split_path_info ^(. \.php)(/. )$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
添加一个接口
laravel7的路由写法在laravel8中有点问题,改下RouteServiceProvider.php
的写法。
比如API路由,将$this->namespace
改为App\Http\Controllers\Api
。
public function boot()
{
$this->configureRateLimiting();
$this->routes(function () {
Route::prefix('api')
->middleware('api')
->namespace('App\Http\Controllers\Api')
->group(base_path('routes/api.php'));
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
});
}
其他一样,不用修改。
加个测试接口看看:
Route::get('/test','WxController@test');
test
接口查一条数据并返回
<?phpnamespace App\Http\Controllers\Api;use App\Models\WareHouses;use Illuminate\Foundation\Auth\Access\AuthorizesRequests;use Illuminate\Foundation\Bus\DispatchesJobs;use Illuminate\Foundation\Validation\ValidatesRequests;use Illuminate\Http\Request;use Illuminate\Routing\Controller as BaseController;class WxController extends BaseController{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
public function test(Request $request)
{
return WareHouses::find(1)->toarray();
}}
对比测试PHP7
本次使用PHP7.3,接口代码和PHP8一致,两者都开启opcache。
服务器配置是1核2G,用ab简单测试下。
ab -n 100 -c 10
PHP7.3的测试结果如下:
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 192.168.10.10 (be patient).....done
Server Software: nginx/1.14.0
Server Hostname: 192.168.10.10
Server Port: 94
Document Path: /api/test
Document Length: 255 bytes
Concurrency Level: 10
Time taken for tests: 0.400 seconds
Complete requests: 10
Failed requests: 0
Total transferred: 5720 bytes
HTML transferred: 2550 bytes
Requests per second: 25.00 [#/sec] (mean)
Time per request: 399.994 [ms] (mean)
Time per request: 39.999 [ms] (mean, across all concurrent requests)
Transfer rate: 13.97 [Kbytes/sec] received
Connection Times (ms)
min mean[ /-sd] median max
Connect: 8 10 2.1 11 13
Processing: 101 159 42.8 174 228
Waiting: 101 159 42.8 174 228
Total: 114 170 42.0 186 235
Percentage of the requests served within a certain time (ms)
50% 186
66% 186
75% 197
80% 219
90% 235
95% 235
98% 235
99% 235
100% 235 (longest request)
PHP8.0的测试结果如下:
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 192.168.10.10 (be patient).....done
Server Software: nginx/1.14.0
Server Hostname: 192.168.10.10
Server Port: 94
Document Path: /api/test
Document Length: 255 bytes
Concurrency Level: 10
Time taken for tests: 2.441 seconds
Complete requests: 100
Failed requests: 33
(Connect: 0, Receive: 0, Length: 33, Exceptions: 0)
Non-2xx responses: 33
Total transferred: 268489 bytes
HTML transferred: 234720 bytes
Requests per second: 40.97 [#/sec] (mean)
Time per request: 244.096 [ms] (mean)
Time per request: 24.410 [ms] (mean, across all concurrent requests)
Transfer rate: 107.42 [Kbytes/sec] received
Connection Times (ms)
min mean[ /-sd] median max
Connect: 7 15 18.1 10 132
Processing: 47 210 224.4 106 817
Waiting: 17 118 107.4 101 787
Total: 55 226 222.1 122 828
Percentage of the requests served within a certain time (ms)
50% 122
66% 137
75% 164
80% 289
90% 640
95% 809
98% 820
99% 828
100% 828 (longest request)
本文出至:学新通
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通
- 本文地址: https://www.swvq.com/boutique/detail/1772
- 联系方式: luke.wu@swvq.com
- 来源链接: www.php.cn/topic/php8/488887.html
系列文章
更多
同类精品
更多
精彩评论
-
windows上查看nginx是否启动
PHP中文网 04-19 -
2023年最新的28道PHP面试题附答案
PHP中文网 03-27 -
docker hub 进不去怎么办
PHP中文网 03-15 -
推荐五款xml编辑工具
PHP中文网 03-04 -
navicat怎样清除注册表
PHP中文网 04-05 -
ChatGPT应用通过Axios+EventSource使用GPT3.5 API
uWydnA 03-13 -
强力推荐10款好看使用的Bootstrap后台管理系统模板
PHP中文网 03-09 -
vscode怎么调整代码大小两种方法
PHP中文网 03-11 -
navicat删除的数据能还原吗
PHP中文网 04-09 -
navicat连接sqlserver数据库
PHP中文网 04-03