2015-09-02 24 views
0

我正在嘗試學習的類和函數,我正在做一個fsockopen來檢查服務器是否在線。當我直接從頁面執行操作時(不是調用函數),一切都很好。我試圖將錯誤報告僅用於特定函數。 編輯:我也嘗試將error_reporting直接添加到函數,也沒有工作。error_reporting(0);在一個函數

class server 
{ 

public function __construct() { 
    global $servhost; 
    global $gameport; 
    global $loginport; 
    $this->fp = fsockopen($servhost, $gameport, $errno, $errstr, 5); 
    $this->er = error_reporting(0); 

           } 

function servstatus() 
{ 
    // tried this echo $this->er; 
    // tried this $this->er; 
    // tried this error_reporting(0); 

    if ($this->fp) { 

     echo "Server Online"; 

     fclose($this->fp); 

     } else { 

      echo "Server Offline"; 

      fclose($this->fp); 

       } 

        } 
} 
+0

下來的投票者可以解釋這篇文章如何不顯示研究工作,不清楚或沒有用嗎? – spencdev

回答

2

您可以使用@抑制誤差的函數調用或表達式報告。

例如$status = @servstatus();$this->fp = @fsockopen($servhost, $gameport, $errno, $errstr, 5);

我建議你試圖找到的處理錯誤或警告,而不是僅僅忽略它雖然是更好的辦法。抑制只能在某些情況下使用,並且在調試時會引起問題,因此應謹慎使用。

+0

什麼是更好的方法?你能爲我指出正確的方向嗎?我認爲只要fsockopen無法連接,錯誤就會顯示出來。 – spencdev

+0

您收到了什麼錯誤?根據手冊,如果主機名不正確,應該只會發出警告。 – Devon

+0

這只是一個警告,但@會關閉它。警告是 '(因爲目標機器主動拒絕它,所以不能建立連接)'但是如果服務器在線,它就可以工作。 – spencdev

相關問題