クライアント:
<?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 を実行する必要がないように、ギアマンドが再起動されたときにこれが機能することを確認したいと考えています。