Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Gearman: Sending data from a background worker to the client

Tags:

php

gearman

Is it possible to send back data from a gearman worker that runs in the background (with PHP)?

I know that I can pass a status (numerator/denominator) to the client but I need to "return" data.

The background is that I need to call workers on different servers and if they don't respond, the main script should continue. So I think I have to run the workers in the background. But I need some data from them.

UPDATE: It seems not to be possible. I think I have either to store the data in a shared database or to write it from the remote server to the local server or to read it from the remote server or to make something like this:

shell_exec('gearman -f getdata-192-168-200-1 > /my/path/ 2>&1 & echo $!');
like image 333
stofl Avatar asked Nov 02 '11 14:11

stofl


1 Answers

I think you can pass the data from the worker to client using the following function

GearmanJob::sendData($result);

By giving your data in $result variable and also you can handle this data in the client by using the function

GearmanClient::setDataCallback("task_data");

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

You can get bit more information

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

like image 181
rockingstar Avatar answered Sep 22 '22 11:09

rockingstar