tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Michael Engel
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
437
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    BadMatt BadMatt ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Beiträge
    105
    Hey,

    Ich bin derzeit an einem Teeworlds Server Webinterface.
    Eigentlich bin ich auch schon fertig und wollte das ganze Veröffentlichen ( TWSM ) aber seit ich das ganze jetzt produktiv einsetzen wollte ( keine nur kurzen Test-Server ) habe ich persönlich ( komischerweise noch keiner meiner Tester oO ) ein Problem;

    Nach einiger Zeit ( noch keine Regelmäßigkeit festgestellt oO ) stürzen die Server immer ab - entweder alle - oder einzelne, meistens alle in mehreren Etappen ( erst ein Paar dann die anderen ).
    Es liegt aber nicht am Game - läuft von Hand gestartet perfekt - oder am vServer ( ispCP Omega 1.03 - Apache2, PHP5, FastCGI ).

    In /var/log/apache2/users/*-error.log steht dann nach dem Absturz:
    Code :
    1
    
    [DATUM] [notice] mod_fcgid: process /var/www/virtual/*/htdocs/index.php(*12612*) exit(idle timeout), terminated by calling exit(), return code: 0

    Allerdings stimmen die Zeiten nicht mit der IdleTimeout Einstellung überein oO

    Und gestartet wird der Server via nohup ( vereinfacht ):
    Code :
    1
    
    shell_exec('nohup SERVER_DATEI -f CONFIG_DATEI.cfg > LOG_DATEI & echo $!');

    - Sollte doch so eigentlich unabhängig vom WebServer laufen oder?

    Sollte ich es vlt. eher mit http://de.php.net/ssh2 versuchen?
    Wobei das auch nicht so toll ist mit den Passwörtern die übermittelt werden, dem User den man extra anlegen sollte etc. ...


    Nebenbei;

    Da mir in einem anderen Forum geraten wurde doch mal exec() anstatt shell_exec() zu probieren - es läuft beides wie vermutet aufs selbe raus
    Habe auch schon etliche andere Sachen ausprobiert wie z.B.:
    - shell_exec('(../'.$server.' -d ../ -f ../'.$config.' > /dev/null & echo $!)');
    - befehl mit escapeshellcmd() maskiert
    - shell_exec('nohup SERVER_DATEI -f CONFIG_DATEI.cfg > LOG_DATEI 2> ERROR_DATEI & echo $!');
    ...

    Auszug aus error.log nach dem letzten Absturz:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    [Mon Mar 15 17:10:50 2010] [notice] mod_fcgid: process /var/www/virtual/twsm.matthis-brugger.de/htdocs/index.php(24142) exit(idle timeout), terminated by calling exit(), return code: 0
    [Mon Mar 15 17:10:50 2010] [notice] mod_fcgid: process /var/www/virtual/twsm.matthis-brugger.de/htdocs/index.php(24355) exit(idle timeout), terminated by calling exit(), return code: 0
    [Mon Mar 15 17:10:50 2010] [notice] mod_fcgid: process /var/www/virtual/twsm.matthis-brugger.de/htdocs/index.php(24194) exit(idle timeout), terminated by calling exit(), return code: 0
    [Mon Mar 15 17:14:56 2010] [notice] mod_fcgid: process /var/www/virtual/twsm.matthis-brugger.de/htdocs/index.php(24437) exit(idle timeout), terminated by calling exit(), return code: 0
    [Mon Mar 15 17:14:56 2010] [notice] mod_fcgid: process /var/www/virtual/twsm.matthis-brugger.de/htdocs/index.php(24127) exit(lifetime expired), terminated by calling exit(), return code: 0
    [Mon Mar 15 17:14:56 2010] [notice] mod_fcgid: process /var/www/virtual/twsm.matthis-brugger.de/htdocs/index.php(24136) exit(lifetime expired), terminated by calling exit(), return code: 0
    [Mon Mar 15 17:14:56 2010] [notice] mod_fcgid: process /var/www/virtual/twsm.matthis-brugger.de/htdocs/index.php(21165) exit(lifetime expired), terminated by calling exit(), return code: 0
    [Mon Mar 15 17:14:56 2010] [notice] mod_fcgid: process /var/www/virtual/twsm.matthis-brugger.de/htdocs/index.php(24431) exit(lifetime expired), terminated by calling exit(), return code: 0


    ps -aux | grep vu2011 vor dem Absturz
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    
    vu2011   21165  [...]  16:58   0:00 /usr/bin/php5-cgi
    vu2011   21166  [...]  16:58   0:00 /usr/bin/php5-cgi
    vu2011   21167  [...]  16:58   0:00 /usr/bin/php5-cgi
    vu2011   24120  [...]  16:59   0:00 ../server_files/modpack_x86 -d ../ -f ../configs/b9005b519bfb0f05d1ee6e9d22f99ccf.cfg
    vu2011   24127  [...]  16:59   0:00 /usr/bin/php5-cgi
    vu2011   24131  [...]  16:59   0:00 /usr/bin/php5-cgi
    vu2011   24132  [...]  16:59   0:00 /usr/bin/php5-cgi
    vu2011   24136  [...]  16:59   0:00 /usr/bin/php5-cgi
    vu2011   24137  [...]  16:59   0:00 /usr/bin/php5-cgi
    vu2011   24138  [...]  16:59   0:00 /usr/bin/php5-cgi
    vu2011   24142  [...]  16:59   0:00 /usr/bin/php5-cgi
    vu2011   24143  [...]  16:59   0:00 /usr/bin/php5-cgi
    vu2011   24144  [...]  16:59   0:00 /usr/bin/php5-cgi
    vu2011   24194  [...]  16:59   0:00 /usr/bin/php5-cgi
    vu2011   24219  [...]  16:59   0:00 /usr/bin/php5-cgi
    vu2011   24220  [...]  16:59   0:00 /usr/bin/php5-cgi
    vu2011   24355  [...]  16:59   0:00 /usr/bin/php5-cgi
    vu2011   24360  [...]  16:59   0:00 /usr/bin/php5-cgi
    vu2011   24361  [...]  16:59   0:00 /usr/bin/php5-cgi
    vu2011   24425  [...]  16:59   0:00 ../server_files/modpack_x86 -d ../ -f ../configs/4b26c9df579e0b3cba54136523ef6d42.cfg
    vu2011   24431  [...]  16:59   0:00 /usr/bin/php5-cgi
    vu2011   24432  [...]  16:59   0:00 /usr/bin/php5-cgi
    vu2011   24433  [...]  16:59   0:00 /usr/bin/php5-cgi
    vu2011   24437  [...]  16:59   0:00 /usr/bin/php5-cgi
    vu2011   24439  [...]  16:59   0:00 /usr/bin/php5-cgi
    vu2011   24440  [...]  16:59   0:00 /usr/bin/php5-cgi
    vu2011   24449  [...]  16:59   0:00 ../server_files/modpack_x86 -d ../ -f ../configs/bbc52ca51cd33725179c68a44500a7ac.cfg
    vu2011   24465  [...]  16:59   0:00 ../server_files/modpack_x86 -d ../ -f ../configs/df2622f5293dca06d98d7a96dd869802.cfg
    vu2011   24479  [...]  16:59   0:00 ../server_files/modpack_x86 -d ../ -f ../configs/9f12f0cd2df2089ddce0467115f9661a.cfg
    vu2011   24494  [...]  16:59   0:00 ../server_files/modpack_x86 -d ../ -f ../configs/8d91534e02af410ebfb088034ca2ae69.cfg
    vu2011   24509  [...]  16:59   0:00 ../server_files/modpack_x86 -d ../ -f ../configs/308bc225df8fb97015d8bc5e92738a46.cfg
    vu2011   24527  [...]  16:59   0:00 ../server_files/modpack_x86 -d ../ -f ../configs/3c0ff2cda6ef3f4ba869eeb3275e2efd.cfg
    vu2011   24543  [...]  16:59   0:00 ../server_files/modpack_x86 -d ../ -f ../configs/74623ef450b488e286ab88d132aab325.cfg


    ps -aux | grep vu2011 nach dem Absturz
    Code :
    1
    2
    3
    
    vu2011   19596  [...]  17:16   0:00 /usr/bin/php5-cgi
    vu2011  [...]  17:16   0:00 /usr/bin/php5-cgi
    vu2011  [...]  17:16   0:00 /usr/bin/php5-cgi


    Ausserdem stürzen die Server auch ab wenn Apache gestoppt / neugestartet wird - sollten doch aber eigenständige Prozesse sein ... ='(


    => Zentrale Frage; wie kann ich den Prozess aus PHP heraus starten, ohne dass dieser an den PHP-Prozess gebunden ist?

    Hoffe hier kann mir jemand helfen =]
    Gruß Matthis
     

  2. #2
    Avatar von Microhome
    Microhome Microhome ist offline Mitglied Brokat
    Registriert seit
    Jul 2003
    Ort
    Berlin
    Beiträge
    351
    Hallo Matt,

    du könntest den Timeout für php-cli Ausführungen einfach auf 0 setzen und das Script über das cli-Binary aufrufen und schauen, ob der Fehler dann noch immer auftaucht. Außerdem solltest du die Ausgabe mal in /dev/null pipen und den Prozess nach dem Start in den Hintergrund verschieben (&).

    Ich weiß nicht ob es funktioniert, war nur der erste Gedanke, als ich deine Frage gelesen habe. Du kannst es mal ausprobieren und das Ergebnis mitteilen.


    Beste Grüße aus Berlin.
     
    Lösungsvorschlag:
    Wenn es mit dem mysql_query(...); Probleme gibt, pack ein die(mysql_error()); dahinter und guck dir den MySQL-Fehler an!

  3. #3
    Registriert seit
    May 2007
    Ort
    Köln / Bonn
    Beiträge
    844
    Blog-Einträge
    4
    Soweit ich mich errinere erreicht man mit pcntl unabhängige prozesse. Zentraler funkt is die pcntl_fork() funktion. Diese Prozesse kann man auch relativ einfach überwachen und terminieren.
    BadMatt bedankt sich. 
    Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.

  4. #4
    BadMatt BadMatt ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Beiträge
    105
    Danke für eure Antworten, haben aber leider nichts genutzt =(

    @Mircohome:

    Habe mal alle Timeouts auf 0 gesetzt und apache neu gestartet, hat leider nichts gebracht =/
    Und rufe den Befehl ja schon mit einem & auf um ihn in den Hintergrund zu verschieben ( kompletter Befehl steht oben im ersten Beitrag ).


    @Michael:

    Also mit den Beispielen die ich auf php.net und bei google gefunden habe gings leider auch nicht -.-
     

  5. #5
    BadMatt BadMatt ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Beiträge
    105
    Also nach einigem Ausprobieren und über einen kleinen Umweg läuft das jetzt wohl doch mit den pcntl_* Funktionen - danke Michael! =]

    ( läuft zumindest schon ein Paar Tage am Stück )
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 28.09.10, 02:43
  2. Antworten: 1
    Letzter Beitrag: 07.10.09, 19:53
  3. shell_exec() bricht ab
    Von Passer im Forum Linux & Unix
    Antworten: 2
    Letzter Beitrag: 19.06.09, 00:12
  4. Antworten: 0
    Letzter Beitrag: 10.12.07, 07:38
  5. shell_exec und Rückgabewert
    Von kevkev im Forum PHP
    Antworten: 2
    Letzter Beitrag: 04.11.06, 12:39