Script startet von ganz allein... oder doch nicht?

Alles, was PHP betrifft, kann hier besprochen werden.

Script startet von ganz allein... oder doch nicht?

Postby Makconner » 02. March 2006 16:50

Folgendes Problem:

Ich habe ein Programm welches über php umgesetzt ist und im Hintergrund mysql Anbindung hat. Nun man sagt wohl eher Website aber es ist schon etwas mehr als das.

Jetzt kommt der Knackpunkt: ich habe die Absicht ein script über die Datenbank laufen zu lassen, es soll jede Stunde die Datenbankbestände prüfen. Nur php ist abhängig von dem Aufruf des Users… wie kann ich es realisieren daß das Script abgerufen wird ohne das der User oder ein Admin einen Fingerrühert?
User avatar
Makconner
 
Posts: 153
Joined: 14. February 2006 16:00

Postby Knight1 » 02. March 2006 17:11

Falls Du zugriff auf den Server hast wo das script laufen soll, kannst Du es m al hier mit versuchen:

http://www.newbie-net.de/anleitung_cron.html


Kai aka Knight1
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
Operating System: Windows 7 Ultimate x64

Postby KingCrunch » 02. March 2006 17:12

Cronjob. Unter Linux meines Wissens standardmässig verfügbar, unter Windows zB Z-Cron
Dabei nutzt du die PHP-CLI, nicht als Modul (spart dann auch gleich ein wenig Ressourcen, da ja der Apache nicht mitgeladen werden muss)
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Makconner » 02. March 2006 17:56

Was würde geschehen wenn ich folgendes tuhe…

Ich schreibe eine kleine Script, welches nur eine Schleife beinhaltet.

Code: Select all
Pseudocode:
Begin
   Schleife läuft wenn in der Datenbank an der Stelle X eine 1 steht.
      Script XYZ.php starten // XYZ.php (2 Datenbankbefehle)
      Timer mit 60 minuten.
   Schleife Loop zum Anfang.
Ende
User avatar
Makconner
 
Posts: 153
Joined: 14. February 2006 16:00

Postby Wiedmann » 02. March 2006 17:56

Unter Windows gibt es standardmässig den Taskplaner.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby KingCrunch » 02. March 2006 22:37

Makconner wrote:Was würde geschehen wenn ich folgendes tuhe…

Ich schreibe eine kleine Script, welches nur eine Schleife beinhaltet.

Code: Select all
Pseudocode:
Begin
   Schleife läuft wenn in der Datenbank an der Stelle X eine 1 steht.
      Script XYZ.php starten // XYZ.php (2 Datenbankbefehle)
      Timer mit 60 minuten.
   Schleife Loop zum Anfang.
Ende

Auf der Commandline dürfte es eventuell klappen, wenn timeout entsprechend hoch gewählt werden, allerdings rate ich davon ab, da du dann einen ständig laufen Prozess hast, bei den du nicht prüfen kannst, ob er wirklich noch läuft oder schon abgestürzt ist. Nimm lieber die Variante von Wiedmann (die ich wohl aus Ignoranz gegenüber dem Taskplaner vollkommen ignoriert habe ;))
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Makconner » 03. March 2006 09:05

Ja das es ein ständig laufender Prozess ist, ist auch geplant da es ja eine Schleife ist die ich durch den Datenbankeintrag an oder ausschalte, ob das teil noch läuft kann ich ja prüfen indem ich bei jedem durchlauf einen Zeitstempel in die Datenbank machen lasse. Dann ist mir klar ob das teil durchgelaufen ist oder nicht.

Denn folgendes Problem:
Die Website und deren Datenbank will ich auf dem Server eines Webspace - Anbieters ablegen. Also der Server gehört nicht mir und ich habe keinen Systemzugriff… daher werde ich so was wie den Taskmanager nicht nutzen können.

Zweifel?
Es ist mir nicht klar ob der Anbieter eventuell derartige Dinge komplett unterbindet. Da der Webspace ja dazu gedacht ist Webseiten abzulegen und die Maschine demnach nur zeitlich/kurze Prozesse ausführen sollte, ist mein Prozess ja fast unendlich lang, nur eben in der Zeitpause mit 0% Maschinenleistung und wartet auf den Timer dann macht der Prozess eine kurze Rechnung und wartet wieder auf den Timer… und wenn der bei einer Stunde steht sollte der Prozess gar nicht auffallen.
User avatar
Makconner
 
Posts: 153
Joined: 14. February 2006 16:00

Postby KingCrunch » 03. March 2006 11:42

Dann bin ich mir aber noch weniger sicher, ob der Anbieter CLI-Aufrufe zulässt. Aufrufe über den Apache werden im timeout enden. Du kannst in deinen Taskmanager den Aufruf einbinden, der über IE (oder einen Browser deiner Wahl) das script in der Ferne aufruft. Ansonsten gibts auch Cronjob-Dienste, die aber meist bei öfter als alle 24h kostenpflichtig sind.
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Makconner » 03. March 2006 12:09

Na ok.. ich denke ich finde eine Möglichkeit das zu automatisieren…

Andere Frage:
Was neinst du mit „Cronjob-Dienste“ … was bedeutet der Begriff genau?
User avatar
Makconner
 
Posts: 153
Joined: 14. February 2006 16:00

Postby KingCrunch » 03. March 2006 13:57

Na, ja, "Cronjobs" sind auch nur Programme, die zeitlich gesteuert ausgeführt werden. Mit den Diensten meinte ich einfach Angebote im netz, die für dich die Aufgabe übernehmen. Du kannst es generell kostenfrei von deinem eigenen Rechner aus machen, aber ich nehme nicht an, dass dieser 24/7 läuft. zB Cronjob.de oder Cron-Server.de bieten ein Service an, Preis/Leistung hab ich allerdings nicht geprüft, Cronjob.de behauptet aber von sich unbegrenzte zeitgesteuerte Aufträge im Mindestabstand von 5min kostenlos anzubieten
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Makconner » 03. March 2006 14:01

Na da haben wir wieder mal was gelernt….
Dann Danke auch.. ich denke das reicht mir für heute… genug gekramt und gewühlt… wir sehen uns am Montag… hab noch 2h bis Feierabend…
User avatar
Makconner
 
Posts: 153
Joined: 14. February 2006 16:00


Return to PHP

Who is online

Users browsing this forum: No registered users and 2 guests