首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP中使用cpulimit

在PHP中使用cpulimit
EN

Stack Overflow用户
提问于 2009-11-18 22:24:22
回答 2查看 1.4K关注 0票数 1

我有一个脚本,计划在客户的生产服务器上定期运行,以便从他们的FTP服务器导入一些数据。这需要按计划运行,即使在客户工作的白天也是如此。有时,该脚本会占用大量CPU,从而降低客户生产环境的速度。我想我可以使用cpulimit来控制这个进程,但是我似乎不能让它在PHP中正常运行。我有一个包含以下行的沙箱脚本:

代码语言:javascript
复制
$pid = getmypid();
exec("/usr/bin/cpulimit -p $pid -l 20 -z < /dev/null 2>&1 > /dev/null &");

当我获得pid并从命令行运行这个命令时,它工作得很好。然而,当我运行脚本时,我得到了[1]+ Stopped php web/sandbox/sandbox.php。我已经从PHP脚本中运行过很多次这样的后台任务。我能做错什么呢?

提前谢谢你,

~ JamesArmes

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-18 22:30:00

cpulimit做什么?这不是手头的任何Fedora安装中的命令...

当它积累了太多的CPU时间时,它看起来会暂停进程;使用nice如何呢?

票数 0
EN

Stack Overflow用户

发布于 2009-11-19 23:59:56

cpulimit通过重复发送进程SIGSTOP和SIGCONT信号来限制CPU使用。通过控制这些信号之间的时序,可以限制CPU使用率。

当您手动运行cpulimit时,您可能已经在后台运行PHP脚本。脚本实际上已经停止了,但是因为它是在后台运行的,所以您的shell会认为您并不关心它,并且不会报告它。

当您将对cpulimit的调用合并到脚本本身中时,脚本将在前台运行,并且您的shell会报告它。

您将看到,在这两种情况下,cpulimit实际上都在工作,唯一的区别是您的shell处理这种情况的方式不同。

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

https://stackoverflow.com/questions/1756346

复制
相关文章

相似问题

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