Nach jahrelanger Erfahrung mit einem Daemon in C und einem Frontend in PHP rate ich jedoch ersthaft jedem dazu beides in der gleichen Sprache zu schreiben. Zum einen ist das intuitiver, zum anderen profitiert man enorm von Code reusibility und muss das meiste nur einmal schreiben...
Und meiner Meinung nach sind Skriptsprachen definitiv intuitiver und angenehmer. ;) Grad bei einem Daemon ist der Unterschied in Sachen Speicher und Performance eben eher gering - solang man mit einem DBMS und einem getrennten Webserver arbeitet.
Der groesste Vorteil in Sachen Performance ergibt sich aber eben daraus, dass man den Status ueber zwei "Ticks" hinaus speichern kann und es daher u.U. unnoetig sein kann, erneut die Datenbank abzufragen bzw. man nur die Differenz der Daten seit der letzten Abfrage benoetigt.
ok also kein cron sondern einfach ein php script aufrufen.. nun ja was ist wenn ich eine Datei die vom Skript geladen wird iwo ändere, dann muss der Prozess ja wieder neugestartet werden.
Richtig. Laufenden Prozess stoppen - eleganterweise ueber ein Event, das man an den Server pushed, aber er kann auch regelmaessig einen status pollen und im schlimmsten Fall kann man ihn einfach abschiessen.
By the way. kann ich mir das so vorstellen, dass ich die php-Datei einfach mit dem Browser öffne und das Fenster dann schließe, während der Prozess "unendlich" weiterläuft? Oder ein Crontab die datei jeden tag einmal von neu aufruft?
Also wie exe vorher schon schrieb, bei shared hosting gibt es ganz sicher timeouts fuer die Scripts, also mit aufrufen und schliessen ist da nix. Das waere ja noch schoener. ^^
Ob die php.ini Einstellungen fuer Cron ein Timeout haben weiss ich nicht, aber wahrscheinlich ist das schon.
Der sicherste und sinnigste Weg ist ueber die Commandozeile. Wenn du das daemonizen nicht im Prozess selbst erledigst reicht ein "nohup php daemon.php" und er verabschiedet sich in den Hintergrund. Genauso koenntest du es in einer Screen Session starten und gar nicht wirklich daemonizen. Oder du daemonized eben per script selbst und forkst dich von der shell (zumindest macht man es in perl so).
Aber wenn du es ein wenig komfortabel haben moechtest - und ein wenig Verantwortung gegen anderen Shared Hosting Kunden, sowie gegenueber deinen Spielern hast, kommst du um einen vServer oder rootserver sowieso nicht herum. Mit Kommandozeile hat man einfach viel mehr Spass. ;)