1. swoole是什么?如何安装?
1.1 swoole是什么
Swoole 是一个使用 C++ 语言编写的基于异步事件驱动和协程的并行网络通信引擎,为 PHP 提供协程、高性能网络编程支持。提供了多种通信协议的网络服务器和客户端模块,可以方便快速的实现 TCP/UDP服务、高性能Web、WebSocket服务、物联网、实时通讯、游戏、微服务等,使 PHP 不再局限于传统的 Web 领域。
swoole的优势
方便地开发 Http、WebSocket、TCP、UDP 等应用,可以与硬件通信
1.获取swoole安装包,地址:https://pecl.php.net/package/swoole
2. 解压swoole安装包 tar –zxvf swoole-4.6.6.tar 3. 将解压出来的安装包copy到PHP容器 docker cp /home/swoole PHP:/usr/src/PHP/ext/swoole 4. 安装swoole docker-PHP-ext-install swoole 5. 完成安装后,查看swoole信息 PHP --ri swoole
2. swoole初步体验
<?PHP 那么怎么解决这个问题呢? FastCGI,全称 Fast Common Gateway Interface,中文译作“快速公共网管接口”。没错,这又是个协议。当然,这个协议并不是因为 PHP 才有的。 对于 PHP 来说,httpd 是通过自身来实现一个 FastCGI 的模块的。它会预先加载好 PHP.ini 文件中的配置。待到有请求进入需要 PHP 处理时,PHP 就不需要再对 PHP.ini 重新加载了。这也就是每改动过 PHP.ini 后都要重启 httpd 服务的原因。 PHP-fpm 也是 FastCGI 的一种实现。通常我们是将 Nginx 的 PHP 处理部分代理到 PHP-fpm 的端口上,交给 PHP-fpm 来处理。而 PHP-fpm 同样是通过预先加载配置,然后给到子进程的方式的,它会对进程做一些管理。 http-Server服务,这是服务可以用于web项目开发中、也可以用于对laravel,thinkPHP等框架进行加速; 如果想利用swoole加速框架、框架的条件必须是ioc类型因为swoole是常驻内存。 我们用的 PHP 主要用于 web 开发,通过 Nginx、apache 等服务端程序调用 PHP-fpm 处理服务端的业务逻辑,处理完后 PHP 撤消内存并返回结果。一个 web 请求就要加载一次 PHP 的全部文件,需要的系统资源开销很大,这是目前 PHP-fpm 的缺点之一;并且因为 PHP-fpm 在一次请求结束就释放内存,无法做连接池,也不合适 service 端的开发。 优点: 缺点:
swoole是完全的长驻内存的,长驻内存一个最大的好处就是可以性能加速。在fpm模式下,我们处理一个请求,通常会有一些空消耗,比如框架共用文件加载,配置文件加载,那么在swoole中,可以在onworkerstart的时候提前一次性把一些必要的文件和配置加载好,不必每次receive重复加载一遍,这样能提升不小的性能。 5. laravel使用swoole的组件
composer require hhxsv5/laravel-s 该扩展包具备自动发现功能(Laravel 5.5 以上版本可用),无需手动在 config/app.PHP 配置文件中注册,安装完成后,运行如下 Artisan 命令相应脚本和配置文件发布到根目录下: 你可以在配置文件中对 Swoole 进行一些基本配置,而脚本文件主要用于管理 Swoole 服务的启动、重载、关闭等操作。 也可以在.env 修改工作进程数并重启服务 启动 LaravelS 此外 PHP bin/laravels 还支持其它命令对 LaravelS 进行管理:
如果是在生产环境使用,推荐使用 Supervisor 对 LaravelS 服务进行管理,从而提供服务的稳定性,相应的配置示例如下: 6.Nginx反向代理swoole使用
反向代理和正向代理的区别就是:正向代理代理客户端,反向代理代理服务器。 Nginx.conf配置 版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。
$http = new swoole\Http\Server('0.0.0.0',9501);
$http->on('Request',function ($request,$response) {
$response->header('Content-Type','text/html; charset=utf-8');
$response->end('<h1>Hello Swoole. #' . rand(1000,9999) . '</h1>');
});
$http->start();
?>
代码解释:
实例化一个swoole的http服务类,并传递监听的端口以及host,HTTP 服务器只需要关注请求响应即可,所以只需要监听一个 onRequest 事件。当有新的 HTTP 请求进入就会触发此事件。事件回调函数有 2 个参数,一个是 $request 对象,包含了请求的相关信息,如 GET/POST 请求的数据。
另外一个是 response 对象,对 request 的响应可以通过操作 response 对象来完成。$response->end() 方法表示输出一段 HTML 内容,并结束此请求
0.0.0.0 表示监听所有 IP 地址,一台服务器可能同时有多个 IP,如 127.0.0.1 本地回环 IP、192.168.1.100 局域网 IP、210.127.20.2 外网 IP,这里也可以单独指定监听一个 IP
9501 监听的端口,如果被占用程序会抛出致命错误,中断执行。
3. PHP运行的运行模式
命令
说明
start
启动laravelS,展示已启动的进程列表 "ps -ef / grep laravelS" 支持选项 "-d /--daemonize" 以守护进程的方式运行,此选项将覆盖laravels.PHP中swoole.daemonize设置;支持选项 "-e /--env" 用来指定运行的环境,如 --env=testing将会优先使用配置.env.testing,这个特性要求laravel5.2+
stop
@H_530_404@restart
停止laravelS
停止laravelS,支持选项 “-d / --daemonize ”和 “-e / --env”
reload
@H_530_404@info
平滑重启索引Task/Worker,这些进程包含了你的业务代码,不会重启Master/manger/Timer/Custom进程
显示组件的版本信息
help
显示帮助信息