swoole运行模式加速laravel应用的详细介绍
- 2019 年 12 月 24 日
- 筆記
本篇文章给大家带来的内容是关于swoole运行模式加速laravel应用的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
一、Swoole
Swoole号称重新定义了PHP,它是一个PHP扩展,使得PHP可以使用异步的方式执行,就像node一样,而且还能使用socket,为PHP提供了一系列异步IO、事件驱动、并行数据结构功能。 Swoole4支持完整的协程编程模式,可以使用完全同步的代码实现异步程序。PHP代码无需额外增加任何关键词,底层自动进行协程调度,实现异步IO 。 nodejs能实现的swoole几乎都能实现,而且性能比nodejs更高,毕竟nodejs是单线程的无法充分发挥cpu性能,swoole是多线程的可以充分发挥cpu的性能。 Swoole高效跟传统的web开发有什么区别,除了传统的LAMP/LNMP同步开发模式,swoole的异步开发模式是怎样的,如何保持高效?
二、传统web开发模式 PHP web开发采用的方式是LAMP/LNMP架构,即Linux、Nginx,Mysql和PHP。这里以nginx来举例,大致结构为:

<img src="https://pic1.zhimg.com/80/v2-a2598310612af62fae2fe07355954884_hd.jpg" alt="" width="756" normal"="" style="box-sizing: border-box; border: 0px; vertical-align: middle; cursor: pointer;">
图一是使用swoole作为应用服务器,图二是apache服务器 测试环境在虚拟机中,电脑配置也较差,性能没有完全发挥出来,可以看到apache只完成197次请求就扛不住压力了,swoole HTTP服务 完成了压测,性功完全碾压apache服务器。
七、使用Nginx代理
swoole在官网也提到过:swoole_http_server对Http协议的支持并不完整,建议仅作为应用服务器。并且在前端增加Nginx作为代理。 那么,我们就增加需要配置nginx.conf里的server:
1 server { 2 3 listen 80; 4 5 server_name your.domain.com; 6 7 root /path/to/laravel/public; 8 9 index index.php; 10 11 12 13 location = /index.php { 14 15 # Ensure that there is no such file named "not_exists" 16 17 # in your "public" directory. 18 19 try_files /not_exists @swoole; 20 21 } 22 23 24 25 location / { 26 27 try_files $uri $uri/ @swoole; 28 29 } 30 31 32 33 location @swoole { 34 35 set $suffix ""; 36 37 38 39 if ($uri = /index.php) { 40 41 set $suffix "/"; 42 43 } 44 45 46 47 proxy_set_header Host $host; 48 49 proxy_set_header SERVER_PORT $server_port; 50 51 proxy_set_header REMOTE_ADDR $remote_addr; 52 53 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 54 55 56 57 # IF https 58 59 # proxy_set_header HTTPS "on"; 60 61 62 63 proxy_pass http://127.0.0.1:1215$suffix; 64 65 } 66 67 }
配置可参考swoole方文档官 Nginx/Apache配置 至此,大功告成,你可以像平常一样访问你的网站了。
八、使用swoole和传统php开发的缺点 本文主要介绍了使用swoole作为laravel的应服务器,最后说下使用swoole和传统php开发的缺点。 1、更难上手。这要求开发人员对于多进程的运行模式有更清晰的认识 2、更容易内存泄露。在处理全局变量,静态变量的时候一定要小心,这种不会被GC清理的变量会存在整个生命周期中,如果没有正确的处理,很容易消耗完所有的内存。在php-fpm下,php代码执行完内存就会被完全释放。
以上就是swoole运行模式加速laravel应用的详细介绍的详细内容