Gearman: отправка данных от фонового работника к клиенту - PullRequest
6 голосов
/ 02 ноября 2011

Можно ли отправить обратно данные от рабочего-механика, который работает в фоновом режиме (с PHP)?

Я знаю, что могу передать статус (числитель / знаменатель) клиенту, но мне нужно«вернуть» данные.

Исходная информация - мне нужно вызывать работников на разных серверах, и если они не отвечают, основной сценарий должен продолжаться.Поэтому я думаю, что я должен запустить рабочих в фоновом режиме.Но мне нужны некоторые данные из них.

ОБНОВЛЕНИЕ: Кажется, это невозможно.Я думаю, что мне нужно либо сохранить данные в общей базе данных, либо записать их с удаленного сервера на локальный сервер, либо прочитать их с удаленного сервера, либо сделать что-то вроде этого:

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

1 Ответ

2 голосов
/ 16 августа 2012

Я думаю, вы можете передать данные от работника к клиенту, используя следующую функцию

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

...