6

バックグラウンドで (PHP を使用して) 実行されているギアマン ワーカーからデータを送り返すことは可能ですか?

ステータス (分子/分母) をクライアントに渡すことができることはわかっていますが、データを「返す」必要があります。

背景は、別のサーバーでワーカーを呼び出す必要があり、ワーカーが応答しない場合はメイン スクリプトを続行する必要があるということです。そのため、ワーカーをバックグラウンドで実行する必要があると思います。しかし、私は彼らからのデータが必要です。

更新: できないようです。データを共有データベースに保存するか、リモートサーバーからローカルサーバーに書き込むか、リモートサーバーから読み取るか、次のようなものを作成する必要があると思います:

shell_exec('gearman -f getdata-192-168-200-1 > /my/path/ 2>&1 & echo $!');
4

1 に答える 1

2

次の関数を使用して、ワーカーからクライアントにデータを渡すことができると思います

GearmanJob::sendData($result);

データを $result 変数に与えることで、関数を使用してクライアントでこのデータを処理することもできます

GearmanClient::setDataCallback("task_data");

function task_data($task)
{
    echo "DATA: " . $task->data() . "\n";
}

もう少し情報を得ることができます

http://www.php.net/manual/en/gearmanclient.setdatacallback.php

于 2012-08-16T09:42:14.450 に答える