我的一个 php 脚本(使用 php-fpm 7.0 和 nginx 设置)需要高 CPU 使用率才能完成(合法)。我希望它花更多时间完成,但让 CPU 可用于其他请求。当前,该脚本运行时服务器没有响应。
我可以使用 PHP sleep() 创建一些延迟,但是否有更合适的负载平衡方法?
答案1
你可能正在寻找好的Linux/UNIX 中的命令。基本上,它所做的就是运行一个具有修改后的调度优先级的命令。sleep()
如果运行任务本身很繁重,PHP 可能无济于事 - 无需重复。
答案2
您可以使用sleep (int $seconds)
暂停脚本执行。另外还有微秒版本:usleep (int $micro_seconds)
。
使用 sleep 或 usleep 将停止您的脚本,使 CPU 可用于其他进程。
另外还有一个名为的实用程序nice
。此实用程序控制 CPU 的进程优先级。您可以使用nice -n 19 php script.php
它将脚本优先级降低到最低值。最佳优先级是-20
(最大优先级)到+19
(最小优先级)。
我认为对您来说最好的解决方案是sleep
或者usleep
因为这是一个非常简单的解决方案并且不需要对 Web 服务器和应用程序服务器进行任何修改。