thinkphp5 swoole 执行异步任务
2017-10-25 17:34
169 查看
目录结构:
服务器端:
进入你的根目录 执行 php think websocket:start
客户端:
服务端显示:
服务器端:
<?php /* *author:hdj */ namespace app\Console; use think\console\Command; use think\console\Input; use think\console\Output; class Websocket extends Command{ protected $server; protected function configure() { $this->setName('websocket:start')->setDescription('Start Web Socket Server!'); } protected function execute(Input $input, Output $output) { $serv = new \swoole_server('0.0.0.0',9501); $serv->set(array('task_worker_num' => 4)); $serv->on('connect', function ($serv, $fd){ echo $fd."客户端已经连接进来了.\n"; }); $serv->on('receive', function($serv, $fd, $from_id, $data) { $task_id = $serv->task($data); echo "开始投递异步任务 id=$task_id\n"; }); $serv->on('task', function ($serv, $task_id, $from_id, $data) { echo "接收异步任务[id=$task_id]".PHP_EOL; for ($i = 0 ; $i<10000;$i++){ if($i%2==0){ echo 'send'.$i.' success'."\n"; }else{ echo 'send'.$i.' fail'."\n"; } sleep(1); } $serv->finish("$data -> OK"); }); $serv->on('finish', function ($serv, $task_id, $data) { echo "异步任务[id=$task_id]完成".PHP_EOL; }); $serv->start(); } }
进入你的根目录 执行 php think websocket:start
客户端:
<?php namespace app\index\controller; use think\Controller; class Test extends Controller { public function index(){ $client = new \swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC); $ret = $client->connect("23.27.127.32", 9501); if(empty($ret)){ echo 'error!connect to swoole_server failed'; } else { $client->send('blue'); } } }
服务端显示:
相关文章推荐
- yii2 console 集成swoole 执行异步任务,例如注册邮件,发送短信
- yii2 console 集成swoole 执行异步任务,例如注册邮件,发送短信
- Swoole入门:执行异步任务01(使用案列,简单逻辑梳理)
- java 异步执行任务,返回进度
- node.js实战学习笔记04--异步任务的串行化执行
- Spring Batch任务的异步执行
- 安卓(Android)中如何优雅的 创建/执行 异步任务/回调(AsyncTask 、Thread、Job、CallBack、Handler) ?线程池(Executor)
- thinkphp 3.2 异步上传图片,出现在<pre>标签,不执行success
- 在 tornado 中异步无阻塞的执行耗时任务
- Django Celery Redis 异步执行任务demo实例
- WinForm中异步执行任务实例-按回车异步执行各任务。
- Android AsyncTask内部线程池异步执行任务机制简要分析
- ansible任务的异步执行
- 异步任务AsyncTask的doInBackground执行慢的问题
- Service学习——第五篇 使用IntentService在单独线程上执行异步任务
- 实现增强的异步任务执行组件
- spring boot-分布式定时任务中,异步执行时JMS无法重新投递消息
- java并发编程--Executor框架(一) 摘要: Eexecutor作为灵活且强大的异步执行框架,其支持多种不同类型的任务执行策略,提供了一种标准的方法将任务的提交过程和执行过程
- 异步执行任务的方式
- Android中使用Handler和异步任务(AsyncTack)来为UI线程执行费时操作