PHP Gearmanclient :: Dobackground只是悬挂



mehod dobackground及其后代有时会悬挂。我不知道为什么。

php 5.4

Gearman Server版本1.1.18

Gearman PHP Lib版本1.1.2

在某个时间点,用户单击按钮,任务(超过700(转到Gearman。Dobackground随机冻结,它可以在完成20个任务后悬挂,或者可以在200-300(也许是500个任务(后悬挂。

我在Gearman/PHP日志中看不到错误,也没有在直接链接中看到(当我直接开始调试时(

当我尝试调试时,我只是将任务数量最小化为50,然后直接向浏览器发出请求。如果一切顺利,浏览器的圆圈(加载动作(消失了,我会看到我的var_dumps。但是,如果在某些任务dobackground没有返回控件,浏览器请求将转到无限循环,等待服务器响应

我的代码很简单。我收集数据,放入数组,然后一一发送到队列

for($i = 0; $i < count($itemsToProcess); $i++) {var_dump($i);
    $method = array_shift($itemsToProcess[$i]['methodsAfter']);
    Yii::app()->gearman->client()->doBackground($method, json_encode($itemsToProcess[$i]));
}

作为其他信息,我有另一台服务器

php 7.1

安装,

服务器版本为1.1.12

使用yum

自动安装了用于PHP的Libgearman

。似乎有同样的问题,但是!!!看起来很少。

当然,如果您发出计数和B计数,这是至关重要且非常关键的问题。

P.S:不同环境的原因是我们仍然不能迁移到PHP7。php5.4是prod,php7是dev

它不是齿轮,也不是php扩展问题

https://github.com/gearman/gearmand/issues/241

客户端初始化应发生在循环中。我面临同样的问题。当您在循环中启动时,内存会筋疲力尽。希望这对您有帮助!

https://stackoverflow.com/a/54442341/4932684

相关内容

  • 没有找到相关文章

最新更新