curl_exec maximum execution time - was verursacht es?
Bekomme ich die gefürchtete Nachricht:
Fatal error: Maximum execution time of 90 seconds exceeded in /home/pricing.php on line 239
der code ist:
$url = "http://*******.com/feed?f=PR&categories=$cat_id&limit=100&startproducts=$ii&price_min=0.01&sortproducts=score&show=properties";
$c = curl_init($url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_HEADER, 0);
curl_setopt($c, CURLOPT_USERPWD, "****:****");
$xml = simplexml_load_string(curl_exec($c)); //line 239
den simplexml_load_string Linie 239, sicherlich dies bedeutet, das Futter wurde hat man (in Ermangelung eines besseren Wortes!) und der string geladen wird, aber sicher, die können nicht nehmen Sie mehr als 90 Sekunden?
Meine Fragen sind:
1 - was könnte/würde dies verursachen?
2 - ist es sicher zu erhöhen, die php_value max_execution_time
über 90 Sekunden und, was als eine sichere maximale?
3 - gibt es eine bessere/schnellere/stabilere Weg zu bringen um das Futter als mit curl?
Vielen Dank für alle Hilfe!
- Nein, es bedeutet nicht, dass der stream", der hat schon". Könnte die Zeit sehr gut verbracht werden, in
curl_exec
wenn der website ist "langsam". Der Bruch in zwei Zeilen, wenn Sie sicher sein wollen. - Ah ok - also, wenn ich es brechen wie: $feed = curl_exec($c); $xml = simplexml_load_string($feed); Ist das, was du meinst?
- Ja, dann wirst du wissen, welcher der beiden Aufrufe ist Abwürgen.
- verwenden Sie "abgerufen" für bessere Wort "got"
Du musst angemeldet sein, um einen Kommentar abzugeben.
A1:
Ja, Sie bekam Ihre Antwort aus, die deiner 2. Frage. Sie wird verursacht durch php ' s
max_execution_time
.A2:
Es ist nicht sicher, es sei denn, Sie sind hosting es vor Ort und Sie wissen, was Ihr script tun. Ich denke, die gängige Praxis ist, entweder 30 Sekunden oder max 300sec(5min).
A3
Wenn Sie sind den Umgang mit curl ich lieber, wenn du
set_time_limit(0)
auf ganz oben in deinem php-Skript(code-Ebene äquivalent fürmax_execution_time
imphp.ini
), und verwenden Sie den timeout-Wert für curl-handle des Zeitlimits.CURLOPT_TIMEOUT_MS
, aber eine Sache ist sicher, dasscurl_exec($c)
zurück leeren string. Also, nur eine einfache Prüfung machen, bevor Sie analysieren, um Ihresimplexml_load_string
.Den curl zu externen feed ist extrem langsam
Ist OK, erhöhen Sie die max_execution_time auf einen höheren Wert, aber ist nicht zu empfehlen. Wenn das Skript zu dienen, wie eine normale web-Seiten, müssen Sie zweimal überlegen. Kein Benutzer möchte, um zu warten, bis mehr als 90 Sekunden, um eine Seite geladen ist.
Cache it!
Details des cache ist es! :-
Nicht eine super Logik
was es bedeutet ist, können Sie bereiten eine Liste der feed-URL
dann tun Sie einen hintergrund-job (cron-Job) zu packen, jedes feed-URL und Speicher in den lokalen Speicher.
Sobald die lokale XML verfügbar ist, laden Sie von der lokalen
So, ist es Umgekehrt von on-demand-Zugang, Holen Sie sich die XML bereit, bevor jeder Nutzer auf die Seite zugreifen.
Die Schwierigkeiten werden viele verschiedene feed-URL zu packen, es ist ein curl_multi_exec, die ideal sein sollte, sich mehrere url in der gleichen Zeit.