2011-07-12 26 views
1

我正在使用UDP創建一個連接到本地網絡上的Windows程序的網站。檢查PHP UDP fread是否收到回覆/設置超時

我遇到的問題是,當沒有對fread的回覆時,代碼在執行時間達到30秒時發生致命錯誤。

由於UDP不檢查它是否有連接,所以似乎沒有辦法告訴發生了什麼事情或者發現三十秒的致命錯誤。

這是我目前的代碼。

$fp = fsockopen("udp://1.10.100.28", 24, $errno, $errstr,3); 

    if (!$fp) { 
     echo "ERROR: $errno - $errstr<br />\n"; 
    } else { 
    $value = $_POST["sendvalue"]; 
    $out = "setwarpterm 1 1 x ".$value."\r"; 

    $write = fwrite($fp, $out); 

    if($_POST["read"] == "yes"){ 
     echo fread($fp, 3000); 
    } 

     fclose($fp); 
    } 
+0

你究竟想做什麼? – Artefacto

+0

該腳本已可以連接到程序時正常工作。它只是發送一個小字符串到程序並獲得一個處理過的字符串。 – Max

+0

問題在於連接失敗。 – Max

回答

1

超時不起作用,因爲它不是直接超過我的fread。

stream_set_timeout($fp, 2); 
echo fread($fp, 3500); 

這確實奏效,並使fread返回一個空字符串。