我有一个我想要永远运行的PHP脚本;从启动服务器到关机。
PHP脚本
<?php
require_once("connection.php"); // I am connecting to MySQL with PDO
while(true) {
//some of my code here
....
....
//code ended
sleep(5);
}
?>
我的/etc/init/myscript.conf文件
description "Endless PHP loop"
start on startup
stop on shutdown
respawn
chdir /var/www/html/
exec php -f script.php
我也试过
script
exec php -f script.php
end script
当我运行时:从终端脚本启动myscript运行没有任何问题,但如果服务器重启,则myscript不会再运行。有时候脚本也会停止运行(我不知道为什么)并且不会再开始运行。
我谷歌搜索了两天,我没有找到解决方案。也许我不知道该照顾什么。
是不是因为apache,mysql或php启动脚本失败?启动后30秒可以选择延迟脚本吗?
答案 0 :(得分:1)
尝试将您的upstart脚本更改为:
description "Endless PHP loop"
start on startup
stop on shutdown
respawn
script
sleep 30
exec php -f /var/www/html/script.php
end script
如果您想使用cron,则需要从PHP中删除无限循环并添加这些cron条目:
* * * * * /usr/bin/php -f /var/www/html/script.php &> /dev/null
* * * * * (sleep 5;/usr/bin/php -f /var/www/html/script.php &> /dev/null)
* * * * * (sleep 10;/usr/bin/php -f /var/www/html/script.php &> /dev/null)
* * * * * (sleep 15;/usr/bin/php -f /var/www/html/script.php &> /dev/null)
* * * * * (sleep 20;/usr/bin/php -f /var/www/html/script.php &> /dev/null)
* * * * * (sleep 25;/usr/bin/php -f /var/www/html/script.php &> /dev/null)
* * * * * (sleep 30;/usr/bin/php -f /var/www/html/script.php &> /dev/null)
* * * * * (sleep 35;/usr/bin/php -f /var/www/html/script.php &> /dev/null)
* * * * * (sleep 40;/usr/bin/php -f /var/www/html/script.php &> /dev/null)
* * * * * (sleep 45;/usr/bin/php -f /var/www/html/script.php &> /dev/null)
* * * * * (sleep 50;/usr/bin/php -f /var/www/html/script.php &> /dev/null)
* * * * * (sleep 55;/usr/bin/php -f /var/www/html/script.php &> /dev/null)
答案 1 :(得分:-1)
这样做是个坏主意。
PHP旨在根据请求运行,而不是无休止的。也许它可以做到,但是谁知道你会介绍什么样的记忆呢?
我强烈建议你研究一下cronjobs。
只需crontab你的代码并每隔5秒运行一次。
以下是每分钟运行的示例。我不认为你可以使用cron降低到5秒。
* * * * * cd /home/yourdir/public_html/admin/ && php -q /home/yourdir/public_html/admin/updatedb.php
在这里查看另一种方法: Running a cron every 30 seconds