首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php睡眠与bash睡眠

php睡眠与bash睡眠
EN

Stack Overflow用户
提问于 2012-03-23 00:26:37
回答 3查看 1.5K关注 0票数 2

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

或者在脚本中有一个无限循环,其中包含一个如下所示的睡眠函数:

代码语言:javascript
复制
while (1)
{
   do_stuff();
   sleep 5;
}

或者让bash脚本运行该脚本并等待5秒。它看起来会是这样的

代码语言:javascript
复制
while [ 1 ]; do
    php script.php &
    wait
    sleep 5
done

我想知道做这件事最有效的方法是什么。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-23 00:28:54

如果你正在做大量的DB调用,那么在php中进行睡眠。这样你就不会为php启动带来的损失,连接到数据库的损失,等等……如果你在狂欢中睡觉的话就会发生这种情况。

当您执行bash循环时,您将在每次迭代中启动/运行/退出脚本,对于长时间运行的脚本来说,这种开销很快就会增加。

另一方面,至少你每次都会有一个“干净”的环境,并且不必担心你的脚本中的内存泄漏。您可能希望将两者结合起来,以便在PHP中循环/睡眠100次(比如),然后在Bash中退出并循环。

票数 8
EN

Stack Overflow用户

发布于 2012-03-23 00:29:49

通常,所有PHP脚本都有超时--除非您是从CLI运行--所以第一种方法将工作30到60秒(取决于您的服务器配置),然后被强制终止。

我倾向于建议使用命令行选项,或者甚至使用cron命令(这取决于您希望代码运行的频率)来执行它。

票数 1
EN

Stack Overflow用户

发布于 2012-03-23 00:34:29

这可能取决于系统还在做什么。我认为BASH解决方案可以由系统更好地处理,以便为其他应用程序释放资源。

数据库调用的数量似乎并不那么重要,因为无论采用哪种方式,您都需要执行这些操作。从BASH运行脚本的成本是构建和剥离CodeIgniter框架所需的时间。但CodeIgniter已经被设计为在普通的web应用程序中做到这一点,并且执行得足够快。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9826487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档