mmofacts.com

Script läuft über Webinterface, über console (und cron) nicht

gepostet vor 17 Jahre, 3 Monate von meisterjoda
Moin,
mein neues Kampfscript simuliert einen Kampf Einheit gegen Einheit. Soweit klappt auch alles, nur wenn die Einheitenanzahl mehr als ca. 12.000 wird, bekommt das Script so seine Problemchen. Rufe ich die php-Datei über meinen Browser auf, dann klappt alles wunderbar. Rufe ich das Script über die Konsole direkt auf, dann passiert gar nix. Und wenn der cron-daemon das Script starten soll passiert auch nüscht. Woran kann sowas liegen?? Die Einheiten sind als Objekte in Arrays abgelegt, aber bei 12k sollte das ja keine Probleme geben...
Danke & Gruß
meister
gepostet vor 17 Jahre, 3 Monate von planetenkiller
Vielleicht verwendet das CLI-PHP eine andere php.ini, die (wichtige) andere Einstellungen hat? Sonnst würde ich mal Debuggen um zu sehen wo sich beim Verarbeiten des Browser Aufrufs zum Konsolen Aufruf was ändert.
gepostet vor 17 Jahre, 3 Monate von DrakeL
Mmh, 12k Objekte in einem Array? Vielleicht stößt da auch an die Speichergrenzen, die dein PHP Skript maximal haben darf.
gepostet vor 17 Jahre, 3 Monate von Kampfhoernchen
Normalerweise gibt es eine php-cli.ini. Ich nehme an dass dort ein Speicherlimit von 8 MB vorgesehen ist.
Allerdings würde ich für sowas nun wirklich kein PHP einsetzen, sondern Ruby oder .NET (respektive Mono).
gepostet vor 17 Jahre, 3 Monate von DrakeL
Ich würde jetzt nicht sagen er soll kein PHP einsetzen, aber er sollte etwas an seinem Kampfskript tun. weil für jede Einheit ein Objekt zu machen was am Ende auf 12k Objekte hinausläuft, ich glaub da solltest etwas an deiner Logik ändern.
Aber ansonsten geb ich Kampfhoernchen recht, dafür ist PHP echt nicht mehr geeignet ^^
gepostet vor 17 Jahre, 3 Monate von meisterjoda
ich steige vllt. mal auf ein java bzw. ein c# backend um, aber momentan rechnet er mir 10k einheiten gegeneinander in weniger als 1 sec. das reicht mir derzeit... wenns kritisch wird, wird umgestiegen...
aber die hinweise sind gut, ich suche mal.
NACHTRAG: Völlig absurd. Wenn ich es mit php -e ausführe klappt es auf einmal?!?!
NACHTRAG²: Die ini-Files waren in der Tat unterschiedlich, die executiontime sowie memory_size waren in der lokalen ini kleiner definiert als in der für den Webserver. Hurra! Ich liebe dieses Forum
gepostet vor 17 Jahre, 3 Monate von Sh1nto
früher haben wir so sachen per 'wget localhost/anyscript.php' vom lokalen Server geholt, heute führen wir diese Scripte direkt aus, dafür muss das Script für den aufrufenden Benutzer ausführbar sein, und die erste Zeile sieht folgender maßen aus:
#!/usr/bin/php
natürlich gilt dies nur für Linux.

Auf diese Diskussion antworten