Linux下PHP程序常驻后台运行

Linux下PHP程序如何常驻内存中在后台运行?

该示例是将一个PHP脚本常驻后台执行。

新建一个shell脚本,名为script.sh

#!/bin/bash
. /etc/profile
ps -fe | grep "php mycron.php" | grep -v grep
if [ $? -ne 0 ]
then
echo "not running,start process....."
cd /var/www/html/default
php mycron.php > /dev/null 2>&1 &
else
echo "process is already running....."
fi

同时在定时任务中增加

* * * * * bash /path/to/script.sh

注意点:

  1. nohup是为了在用户退出时进程仍能运行,即进程不会被hup挂起。
  2. cron中的任务默认是nohup执行的,所以无需nohup,但是由于cron中的任务不是在终端中运行,也无关用户状态,所以如果要实现进程常驻后台运行,需要在脚本的开头加上 . .profile,即自己的配置文件,如果没有该文件,可直接. /etc/profile
  3. &还是要加上的,以使进程在后台运行。
  4. > /dev/null 2>&1表示将正常输出输出到空设备,将错误输出输出到同一文件。也可重定向到另一文件,便于日后查后,>表示覆盖输出,每次重启时都会覆盖,也可以使用>>追加。

2 thoughts on “Linux下PHP程序常驻后台运行”

Leave a Comment

豫ICP备19001387号-1