我有一个 php 脚本,我需要每 5 秒运行一次(运行,等待它完成,等待 5 秒,再次运行)
我有两种方法。要么在脚本中有一个带有 sleep 功能的无限循环,看起来像这样:
while (1)
{
do_stuff();
sleep 5;
}
或者拥有将运行脚本并等待 5 秒的 bash 脚本。看起来像那样
while [ 1 ]; do
php script.php &
wait
sleep 5
done
我想知道最有效的方法是什么。
我正在运行的 php 脚本是一个执行大量数据库调用的 codeigniter Controller ..
最佳答案
如果您正在进行大量的数据库调用,那么请在 php.ini 中进行休眠。这样你就不会支付 php 启动惩罚、连接到数据库的惩罚等......如果你在 bash 中 sleep ,就会发生这些。
当您执行 bash 循环时,您将在每次迭代中开始/运行/退出您的脚本,并且这种开销会在长时间运行的脚本中迅速增加。
另一方面,至少您每次都会从一个“干净”的环境开始,而不必担心脚本中的内存泄漏。您可能希望将两者结合起来,这样您就可以在 PHP 中循环/休眠(比如说)100 次,然后退出并在 Bash 中循环。
关于php sleep 与 bash sleep ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9826487/