作者 : tanyi 来源 : 我的笔记 浏览 : 890 次 时间 : 2018-11-14 15:59:03
今天没事就研究了一下这个东西,主要是利用workerman的定时器。所以首先得下载workerman然后引入到自己的项目,或者composer安装也可以,具体就不再多说了。先贴出代码
use Workerman\Worker; use \Workerman\Lib\Timer; require_once './Workerman/Autoloader.php'; //创建一个Worker监听2345端口,使用http协议通讯 $http_worker = new Worker(" //启动4个进程对外提供服务 $http_worker->count = 4; //检查订单是否超时 function check_order($order){ //这个方法用于检查该订单是否超时。。。。具体逻辑根据实际应用场景写,这里只记录是否进入这个方法 file_put_contents('./log.txt','订单编号:'.$order.' 处理时间:'.date('Y-m-d H:i:s')."\n",FILE_APPEND); } $http_worker->onMessage = function($connection, $data) { $msg=''; if(isset($data['get']['order'])){ $msg=json_encode($data['get']); //10秒后执行检查订单方法,最后一个参数传递false,表示只运行一次 //这里记录请求时间用于对比延时操作的效果 file_put_contents('./log.txt','订单编号:'.$data['get']['order'].' 请求时间:'.date('Y-m-d H:i:s')."\n",FILE_APPEND); Timer::add(10, 'check_order', array($data['get']['order']), false); } $connection->send('请求成功:'.$msg); }; //运行worker Worker::runAll();
新建一个php文件,假设命名为index.php,将上面代码复制到该文件,注意里面require_once的路径根据自己目录做调整,然后打开cmd窗口,进入到index.php所在目录,执行命令:php index.php,正常应该会看到的结果应该是这样
如果报错需要去看看workerman的文档,这时不要关闭该cmd窗口。这时我们浏览器去访问:http://127.0.0.1:2345/?order=No1
和http://127.0.0.1:2345/?order=No2,然后查看log.txt的记录
最终结果不错,达到了我预期的效果。
上一篇: 利用nginx实现负载均衡【转载】
下一篇: php __call() 与call_user_func_array()方法结合的使用【原创】
版权声明:原创文章,转载时请注明原始出处,作者等相关信息。
本文连接:https://ntbk8.cn/index/d-56.html
文章搜索
热门文章
最新文章
新闻头条
历史上的今天