2015-10-30 30 views
0

使用命令“php client.php”,在http://gearman.org/getting-started/中的client.php示例可以成功地与worker.php通信,但是在webbrowser中使用未能传递给worker.php,有谁知道为什么以及如何配置gearmand或work周围?Gearman客户端在网页失败,但在命令行界面成功?

操作系统:CentOS 6.7 Gearmand版本:1.1.8。 Gearmand开始使用 “gearmand -l stderr的--verbose DEBUG” 当客户端进行通信使用 “的Gearman -f工作</somedir/somefile” 命令时,信息返回所预测,终端显示的信息作为跟随,

DEBUG 2015 -10-30 11:56:01.371309 [1]收到GEARMAN_GRAB_JOB_ALL :: 58ca:3fa1:77f:0%4234047483:2705334353 - > libgearman-server/thread.cc:310 DEBUG 2015-10-30 11:56:01.371317 [1] :: 58ca:3fa1:77f:0%4234047483:41704观看POLLIN - > libgearman-server/gearmand_thread.cc:151 DEBUG 2015-10-30 11:56:01.371334 [proc] :: 58ca:3fa1: 77f:0%4234047483:41704 packet命令GEARMAN_CAN_DO - > libgearman-server/server.cc:111 DEBUG 2015-10-30 11:56:01.371344 [proc]注册fu nction:work - > libgearman-server/server.cc:522 DEBUG 2015-10-30 11:56:01.371352 [proc] :: 58ca:3fa1:77f:0%4234047483:41704 packet命令GEARMAN_GRAB_JOB_ALL - > libgearman-server /server.cc:111 DEBUG二○一五年十月三十〇日11:56:01.371371 [1]接收的RUN唤醒事件 - > libgearman - 服务器/ gearmand_thread.cc:610

但是当网页浏览器导航到 “http://localhost/client.php”,没有信息显示在网络浏览器中,终端也不显示任何信息

nginx的error.log中的信息如下: 2015/10/30 04:59:10 [error] 2756#0:* 2在stderr中发送FastCGI:“PHP消息:PHP警告:GearmanClient :: doNormal ():send_packet(GEARMAN_COULD_NOT_CONNECT)在读取来自上游的响应标头时,发送服务器选项数据包失败 - > libgearman/connection.cc:485在/usr/share/nginx/html/client.php第4行“客户端:127.0 .0.1,server:localhost,请求:“GET /client.php HTTP/1.1”,上游:“fastcgi://127.0.0.1:9000”,主机:“localhost”

[root @ localhost html]# cat client.php

<?php 
$client= new GearmanClient(); 
$client->addServer("127.0.0.1",4730); 
print $client->doNormal("reverse", "Hello World!"); 
?> 

[根@本地HTML]#猫worker.php

<?php 
$worker= new GearmanWorker(); 
$worker->addServer("127.0.0.1",4730); 
$worker->addFunction("reverse", "my_reverse_function"); 
while ($worker->work()); 

function my_reverse_function($job) 
{ 
    return strrev($job->workload()); 
} 
?> 

也许问题是,网页对套接字操作限制或许可?

我认为使用--http-port选项的配置可能现在还不成熟和稳定,所以我最喜欢的解决方案是,php网页作为客户端可以直接将作业提交给Gearmand,由C++编写的工作程序处理。而且C++工作程序应该可以在没有调用的情况下提供很多请求并运行并按照请求退出以节省时间。

该解决方案是否可能。

请帮帮我。

非常感谢!

回答

相关问题