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 ;}
}

跑起来的样子
在这里插入图片描述


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

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部