2014-03-07 123 views
2

我寫了一個函數來檢查rabbitmq是否在運行。「Socket error:could not connect to host」exception in php-amqp

function getBrokerStatus() 
{ 
    log_message("info", "Checking if broker is running...."); 
    try { 
     $amqpConnection = new AMQPConnection(); 
     $amqpConnection->setLogin("guest"); 
     $amqpConnection->setPassword("guest"); 
     $amqpConnection->setVhost("/"); 
     $amqpConnection->connect(); 
    } catch (Exception $e) { 
     log_message("info", "Exception: " . $e->getMessage()); 
     return false; 
    } 

    if (!$amqpConnection->isConnected()) { 
     log_message("info", "Cannot connect to the broker! It might not be running"); 
     return false; 
    } 
    $amqpConnection->disconnect(); 
    return true; 
} 

我的代碼捕獲這個異常。我看到下面的日誌 -

Exception: Socket error: could not connect to host. 

但我的RabbitMQ服務器在運行,那麼爲什麼我會收到這個異常?我正在使用rabbitmq-server的v3.1.1

+0

由於您的代碼沒有聲明代理的主機或狀態檢查器試圖建立連接的主機,所以很難判斷。 – marekful

+0

如果有幫助,當我打印'新AMQPConnection()'比如我得到 - 'AMQPConnection對象 ( [登錄] => guest虛擬機 [密碼] => guest虛擬機 [主持人] =>本地主機 [虛擬主機] =>/ [port] => 5672 [read_timeout] => 0 [write_timeout] => 0 ) ' – Hussain

+0

這很奇怪。顯然,連接嘗試到同一個主機:端口應該導致相同。我最好的猜測是肯定有一些區別。這並不是什麼好說的,但我就是這麼想的。找到它。 – marekful

回答

0

如果你不能在你的機器上ping你的本地主機,它一定是你沒有設置你的主機文件。 在/ etc/hosts中編輯它

相關問題