PHP让Queue保持在线的shell命令

7 篇文章 0 订阅
本文介绍了如何在Linux环境中监控队列任务的运行状态,并在任务掉线时自动重启。通过使用ps命令检查进程状态,结合crontab定时任务每分钟检查一次,确保队列任务始终保持运行。当队列任务未运行时,脚本将启动它;若crontab中未设置相应任务,则添加一条新的计划任务以保持监控。此方案确保了队列任务的稳定运行。
摘要由CSDN通过智能技术生成

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

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

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

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的路径。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值