php sleep 与 bash sleep

标签 php bash codeigniter sleep

我有一个 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/

相关文章:

php - 如何从表中检索从第 n 行开始的所有行

linux - 添加用户

bash - Jenkins 内部 docker-compose 的环境变量

php - 我收到一条错误消息“ undefined offset : 1 in codeigniter”

php - Codeigniter 3 session 驱动程序。使用数据库还是文件更好?

php - 如何将对象包含的文件路径中的代码运行到对象外部的函数范围内?

php - 减小 ffmpeg 转换视频的文件大小

mysql - 将数据插入数据库时​​出现问题

php - 在 Oracle 和 PHP 中使用 Unicode

linux - 如何停止在 BASH 中写入日志文件?