1.是什么限制 Laravel 框架的速度?
laravel 框架启动的时候需要加载很多文件,再加上其出了名的生态环境好,所以在开发过程中我们就会发现有非常多的已经造好的轮子,这也就使得Laravel的一次启动的磁盘IO特别高(就是要加载很多文件),现在的问题就是:每次启动Laravel的时候不都重新加载这些文件就好了,所以用 Swoole 就能很好的解决。
2.Swoole
Swoole号称重新定义了PHP,它是一个PHP扩展,使得PHP可以使用异步的方式执行,就像node一样,而且还能使用socket,为PHP提供了一系列异步IO、 事件驱动 、并行数据结构功能。Swoole 可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。它可以大大提升项目的性能。
3.使用Swoole提升Laravel的性能
在现有的轮子中,感觉下面这两个还是非常不错的,可以自行选择
- swooletw/laravel-swoole
- garveen/laravoole
这里小编选择了 swooletw/laravel-swoole
使用 composer 安装:
如果你使用的是laravel,那么在 config/app.php 的 providers 数组中加上
如果你使用的是lumen,那么在 bootstrap/app.php 中加入如下代码
将配置文件导出到 config 目录下
然后可以去 config/swoole_http.php 中配置信息
host和post不用多说,options里面的具体配置可以去swoole官网查看详细参数信息。
swoole_http.php 里还提供配置 providers 数组,
因为使用swoole作为http后,这些providers会被存到内存中,所以这里配置的是每次
请求都想要重新注册和重新启动的providers。
Artisan Commands
这个轮子完全使用artisan命令来操作。
php artisan swoole:http start|stop| restart | reload
依次是,启动/停止/重启/ 重载 。
所以我们可以通过以下命令来启动 swoole_http_server
现在可以通过配置文件里的host和port去访问Laravel了,例如我的配置是: 127.0.0.1: 1215
注意 :该拓展是不支持热启动的,所以每次有代码更新都要重启服务 php artisan swoole:http restart 。当然你也可以在linux上写一个脚本,让 git pull 代码后自动重启服务。
4.性能测试
下面让我们来看两张图。
使用swoole前:
使用swoole后:
这里是使用Apache的ab测试工具
ab -n1000 -c10
我们可以惊奇的发现, Request per second 从原来的20多,提升到了600多。将近提升了30倍左右。啊,多么痛的领悟!!
5.使用 nginx 代理
swoole在官网也提到过:swoole_http_server对Http协议的支持并不完整,建议仅作为应用服务器。并且在前端增加Nginx作为代理。
那么,我们就增加需要配置nginx.conf里的server:
至此,大功告成,你可以像平常一样访问你的网站了。