thinkphp使用 think-swoole task
是参考这位大佬的,大家可以去看看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
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
namespace app\controller;use app\BaseController;
use Swoole\Server;class Index extends BaseController
{public function index(Server $server){$server->task(['test'=>'test value']);return ;}
}
跑起来的样子

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
