PHP Website Crawler

Hallo,

ich habe folgende Situation. Benutzer XY registriert sich mit Benutzername, Passwort und Website URL auf meiner Website (Webanwendung). Sobald Benutzer XY sich nun registriert hat, soll der Crawler im hintergrund greifen und Website XY crawlen und gewisse Informationen in einer Datenbank speichern. Egal ob Benutzer XY die Seite nun verlässt oder nicht, soll der Crawler weiter crawlen und bei Ende eine E-Mail an den Benutzer schicken, dass er sich nun einloggen kann und die Informationen zur Verfügung stehen. Danach soll die Website in regelmäßigen Abständen immer wieder gecrawlt werden.

Meine Frage dreht sich jetzt nicht um den Crawler sondern darum, wie ich es löse das die Website im Hintergrund gecrawlt wird und in regelmäßigen Abständen. Ich habe mich über Google ein wenig schlau gemacht und bin auf das Stichwort „Cronjob“ gestoßen. Bin ich damit auf der richtigen Spur und lässt sich damit mein erstes Problem auch lösen?

Ein Cronjob ist dafür die beste Lösung, dafür benötigst du aber entweder Zugriff auf den Server oder dein Webhosting-Anbieter stellt dir diese Funktion im Kundenmenü zur Verfügung.

Dann speicherst du die Daten des Benutzers in eine Datenbank und lässt bspw. alle 10 Minuten das Script (PHP bspw.) per Cron starten und das schaut dann in der DB, ob es etwas zu tun gibt und erledigt das crawlen bzw. dann auch den Versand der Mail.

Ein Cronjob ist dafür die beste Lösung, dafür benötigst du aber entweder Zugriff auf den Server oder dein Webhosting-Anbieter stellt dir diese Funktion im Kundenmenü zur Verfügung.

Danke schonmal für diese Information. Da ich das ganze bisher nur lokal betreibe, muss ich mir noch einen Webhosting-Anbieter suchen. Kannst du mir vllt. einen empfehlen der diese Funktion im Kundenmenü zur Verfügung stellt? Ansonsten muss ich mal einen Freund fragen, der einen eigenen Root-Sever hat.

Dann speicherst du die Daten des Benutzers in eine Datenbank und lässt bspw. alle 10 Minuten das Script (PHP bspw.) per Cron starten und das schaut dann in der DB, ob es etwas zu tun gibt und erledigt das crawlen bzw. dann auch den Versand der Mail.

Dh. auch nach registrierung, wenn der Benutzer den Browser schließt wird weiter gecrawlt?

Ich werde mich jetzt mal weiter in Google über einen Cronjob schlau machen.

Wenn ich mich jetzt nicht täusche, bricht ein PHP-Script nie einfach so ab. Erst wenn versucht wird etwas an den Client zu schicken (zB echo) weiß PHP ob der Benutzer überhaupt noch da ist. Sonst müsste es ja einen Echtzeit Informationsaustausch zwischen Client und Server geben, um zu prüfen ob der Client in jeder Millisekunde noch da ist.

Ein reines PHP Script ohne Ausgabe sollte mMn daher eigentlich bis zum Schluss durchlaufen, auch wenn der Benutzer abbricht. Aber da bin ich mir nicht so sicher.

Jedenfalls ist das vielleicht noch interessant für dich:
http://www.php.net/manual/de/function.ignore-user-abort.php

Wenn ich mich jetzt nicht täusche, bricht ein PHP-Script nie einfach so ab. Erst wenn versucht wird etwas an den Client zu schicken (zB echo) weiß PHP ob der Benutzer überhaupt noch da ist. Sonst müsste es ja einen Echtzeit Informationsaustausch zwischen Client und Server geben, um zu prüfen ob der Client in jeder Millisekunde noch da ist.

Ein reines PHP Script ohne Ausgabe sollte mMn daher eigentlich bis zum Schluss durchlaufen, auch wenn der Benutzer abbricht. Aber da bin ich mir nicht so sicher.

Jedenfalls ist das vielleicht noch interessant für dich:
http://www.php.net/manual/de/function.ignore-user-abort.php

Okay, danke. Die Funktion ist aufjedenfall interessant für mich.

Ich hab immer wieder gelesen, das es nicht möglich ist einen Cronjob in Windows aufzusetzen und es nur in Linux möglich sei. Stimmt das so? Da ich gerne das ganze mal lokal testen wollte.

Bäh, Windows …
Habe aber trotzdem kurz Google befragt:
http://stackoverflow.com/questions/132971/what-is-the-windows-version-of-cron

Bäh, Windows …

Jaja, ich weiß. :smiley:

Habe aber trotzdem kurz Google befragt:
http://stackoverflow.com/questions/132971/what-is-the-windows-version-of-cron

Danke!