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应用的详细介绍的详细内容