【问题标题】:Gearman with PHP/Net_Gearman, workers that perform jobs that are invoked from other workers become unresponsive使用 PHP/Net_Gearman 的 Gearman,执行从其他工作人员调用的作业的工作人员变得无响应
【发布时间】:2011-11-12 21:17:37
【问题描述】:

我正在使用 gearman 在多个工作服务器之间分配长时间运行的任务。对于我的一个工作任务,我尝试调用另一个后台作业。后台作业由另一个工作人员成功执行...但该工作进程不响应之后添加到 gearman 的任何新工作。

有人知道会发生什么吗?这是gearman的功能吗?

编辑:

另外,如果我重新启动我的工人,他们会重复其他工人排队的任务。 Gearman 似乎没有意识到工作已经完成。

编辑 2:

试过了:

var_dump($this->conn);
var_dump($this->handle);

从我的其他工作人员调用的工作人员函数中。这是我收到的输出:

NULL
string(0) ""

编辑 3:

好吧,我想出了一个解决这个问题的 hackey 方法。下面是相关的sn-p代码。我正在为我的项目使用 codeigniter,并且我的 gearman 服务器存储为一个数组。如果连接为空,我只需在我的工作代码中测试,如果是,则使用随机的 gearman 服务器重新建立它。我敢肯定这很糟糕,所以如果有人有一些改进的见解,我将非常感激。

class Net_Gearman_Job_notification_vc_friends_new_user extends Net_Gearman_Job_Common{

private $CI;

function __construct(){
    $this->CI =& get_instance();

    if(!$this->conn){

        $gearman = $this->CI->config->item('gearman');
        $servers = $gearman['servers'];
        $key = array_rand($servers);            
        $this->conn = Net_Gearman_Connection::connect($servers[$key]);

    }
}

【问题讨论】:

    标签: php gearman worker


    【解决方案1】:

    想通了!实际上很愚蠢,忘记打电话了 父::__construct();在我的构造函数中...哎呀。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-05
      • 1970-01-01
      • 2013-11-05
      • 2015-06-14
      • 2021-08-15
      • 2018-11-05
      • 2021-08-22
      • 1970-01-01
      相关资源
      最近更新 更多