我希望运行PHP CLI *脚本,执行任务,休眠两秒钟,然后再次运行。目前,这看起来像这样:
#!/usr/bin/env php
<?php
require __DIR__ . '/config/app.php';
$w = new Worker;
if ($w->running) {
exit;
} elseif ($job = $w->next()) {
$w->run($job);
sleep(2);
exec(__FILE__);
exit;
} else {
exit;
}
但是,我发现新的运行在旧运行完成之前开始。我主要是一个Web开发人员,所以我不熟悉这个级别(我在家里处于更高的抽象层次),但我认为这就是所谓的叉形炸弹。我怎样才能安全地做到这一点?
我已阅读pnctl_exec()
的PHP手册,但我不确定我是否正确理解它。
*它以PHP身份完成,因此大多数实际功能都可以在一个库中,也可以从Web界面调用。
答案 0 :(得分:2)
你可以简单地在你的工人周围放一个循环并执行它,同时它还有一些工作要做。
#!/usr/bin/env php
<?php
require __DIR__ . '/config/app.php';
$w = new Worker;
if ($w->running) {
exit;
}
while ($job = $w->next()) {
$w->run($job);
sleep(2); // Not sure, if you really need this?
}