我的开发服务器是 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 上远程登录到 4730,所以没有防火墙问题。
最初GM启动有问题,因为它是在mysql之前启动的,所以我编辑了init脚本
### BEGIN INIT INFO
# Provides: gearman-job-server
# Required-Start: $network $remote_fs $syslog mysql
并将其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 库似乎很好:
php -i | grep gearman
/etc/php5/cli/conf.d/gearman.ini,
gearman
gearman support => enabled
libgearman version => 1.1.5
我没主意了