PHP让Queue保持在线的shell命令

7 篇文章 0 订阅

在开发的项目的时候是否有这样的顾虑,监听队列任务的命令掉线怎么办?进程死了怎么办?

找个办法看着他。如果他死了就再次启动他。

从另外一个项目哪里学习来的办法。

step1. 

        通过 linux的ps命令看看这个进程是否在运行,如果没有运行就启动他。如果运行就不管

step2.

        检查计划任务里是否有我们的计划任务,如果没有就创建一个,每分钟去检查一次。

#!/bin/bash

phppath="/usr/local/php/bin/php"
basepath=$(cd `dirname $0`; pwd)
chmod a+x "$basepath/think"
command="$basepath/think queue:listen"

result=$(ps -ef | grep "`echo $command`" |grep -v "grep")

if [ ! -n "$result" ]
then
  echo "Starting the process."
  time3=$(date "+%Y-%m-%d %H:%M:%S")
  echo $time3
  cd $basepath
  #/usr/local/php/bin/php
  str=$(nohup $phppath $command >/dev/q3 2>&1 &)
  echo -e "\033[32mOk.\033[0m"
else
  echo "The process has been started."
fi

result=$(crontab -l|grep -i "* * * * * $basepath/queue.sh"|grep -v grep)
if [ ! -n "$result" ]
then
  echo -e "\033[32mCreating queue crontab.\033[0m"
  echo "Export crontab data"
  crontab -l > createcrontemp
  echo "Add new crontab line"
  echo "* * * * * $basepath/queue.sh" >> createcrontemp
  echo "Import crontab data"
  crontab createcrontemp
  echo "Delete temp file"
  rm -f createcrontemp
  echo -e "\033[32mCreating queue crontab success.\033[0m"
else
  echo "The queue crontab has been add ."
fi

前半段是检查queue是否在执行,如果没有就启动 line 6: command = ....

后半段是检查有没有在计划任务中,如果没有就加一条进去。确保每分钟会执行一次该文件。

注意line 3: 由于该命令放到crontab后一直不执行,不得不加上php的路径。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值