将想要的状态,
以“彩色”在大脑中呈现!

PHP8.0的编译安装与使用(详解)

            这里要介绍的内容是PHP8.0的编译安装与使用(详解),所见所得,希望您能Get到要点。
        

PHP8.0的正式版早已发布,本文就介绍下它的安装,并使用laravel对比下PHP

安装与配置

本次使用的操作系统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

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

创建一个laravel项目【推荐: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)

以上就是PHP8.0的编译安装与使用(详解)的详细内容,更多请关注F2games.cn自猿其说其它相关文章!

赞(0)
未经允许不得转载:自猿其说 » PHP8.0的编译安装与使用(详解)

评论 抢沙发

评论前必须登录!

 

聚合实用在线工具

前往在线工具