服務器A使用fsockopen,fwrite和fgets從遠程服務器B收集信息。遠程服務器B創建mysql查詢並提供此信息。當服務器A第一次加載時,所有信息(來自遠程服務器B)出現在服務器A上 - 意味着連接正常工作。 但是,有時在頁面刷新時(在服務器A上),沒有顯示遠程服務器B的信息。爲什麼是這樣?當刷新頁面時,fsockopen並不總是執行mysql查詢
服務器A上的代碼非常簡單:
function test_http_request($path, $host, $test_request, $port=80){
$test_request_proc= test_encode($test_request);
//http request
$http_request = "POST $path HTTP/1.0\r\n";
$http_request .= "Host: $host\r\n";
$http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n";
$http_request .= "Content-Length: " . strlen($test_request_proc) . "\r\n";
$http_request .= "User-Agent: testConnection/PHP\r\n";
$http_request .= "\r\n";
$http_request .= $test_request_proc;
/////output
$test_resource = '';
//open socket
if(false == ($test_connect [email protected]('[remote server Bs IP ]', $port, $errno, $errstr, 10))){die('could not open test connection');}
//send http_request
fwrite($test_connect, $http_request);
//get response
while(!feof($test_connect))$test_resource .= fgets($test_connect, 1160);
//close socket
fclose($test_connect);
$test_resource = explode("\r\n\r\n", $test_resource, 2);
return $test_resource;
}
根據遠程服務器B的錯誤記錄了MySQL查詢沒有被執行(即進行供給信息到服務器A)(資源是布爾)。有時它們會被執行,有時它們不會被執行。這個問題不在查詢語言中,因爲它在查詢被請求並在遠程服務器B上執行時完美工作。只有當服務器A通過fsockopen()請求信息時,問題纔會出現。 備註:問題出在於遠程服務器B執行的mysql查詢,每次都會出現前手輸出的任何文本。 感謝您的時間
我認爲你需要張貼一些srv A和B的例子。 – ethrbunny 2011-12-28 15:51:28