2012-01-05 59 views
1

我爲朋友開發了一個應用程序,他最近更換了專用服務器以解決過載問題。無法連接PHP中的fsockopen(連接超時)

由於此遷移,網站的一部分不再有效:PHP中套接字上的連接。

在這一部分,我不得不etablish與其他服務器的連接,所以我意識到一個函數打開插座:

function openSocket($host, $port) { 
    $fp = fsockopen($host, $port, $errno, $errstr, 30); 

    if (!$fp) { 
     return 0; 
    } 

    fputs($fp, $envoi); 

    return $fp; 
} 

在代碼中,我用這個函數那樣:

$sock = openSocket($host, $port); 

while (!feof($sock)) { 
    echo fread($sock, 8192); 
} 

fclose($sock); 

有時候,我需要打開插座幾分鐘,因爲遷移,我的朋友有這個錯誤在他的日誌:

PHP的警告:的fsockopen():無法連接到...:80(連接 超時)在...,引用者:...

我搜索是否有PHP中的具體配置/ Apache,但我什麼也沒找到。

我試圖增加fsockopen或stream_set_timeout()函數的最後一個參數,但沒有任何工作。

感謝您的幫助

回答

1

兩臺電腦之間有可靠的連接嗎?

+0

這是與我無法控制的外部服務器的連接。 – skurty 2012-01-05 08:10:41

0

某些託管提供商和專用服務器設置會限制其防火牆設置中允許的傳出連接。這對防止不尋常的殭屍程序或利用腳本建立服務器連接(如果它受到攻擊)特別有用。檢查是否有任何出口/出站防火牆規則可能會阻止您。

其他原因 - 遠程服務器上的入口/入站防火牆規則拒絕您的連接嘗試或者機器之間的高度潛在連接。

+0

謝謝你的回答。我認爲我的朋友已經在服務器的同一時間更換了主機。我會和他和主持人見面,我會讓你知道的。 – skurty 2012-01-05 10:15:09

0

即使我面臨同樣的問題。
我正在爲我的客戶開發一個網站。
他希望我從專用時間服務器設置時間。
所以,我試圖用UDP建立到該服務器的連接。 嘗試了很多,但失敗了。很久以後,我發現有些港口已經關閉,需要建立連接。
檢出所需的端口,然後確認相應的端口已打開

相關問題