PHP CLI脚本可以自行调用吗?

时间:2017-12-28 20:09:05

标签: php linux

我希望运行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界面调用。

1 个答案:

答案 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?
}