會發生什麼是我有一個PHP腳本,它向網站提出了很多請求,我的腳本在我的服務器上。然而,問題如下:請求超時與php + cURL
<?php
$ch = curl_init();
$contador = 0;
$ran = explode("\n", file_get_contents('nombres.txt'));
$randomElement = $ran[array_rand($ran, 1)];
if ($file = fopen("correos.txt", "r")) {
while(!feof($file)) {
$line = fgets($file);
$var_post_data = 'site_id=1&email='.$line.'&name='.$randomElement.'id=39494393';
curl_setopt($ch, CURLOPT_URL,"site");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$var_post_data); //Post Fields
//curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$headers = [
'Cookie: ws_visit_id=2_170927230320231_5878; has_track_visit=true; _uetsid=_uet0639d46c',
'DNT: 1',
'Connection: keep-alive',
'Accept: application/json, text/javascript, */*; q=0.01',
'Accept-Language: en-US,en;q=0.5',
'Cache-Control: no-cache',
'Content-Type: application/x-www-form-urlencoded; charset=UTF-8',
'Host: site',
'Referer: site',
'User-Agent: ' . $randomElement,
'X-Requested-With: XMLHttpRequest'
];
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
echo curl_errno($ch);
echo curl_error($ch);
$server_output = curl_exec ($ch);
echo $server_output ;
echo $contador;
$fp = fopen('data.txt', 'a');
fwrite($fp, $server_output);
$stringData = "-------------" . "\n";
fwrite($fp, $stringData);
// sleep for 240 sec
#sleep(240); // sleep for 240 sec
#sleep(240); // sleep for 240 sec
#sleep(240); // sleep for 240 sec
if(curl_errno($ch) == 26) {
sleep(30);
}
else {
echo 'Not errors';
continue;
}
}
fclose($file);
}
curl_close ($ch);
?>
我還澄清說,我已經配置我的服務器上「的max_execution_time」功能,並將其設置爲「0」。如果你能幫助我,我希望腳本能夠做到這一點,如果遠程服務器發出錯誤,讓我的腳本執行sleep(),我將不勝感激。我已經嘗試了所有方法,但這對我不起作用。
謝謝!
'$ line = fgets($ file);'每次迭代都會覆蓋此var,實際上只包含最後一行?否則,我不會發現任何與您的腳本不同的地方,從客戶的角度來看會導致超時錯誤,您是否控制了您發佈的服務器? – Scuzzy
我如何解決這個覆蓋問題?所以我試着回到這裏...而不是,我沒有控制遠程服務器 – Zenabria
@Scuzzy謝謝你.. – Zenabria