博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
laravel编写后台回写脚本
阅读量:3987 次
发布时间:2019-05-24

本文共 1500 字,大约阅读时间需要 5 分钟。

laravel编写后台回写脚本

不同与队列和任务调度(定时任务),这里我要实现近似实时的后台回写进程。

要求做到平滑重启,使其在完成某一次任务后自动退出进程,而不是暴力kill进程。

先配置好redis

创建一个command

php artisan make:command Read3SuccessStat

注册命令

在kernel.php中的$commands中添加 Read3SuccessStat::class

编辑命令

key = 'signal:stop_Read3SuccessStat'; $this->startTime = time(); } /** * Execute the console command. * * @return mixed */ public function handle() {
$action = $this->option('action'); if($action == 'run'){
$this->doStat(); }elseif ($action == 'stop'){
$this->sendStopSignal(); } } public function doStat(){
while(true){
if ($this->checkIfNeedExit()) {
break; } $this->info(date('Y-m-d H:i:s')); sleep(2); } $this->info('Read3SuccessStat stoped'); } public function sendStopSignal(){
Redis::set($this->key, 1); $this->info('the stop signal is sended to Read3SuccessStat'); } public function checkIfNeedExit() {
$signal = Redis::get($this->key); if (!empty($signal) && $signal > $this->startTime) {
return true; } return false; }}

打开两个命令行,进入项目根目录,分别执行以下命令

启动

php artisan Read3SuccessStat --action=run

停止

php artisan Read3SuccessStat --action=stop

关于进程重启

使用supervisor来管理 php artisan Read3SuccessStat --action=run 命令,可以做到自动重启,当你发送stop指令后,进程自动退出,然后supervisor会帮你唤起进程。

关于supervisor的使用,可参考其他文章。

转载地址:http://bzaui.baihongyu.com/

你可能感兴趣的文章
HDUOJ:2222(AC auto)
查看>>
HDUOJ:1277(AC auto)
查看>>
ML:随机森林、GBDT、XGBoost
查看>>
牛客OJ:逆序数对
查看>>
牛客OJ:不用加减乘除法做加法
查看>>
牛客OJ:最大子序列和(dp)
查看>>
牛客OJ:判断平衡二叉树
查看>>
牛客OJ:统计n以内所有数中各个位上1出现的个数
查看>>
牛客OJ:可以返回当前最小值的栈
查看>>
牛客OJ:字符串左移
查看>>
牛客OJ:对称二叉树
查看>>
牛客OJ:在排序数组中查找数字
查看>>
牛客OJ:环每次去除第m个,最后剩下?
查看>>
牛客OJ:中序遍历二叉树某节点下一个节点
查看>>
牛客OJ:和为S的两个数字
查看>>
牛客OJ:判断两个序列是否为栈压入序列和弹出序列
查看>>
牛客OJ:把正方形矩阵按顺时针输出
查看>>
牛客OJ:把矩形按顺时针输出
查看>>
牛客OJ:删除链表中重复的节点
查看>>
牛客OJ:字符串的枚举排列
查看>>