Was passiert ist, dass ich ein Skript in PHP habe, wo es viele Anfragen an eine Website macht und mein Skript auf meinem Server ist. Allerdings ist das Problem wie folgt:Anfrage Timeout mit 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);
?>
Ich stellte auch klar, dass ich bereits die „max_execution_time“ -Funktion auf meinem Server konfiguriert und setzen Sie ihn auf „0“. Ich würde mich freuen, wenn Sie mir helfen könnten, ich möchte, dass das Skript es tut, und wenn der Remote-Server diesen Fehler gibt, lassen Sie mein Skript einen sleep() ausführen. Ich habe es auf alle Arten versucht und es funktioniert nicht für mich.
Vielen Dank!
'$ line = fgets ($ file);' Bei jeder Iteration wird diese Variable überschrieben und enthält somit nur die letzte Zeile? Sonst sehe ich mit Ihrem Skript nichts Ungewöhnliches, was aus Sicht des Clients zu Zeitüberschreitungsfehlern führen würde. Haben Sie die Kontrolle über den Server, auf den Sie schreiben? – Scuzzy
Wie kann ich das durch Überschreiben beheben? also versuche ich und komm hierher zurück ... Und nicht, ich habe keine Kontrolle über Remote-Server – Zenabria
@Scuzzy Und danke für dich .. – Zenabria