我在 bash 脚本中创建了一个 while 循环来运行几个 PHP 命令。我之所以创建 while 循环是因为我无法使用 cronjobs(我不想在另一个脚本仍在运行时创建新的 bash 脚本实例)。
以前,我使用屏幕运行命令,但似乎最终我的资源都被这个过程耗尽了。
所以我的问题是;运行 bash 脚本的更好替代方法是什么?
脚本类似于:
#!/bin/bash
echo "Starting daemon.."
while true; do
echo "Running runJobs.."
cd /var/www/wiki && nice -n 10 /usr/bin/php maintainAll.php maintainwiki runJobs >> /var/log/runJobs.log
echo "Sleeping 60 seconds.."
sleep 60
done
答案1
一个很好的选择是让 PHP 进行循环,而不是对 PHP 进行循环调用。
真的,一旦你有了这个,你所需要做的就是让 Ubuntu 以某种形式保留脚本的副本。这可以通过一个非常简单的 Upstart 脚本来实现。你可以将其放入/etc/init/myphpscript.conf
:
description "My PHP script"
start on startup
stop on shutdown
respawn
exec sudo -u www-data -- php -f /path/to/script.php
请注意,一旦 PHP 退出,Upstart 就会抽出另一个副本,所以如果您不在 PHP 中放置睡眠状态,您将陷入非常快速、可能非常昂贵的(我不知道您的代码做了什么)循环。