php sleep vs bash sleep

app*_*ief 2 php bash sleep codeigniter

我有一个PHP脚本,我需要每5秒运行一次(运行,等到它完成,等待5秒,再次运行)

我有两种方法可以做到这一点.要么在脚本中有一个infinte循环,其睡眠函数看起来像这样:

while (1)
{
   do_stuff();
   sleep 5;
}
Run Code Online (Sandbox Code Playgroud)

或者使用bash脚本运行脚本并等待5秒钟.看起来就像那样

while [ 1 ]; do
    php script.php &
    wait
    sleep 5
done
Run Code Online (Sandbox Code Playgroud)

我想知道最有效的方法是什么.

我正在运行的php脚本是一个codeigniter控制器,可以执行大量的数据库调用.

Mar*_*c B 8

如果你正在进行大量的数据库调用,那么在php中进行睡眠.这样你就不会支付php启动惩罚,连接到数据库的惩罚等......如果你在bash中睡觉就会招致.

当您执行bash循环时,您将在每次迭代时启动/运行/退出脚本,并且这种开销会在长时间运行的脚本上快速增加.

另一方面,至少每次都会从一个"干净"的环境开始,而不必担心脚本中的内存泄漏.您可能希望将两者结合起来,以便在PHP(例如)中循环/休眠100次,然后在Bash中退出并循环.