【问题标题】:Gearman: Sending data from a background worker to the clientGearman:从后台工作人员向客户端发送数据
【发布时间】:2011-11-02 14:58:37
【问题描述】:

是否可以从后台运行的 Gearman worker 发回数据(使用 PHP)?

我知道我可以将状态(分子/分母)传递给客户端,但我需要“返回”数据。

背景是我需要调用不同服务器上的工作人员,如果他们没有响应,主脚本应该继续。所以我认为我必须在后台运行工人。但我需要他们的一些数据。

更新: 这似乎是不可能的。我想我要么将数据存储在共享数据库中,要么将数据从远程服务器写入本地服务器,或者从远程服务器读取数据,或者进行如下操作:

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

【问题讨论】:

    标签: php gearman


    【解决方案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

    【讨论】:

    • 是的,但是如果worker是用GearmanClient::doBackground()启动的,你将无法获得这些数据,这就是问题的重点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 2014-04-27
    • 2015-11-12
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    相关资源
    最近更新 更多