Ich versuche, eine Website Überwachung von Webapp mit PHP erstellen. Momentan nutze ich curl, um Header von verschiedenen Websites zu sammeln und eine MySQL-Datenbank zu aktualisieren, wenn sich der Status einer Website ändert (z. B. wenn eine Seite, die "oben" war, "nach unten" geht).Scaling Curl mit PHP und Cron
Ich benutze curl_multi (über die Rolling Curl X Klasse, die ich leicht angepasst habe), 20 Seiten parallel zu verarbeiten (was die schnellsten Ergebnisse zu geben scheint) und CURLOPT_NOBODY, um sicherzustellen, dass nur Header gesammelt und ich es versucht habe um das Skript zu rationalisieren, um es so schnell wie möglich zu machen.
Es funktioniert OK und ich kann 40 Seiten in ca. 2-4 Sekunden. Mein Plan war es, das Skript jede Minute über Cron laufen zu lassen ... also sieht es so aus, als ob ich in der Lage sein werde, ungefähr 600 Webseiten pro Minute zu bearbeiten. Obwohl dies in der Minute gut ist, wird es auf lange Sicht nicht ausreichen.
Also, wie kann ich das skalieren? Ist es möglich, mehrere Crons parallel zu betreiben, oder kommt es zu Engpässen?
Von meinem Kopf dachte ich, dass ich vielleicht die Datenbank in Gruppen von 400 brechen und ein separates Skript für diese Gruppen (z. B. IDs 1-400, 401-800, 801-1200 usw. ausführen könnte) separate Skripte), so dass keine Gefahr einer Beschädigung der Datenbank besteht. Auf diese Weise würde jedes Skript innerhalb einer Minute fertig sein.
Es fühlt sich jedoch so an, als würde dies nicht funktionieren, da das eine Skript, das curl_multi ausführt, die maximale Leistung bei 20 parallelen Anfragen scheint. Wird das funktionieren oder gibt es einen besseren Ansatz?
Danke - das ist eine große Hilfe. Ich glaube nicht, dass ich pthreads verwenden kann, weil "die pthreads-Erweiterung in einer Webserver-Umgebung nicht verwendet werden kann" und dies auf einem Webserver ist. – Ryan