在Swoole上加速Laravel应用
Swoole是用于PHP的生产级异步编程框架。它是用纯C语言编写的PHP扩展,它使PHP开发人员可以在PHP中编写高性能,可伸缩的并发TCP,UDP,Unix套接字,HTTP,WebSocket服务,而无需过多了解非阻塞I / O编程和低级Linux内核。你可以将 Swoole视为 NodeJS之类,但适用于PHP,具有更高的性能。 为什么要在 Swoole 上运行 Laravel?下图展示了 PHP 的生命周期。正如你所看到的那样,当你每次运行 PHP 脚本的时候,PHP 都需要初始化模块并为你的运行环境启动 Zend 引擎。并且将 PHP 脚本编译为 OpCodes 以便 Zend 引擎执行。 但是, 这样的生命周期需要在每次请求的时候都执行一遍。因为单个请求创建的环境在请求执行结束后会立即销毁。 换句话说, 在传统的 PHP 生命周期中,它浪费了大量时间来构建和破坏用于脚本执行的资源。想象一下像 Laravel 这样的框架, 在每次请求中需要加载多少文件?加载文件也有很多I / O消耗。 因此如果我们利用 Swoole 内置一个应用级别的 Server, 并且所有脚本文件在加载一次之后便可以保存在内存中呢? 这就是为什么我们需要尝试在 Swoole 上运行 Laravel。Swoole可以成为强大的性能提升器,而Laravel提供了优雅的结构和代码用法。那是一个完美的组合! 安装以下是 swooletw/laravel-swoole 的主要特点:
使用Composer需要此软件包: $ composer require swooletw/laravel-swoole
该软件包依赖Swoole扩展。使用此软件包之前,请确保已安装Swoole。使用此命令快速安装它: pecl install swoole 在安装这个扩展之后,你需要编辑 php.ini 添加 extension=swoole.so 一行。 php -i | grep php.ini # check the php.ini file location sudo echo "extension=swoole.so" >> php.ini add the extension=swoole.so to the end of php.ini php -m | grep swoole check if the swoole extension has been enabled
然后,添加服务提供者: 如果你使用 Laravel ,在 config/app.php 服务提供者数组添加该服务提供者: [ 'providers' => [ SwooleTWHttpLaravelServiceProvider::class, ],1)"> ] 如果你使用 Lumen ,请将下面的代码添加到 bootstrap/app.php: $app->register(SwooleTWHttpLumenServiceProvider::class);
建立并运行起来现在,你可以执行以下的命令来启动 Swoole HTTP 服务。 $ php artisan swoole:http start 然后你可以看到以下信息: Starting swoole http server... Swoole http server started: <http://127.0.0.1:1215> 现在可以通过访问 http://127.0.0.1:1215 来进入 Laravel 应用。 基准测试使用 MacBook Air 13 寸(2015 年产)及干净的 Lumen 5.5 项目测试: wrk -t4 -c100 http:your.app
基于 FPM 的 NginxRunning 10s test @ http:lumen.app:9999 4 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 1.14s 191.03ms 1.40s 90.31% Req/Sec 22.65 10.65 50.00 65.31% 815 requests in 10.07s,223.65KB read Requests/sec: 80.93 Transfer/sec: 22.21KB Swoole HTTP 服务Running 10s test @ http:127.0.0.1:1215 4 threads and 100 Stdev Latency 11.58ms 4.74ms 68.73ms 81.63% Req/Sec 2.19k 357.43 2.90k 69.50% 87879 requests in 10.08s,15.67MB read Requests/sec: 8717.00 Transfer/sec: 1.55MB 更多内容可以访问【对标大厂】精品PHP架构师教程目录大全,只要你能看完保证薪资上升一个台阶(持续更新) ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |