swoole简单应用,加速框架
Posted mr.杰瑞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swoole简单应用,加速框架相关的知识,希望对你有一定的参考价值。
swoole 是一个使用 C++ 语言编写的基于异步事件驱动和协程的并行网络通信引擎,为 php 提供协程、高性能网络编程支持。
优势:
- 常驻内存,避免重复加载带来性能损耗
- 协程异步,提高对 I/O 密集型场景并发处理能力(支付、登录等)
- 提高对 I/O 密集型场景并发处理能力(如:微信开发、支付、登录等)
首先你需要先安装swoole
第一种方式
下载swoole
找到安装包 进行解压
tar –zxvf swoole-4.6.6.tar
第二种方式
有docker的话 先把压缩包解压,然后将安装包复制到php扩展文件夹里
docker cp swoole-4.6.6 php:/usr/src/php/ext/swoole
进入php容器
docker exec -it php bash
docker-php-ext-install swoole
安装完成,为了确认一下是否安装好
php -m
或者
php --ri swoole
看到有swoole了
我环境已经有laravel框架了
现在首页耗时390ms
设置响应头
header请求类型
<?php
//实例化一个swoole的http服务类,并传递监听的端口以及host
$http = new swoole\\Http\\Server('0.0.0.0', 9501);
//监听一个onRequest 事件,当有新的http请求进入就会触发此事件
//两个参数,一个是$request对象,包含了请求的相关信息 GET/POST请求的数据
//第二个参数是response对象,对request的响应可以通过操作response对象来完成。
$http->on('Request', function ($request, $response) {
//$response->header()表示 设置响应数据类型
$response->header('Content-Type', 'text/html; charset=utf-8');
//$response->end()方法表示输出一段html内容来结束此请求
$response->end('<h1>Hello Swoole' . rand(1, 9999) );
});
$http->start();
?>
ps:0.0.0.0 表示监听所有 IP 地址,一台服务器可能同时有多个 IP,如 127.0.0.1 本地回环 IP、192.168.1.2 局域网 IP、210.127.10.1 外网 IP,这里也可以单独指定监听一个 IP
9501 监听的端口,如果被占用程序会抛出致命错误,中断执行。
swoole 加速php-fpm 原理(获取其他框架)
swoole是完全的长驻内存的,长驻内存一个最大的好处就是可以性能加速。在fpm模式下,我们处理一个请求,通常会有一些空消耗,比如框架共用文件加载,配置文件加载,那么在swoole中,可以在onworkerstart的时候提前一次性把一些必要的文件和配置加载好,不必每次receive重复加载一遍,这样能提升不小的性能。
laravel使用swoole的组件(laravels扩展包)
首先要有composer,有composer首先要有php那就先下载php吧
移除之前的php版本
yum -y remove php*
安装composer 继续
curl -sS https://getcomposer.org/installer | php
# 把composer.phar移动到环境下让其变成可执行
mv composer.phar /usr/local/bin/composer
# 测试
composer -V
可以了 ,可以安装laravels了,进入laravel目录
composer require hhxsv5/laravel-s
php artisan laravels publish
该命令会发布配置文件 laravels.php 到 config 目录下,以及脚本文件到 bin 目录下
yum install supervisor
cd /etc/supervisord.d/
vi laravel-s.ini
根据自己目录添加
[program:laravel-s-test]
command=php /www/blog/bin/laravels start -i
numprocs=1
autostart=true
autorestart=true
startretries=3
user=root
redirect_stderr=true
stdout_logfile=/www/blog/storage/logs/supervisord-stdout.log
未完待续
以上是关于swoole简单应用,加速框架的主要内容,如果未能解决你的问题,请参考以下文章