0

クライアント:

<?php

$gmclient= new GearmanClient();
$gmclient->addServer();
$gmclient->doBackground("reverse", "this is a test");

echo "done!\n";

ワーカー:

<?php

echo "Starting\n";

$gmworker= new GearmanWorker();
$gmworker->addServer();
$gmworker->addFunction("reverse", "reverse_fn");

while($gmworker->work()){}

function reverse_fn($job)
{

  $result= strrev($job->workload());

  $fp = fopen('test.txt', 'a');
  fwrite($fp, $result);
  fclose($fp);
  echo "Result: $result\n";
  return $result;
}

?>

問題は、クライアントを呼び出しても、実行するまで何も起こらないことです

php worker.php

次に、ファイルに書き込みますが、シェルはスタックしています

[user@server gearman]$ php worker.php 
Starting
Result: tset a si siht

doBackground を呼び出すと、worker.php ファイルがバックグラウンドで実行されるようにする方法はありますか? また、デーモンが再起動された場合に worker.php を実行する必要がないように、ギアマンドが再起動されたときにこれが機能することを確認したいと考えています。

4

1 に答える 1

0

私のコメントからの回答として投稿されました:

PHP スクリプトの管理については、supervisord ( supervisord.org ) を参照してください。スーパーバイザーがプロセス管理を行い、php スクリプトが停止した場合はバックグラウンドで再生成します。

于 2012-05-10T06:00:55.523 に答える