2013-02-14 17 views
8

我的開發服務器是Debian的擠壓,我跑的Gearman 1.1.5這是我從源代碼編譯與PHP的PECL擴展V1.1.1Gearman的給我GEARMAN_COULD_NOT_CONNECT,它絕對運行

沿着如果我運行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啓動它:

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

如果我把gearman_queue表TEST_DB然後重新啓動表重建的守護進程,所以它的MySQL連接是罰款,這顯然是開始。

我也可以telnet到本地主機上的4730,所以沒有防火牆問題。

最初,轉基因已經開始,因爲它是MySQL的前開始的問題,所以我編輯初始化腳本

### 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顯示只有一個進程running`

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 

我的想法

+0

我也嘗試了真正的舊包裝,最終最終刪除它們,手動構建GM 1.1.5,然後構建PECL擴展。 – Eno 2013-02-15 18:16:11

回答

15

我同樣的問題和最近的sol ved他們在一兩天的挫折後(難以排除故障,因爲有三個進程擔心:-)

它似乎(至少在我的情況下)GearmanClient :: addServer()和GearmanWorker的PHP文檔: :addServer()不正確。具體來說,文檔似乎暗示主機名和端口號是可選的,如果您不指定它們,它將使用localhost和端口4730作爲默認值。這從來沒有的作品 - 今天突然想到嘗試明確指定它們爲客戶端和工作者進程,一切都開始工作。

嘗試指定主機名和端口的所有值,看看它是否適用於您。

+1

順便說一句,我在PHP網站上的錯誤文檔中打開了一個錯誤。 – Eno 2013-02-15 18:14:54

+3

賓果!我不得不明確地調用addServer(「localhost」,4730);非常。 – 2013-02-17 15:06:55

+2

+1000經過數小時的沮喪,這是一個簡單的修復,使它對我一切工作(客戶端,服務器和本地macbook上的工作人員) – Asciiom 2013-02-18 16:26:03

2

在情況下,如果你使用了這樣的事情

$客戶 - > addServers( '127.0.0.1',4730);

$客戶機 - > addServers();

使用這樣的事情

$客戶 - > addServers( '127.0.0.1:4730');

PS - 我已經本地主機IP使用,這可以用實際的主機IP地址替換。

相關問題