Hier ein kurzer Überblick, was ich tue, es ist eigentlich ganz einfach:Verbesserung cURL Performance (PHP Library)
- Gehen Sie aus und holen Datensätze aus einer Datenbanktabelle.
- Gehen Sie durch alle diese Datensätze und für jede Spalte, die eine URL enthält gehen Sie aus (mit cURL) und stellen Sie sicher, dass die URL noch gültig ist.
- Für jeden Datensatz wird eine Spalte mit einem aktuellen Zeitstempel aktualisiert, der anzeigt, wann sie das letzte Mal überprüft wurde und eine andere db-Verarbeitung stattfindet.
Jedenfalls funktioniert das alles gut und gut und macht genau das, was es soll. Das Problem ist, dass ich denke, die Leistung könnte stark verbessert in Bezug darauf, wie ich die URLs mit cURL validieren. Hier
ist eine kurze (über vereinfachte) Auszug aus meinem Code, der zeigt, wie cURL verwendet wird:
$ch = curl_init();
while($dbo = pg_fetch_object($dbres))
{
// for each iteration set url to db record url
curl_setopt($ch, CURLOPT_URL, $dbo->url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch); // perform a cURL session
$ihttp_code = intval(curl_getinfo($ch, CURLINFO_HTTP_CODE));
// do checks on $ihttp_code and update db
}
// do other stuff here
curl_close($ch);
Wie man sehen kann ich gerade die Wiederverwendung der gleichen die ganze Zeit curl handhaben, aber auch wenn ich strip out über die gesamte Verarbeitung (Datenbank oder sonst) das Skript dauert immer noch unglaublich lange zu laufen. Würde das Ändern einer der cURL-Optionen die Leistung verbessern? Zeitüberschreitungswerte einstellen/etc? Jede Eingabe würde geschätzt werden.
Danke,
- Nicholas
Das Hinzufügen dieses Parameters half definitiv, die Ausführungszeit um 30-40% zu verkürzen - danke! –
Schöne Idee, danke für den Beitrag! – Jay
Wir können Multithreading hier nicht verwenden. Verwenden Sie multi_curl http://www.askapache.com/php/curl-multi-downloads.html – mixdev