Gearman: отправка данных от фонового работника к клиенту
Можно ли отправить обратно данные от работника gearman, который работает в фоновом режиме (с PHP)?
Я знаю, что могу передать статус (числитель / знаменатель) клиенту, но мне нужно "вернуть" данные.
Фоном является то, что мне нужно вызывать работников на разных серверах, и если они не отвечают, основной сценарий должен продолжаться. Поэтому я думаю, что я должен запустить рабочих в фоновом режиме. Но мне нужны некоторые данные от них.
ОБНОВЛЕНИЕ: Это кажется невозможным. Я думаю, что мне нужно либо сохранить данные в общей базе данных, либо записать их с удаленного сервера на локальный сервер, либо прочитать их с удаленного сервера, либо сделать что-то вроде этого:
shell_exec('gearman -f getdata-192-168-200-1 > /my/path/ 2>&1 & echo $!');
1 ответ
Я думаю, что вы можете передать данные от работника к клиенту, используя следующую функцию
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