gearman给了我GEARMAN_COULD_NOT_CONNECT,它肯定在运行

Dar*_*ale 8 php debian gearman

我的开发服务器是Debian Squeeze,我正在运行Gearman 1.1.5,我是从源代码编译的,带有php pecl扩展v1.1.1

如果我运行reverse_client.php脚本,我会收到GEARMAN_COULD_NOT_CONNECT错误.

PHP Warning: GearmanClient::do(): send_packet(GEARMAN_COULD_NOT_CONNECT) Failed to send server-options packet -> libgearman/connection.cc:430 in /home/bealers/build/gearman-1.1.1/examples/reverse_client.php on line 26

关于这一点,这里有一些类似的帖子,他们都指出通用汽车没有运行.

肯定在运行.

我是用这些参数开始的:

PARAMS="--queue-type=MySQL --mysql-db=test_db --mysql-user=gearman --mysql-password=gearman"

如果我删除了test_db中的gearman_queue表,那么重新启动守护进程就会重新创建表,所以它的mysql连接很好,而且它显然正在启动.

我也可以在localhost上telnet到4730,所以没有防火墙问题.

最初GM起步有问题因为它是在mysql之前启动的,所以我编辑了init脚本

### BEGIN INIT INFO
# Provides:          gearman-job-server
# Required-Start:    $network $remote_fs $syslog mysql
Run Code Online (Sandbox Code Playgroud)

update-rd.c gearman-job-server defaults设置它开始后,它现在开始正常启动.

我能想到的唯一另一件事是,我最初是通过apt安装的,但是版本已经过时了,所以我将其删除并从源代码编译./ usr/sbin/gearmand不再存在,唯一的版本是/ usr/local/sbin/gearmand

ps ax | grep gearman 仅显示一个进程正在运行

Netstat只显示一个正在运行的进程

tcp 0 0 *:4730 *:* LISTEN 2325/gearmand

PECL lib似乎很好:

php -i | grep gearman

/etc/php5/cli/conf.d/gearman.ini,
gearman
gearman support => enabled
libgearman version => 1.1.5
Run Code Online (Sandbox Code Playgroud)

我没有想法

Eno*_*Eno 15

我遇到了同样的问题,最近在经历了几天的挫折后解决了这些问题(很难排除故障,因为有三个过程需要担心:-)

看来(至少在我的情况下)GearmanClient :: addServer()和GearmanWorker :: addServer()的PHP文档是不正确的.具体来说,文档似乎暗示主机名和端口号是可选的,如果您不指定它们,它将使用localhost和端口4730作为默认值.这永远不会奏效 - 我今天突然想到尝试为客户端和工作进程明确指定它们,一切都开始工作了.

尝试指定主机名和端口的所有值,看看这是否适合您.

  • 答对了!我不得不显式调用addServer("localhost",4730); 很多. (3认同)
  • +1000经过几个小时的挫折,这是一个简单的解决方案,使它对我有用(客户端,服务器和macbook本地工作者) (2认同)