齿轮工节点未收到输入

  • 本文关键字:节点 php gearman
  • 更新时间 :
  • 英文 :


机器1 -客户端使用PHP api

$client = new GearmanClient();
$client->addServer(..);
$client->doBackground('demotask', 'hello world');

机器2 -工人 - 使用PHP api,直接在bash中:
gearman -w -f demotask -- php -f taskexecutor.php

taskexecutor正在运行,但是$argv不包含hello world

注:对PHP的API和第二台机器上的永久while循环不感兴趣。我想gearman启动我的脚本时,它需要

我真的不推荐这种实现。如果你的php脚本出了什么问题,你将无法重新提交作业,或者与gearman通信。

无论如何,问题是当gearman客户端抓取作业时,作业工作负载被传递给php进程的STDIN。这意味着$argv是总是为空。您传入的参数可以像这样从STDIN中读取;

$params = fgets(STDIN);

我建议将你的参数作为JSON字符串传递,这样你就可以使用简单的函数,如json_encodejson_decode,而不必担心太多的结构或编码等

相关内容

  • 没有找到相关文章

最新更新