我有一个“生成网站”命令,它解析所有表格以将整个网站重新发布到固定的 html 页面中。这是一个繁重的过程,至少在我的本地机器上(CPU 上升)。在生产服务器上,到目前为止这似乎不是问题,但我想保留它的未来证明。因此,我正在考虑在繁重脚本的每个步骤之间使用 php sleep() 函数,以便服务器有时间在繁重的步骤之间“喘口气”。
这是个好主意还是没用?
如果您正在运行 php5,并且它在 CGI(而不是 mod_php)模式下使用,那么您可以考虑使用proc_nice
。
这可能允许“生成网站”命令使用尽可能多的 CPU,而没有其他人试图使用该站点。
我根本不会在生产服务器上这样做,我之前遵循的步骤:
租用低成本的 PHP 服务器 - 或获得适当的开发服务器设置来复制生产
所有动态文件都被复制到 DEV - 他们甚至不需要在生产中
运行 HTMLizer 脚本 - 不睡觉就烧掉它
验证输出,然后将其 RSYNC 到实时服务器 - 备份实时目录,以便您可以安全地回退
无论如何,自从 Caching / Memcaching 加快速度以来,我根本不必这样做 - 使用 Zend Framework 和 Zend Cache,你基本上有一个动态等效于你需要自动执行的操作。
我认为这是个好主意。睡眠意味着重复比较滴答声,直到某个时期出现。睡眠操作对 CPU 的开销应该更低。
这取决于您将调用它多少次以及调用多长时间。您需要在快速输出与低 CPU 使用率之间取得平衡。
简而言之:是的,它会有所帮助。
根据任务,我认为它不会对您有所帮助。
只有在您不断循环并等待用户输入或触发信号时,睡眠才会真正有用。
在这种情况下,为了尽快完成工作,您也可以省略 sleep 命令,从而减少任务时间并为其他进程更快地释放 CPU 时间。
上面的一些海报可能能够更好地帮助您进行代码优化。