Hintergrund:Call to URLFetch fehlgeschlagen mit Anwendungsfehler 5 für url x
ich Google App Engine verwenden und einen seltsamen Fehler in meinen Website-Crawler habe.
Ich habe ein Backend, das jede Nacht automatisch eine Website crawlen wird. Dies wird durch eine Aufgabe ausgelöst, die aufgrund von Zeitbeschränkungen in PHP auf eine pushQueue geschoben wird.
Problem:
Wenn ich das Skript manuell ausführen, der die Aufgabe erstellt, schließt die Aufgabe ohne Fehler zu erwarten. Wenn Cron die Aufgabe startet, erhalte ich den folgenden Fehler.
Call to URLFetch fehlgeschlagen mit Anwendungsfehler 5 für url x
Code:
function url_get_contents ($Url) {
global $retry;
try {
if (!function_exists('curl_init')){
die('CURL is not installed!');
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $Url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
curl_close($ch);
return $output;
} catch (Exception $e) {
syslog(LOG_INFO, 'Caught exception: ', $e->getMessage());
if($retry > 0){
$retry -= 1;
return url_get_contents($Url);
}
else{
return null;
}
}
}
Dank syslog ich sehen kann, dass die $ url in Ordnung ist, die mich treibt verrückt es funktioniert, wenn das exakt gleiche Skript manuell nicht über Cron gestartet wird.
Wie kann ich das beheben?
Vielen Dank im Voraus.
Überprüfen Sie, ob Ihre PHP richtige Konfiguration für cli Umwelt hat. – Inurosen
Ah, das könnte es sein, ich nehme nicht an, dass Sie wissen, wie man das auf GAE überprüft? Ich habe eine php.ini, aber wie finde ich heraus, ob es der eine ist, den cli php benutzt? – Grushton94
Warum nicht file_get_contents() verwenden - das auch den URLFetch-Handler verwendet, aber Ihnen sagen wird, ob das Problem cURL ist oder nicht. – Tom