PHPキューシステムを構築する必要があり、これを見つけました 素晴らしい記事 それを使ってPHPキューシステムを作成しました。セットアップと使用は非常に簡単です。http://squirrelshaterobots.com/programming/php/building-a-queue-server-in-php-part-1-understanding-the-project
以下は、Shell(PuTTYなど)から実行されるqueue.phpのコードです。
<?PHP
//. set this constant to false if we ever need to debug
//. the application in a terminal.
define('QUEUESERVER_FORK', true);
//////// fork into a background process ////////
if(QUEUESERVER_FORK){
$pid = pcntl_fork();
if($pid === -1) die('error: unable to fork.');
else if($pid) exit(0);
posix_setsid();
sleep(1);
ob_start();
}
$queue = array();
//////// setup our named pipe ////////
$pipefile = '/tmp/queueserver-input';
if(file_exists($pipefile))
if(!unlink($pipefile))
die('unable to remove stale file');
umask(0);
if(!posix_mkfifo($pipefile, 0666))
die('unable to create named pipe');
$pipe = fopen($pipefile,'r+');
if(!$pipe) die('unable to open the named pipe');
stream_set_blocking($pipe, false);
//////// process the queue ////////
while(1){
while($input = trim(fgets($pipe))){
stream_set_blocking($pipe, false);
$queue[] = $input;
}
$job = current($queue);
$jobkey = key($queue);
if($job){
echo 'processing job ', $job, PHP_EOL;
process($job);
next($queue);
unset($job, $queue[$jobkey]);
}else{
echo 'no jobs to do - waiting...', PHP_EOL;
stream_set_blocking($pipe, true);
}
if(QUEUESERVER_FORK) ob_clean();
}
?>
最も難しかったのは、pcntl関数をサーバー上で機能させることでした。
私の質問は、「サーバーを再起動する必要がある場合に、ジョブを自動的に開始するにはどうすればよいですか?」です。
私の質問は、「サーバーを再起動する必要がある場合に、ジョブを自動的に開始するにはどうすればよいですか?」です。
サーバーの起動時に開始されるもののリストに追加する。残念ながら、そのための手順は、オペレーティングシステムとOSのバージョンによって大きく異なります。おそらく、もう少しクロスプラットフォームのものを使用したいと思うでしょう。 supervisor で大いに幸運に恵まれました。これは、選択したOSのパッケージリポジトリにあると思われます。
そうは言っても、あなたは狂気のルートを進んでいます。あなたがしていることは、以前は素晴らしい人々によって行われたことがあります。 Gearman ワークキューシステムとそれに付随する PECL拡張 を確認してください。スーパーバイザーは、ギアマンの労働者を生かしておくのにも非常に便利です。