是参考这位大佬的,大家可以去看看https://www.kancloud.cn/book_xwy/think-swoole3/1720752
安装thinkphp6
composer create-project topthink/think tpwebsocket
通过composer给项目安装think-swoole扩展
composer require topthink/think-swoole
使用nginx做代理服务配置如下
server{
listen 80 ;
server_name 域名;
#代理配置
location /{
proxy_set_header X-Original-Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:9501/;
}
}
1.:9501是config/swoole.php中的server[‘port’]
2.配置完成后重启nginx即可
3.在项目根目录下执行php think swoole start
4.访问域名即可看到响应结果.
常用命令:
php think swoole start
php think swoole restart
php think swoole stop
输出:
创建两个监听事件
php think make:listener SwooleTask
php think make:listener SwooleTaskFinish
在event.php加入如下代码:
// 事件定义文件
return [
'bind' => [
],
'listen' => [
'AppInit' => [],
'HttpRun' => [],
'HttpEnd' => [],
'LogLevel' => [],
'LogWrite' => [],
'swoole.task'=>['\app\listener\SwooleTask'],
'swoole.finish'=>['\app\listener\SwooleTaskFinish'],
],
'subscribe' => [
],
];
SwooleTask.php
<?php
declare (strict_types=1);
namespace app\listener;
use Swoole\Server\Task;
class SwooleTask
{
/**
* 事件监听处理
*
* @return mixed
*/
public function handle(Task $task)
{
var_dump('on task');
var_dump($task->data);//task的data数据即server->task()传入的数据
$task->finish($task->data);//这里必须手动执行finish,否则不会触发onFinish监听事件
return ;
}
}
SwooleTaskFinish.php
<?php
namespace app\controller;
use app\BaseController;
use Swoole\Server;
class Index extends BaseController
{
public function index(Server $server)
{
$server->task(['test'=>'test value']);
return ;
}
}
跑起来的样子