PHP CLI *スクリプトを実行して、タスクを実行し、2秒間スリープ状態にしてから、再度実行します。現在、これは次のようになります。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マニュアルを読みましたが、正しく理解しているとは確信していません。
*実際の機能のほとんどはまた、Webインターフェイスから呼び出すことができ、ライブラリにあることができるので、それは、PHPのように行われます。
* Wat?*の場合、スクリプト全体を再実行しないでください。*ループを入れてください*。あなたがこれを書いた方法は、何かが死ぬまで、プロセスは永久に蓄積され、決して終わらないでしょう。おそらくあなたのサーバー。 @サミーチェ。 – Sammitch
私はそれほど疑わしい:それは私が尋ねていたものです。 (そして、*ワット*応答も期待していた;私が言ったように、私はここで私の奥行きから外れていることを知っている)確かに、スクリプト内の*ループ*を使うことは、 – TRiG