SAMP-Server mit PHP Starten

Opi62

Mitglied
Hi ich baue im moment an einem Serververwaltungscript.
Ich möchte mit php auf meinem windows Server SAMP-Server.exe Starten.
Aber leider Funktioniert das nicht so wie ich mir das vorstelle.
PHP:
<?php
$cmd = ('C:/samp/samp-server.exe');
System(escapeshellcmd($cmd));
?>
Das ist mein script aber sobald ich die datei dafür aufrufe beckomme ich immer wieder diese fehler meldung.

Code:
---------- Loaded log file: "server_log.txt". ---------- SA:MP Dedicated Server ---------------------- v0.2X, (C)2005-2008 SA:MP Team Unable to exec file 'server.cfg'. Error: Your password must be changed from the default password, please change it.
Ich habe das server Password schon mehrmals Geändert aber leider Beckomme ich es einfach nicht hin.

Würde mich freuen wenn mir jemand Weiter helfen könnte.
Gruß Opi62
 
Neu gestartet habe ich ihn.
ich denke mal das problehm liegt darin da ich die server.exe mit PHP aufrufe.
Das er dann die server.cfg nicht richtig lesen kann.
ich bin jetzt seit 19 stunden am durch probieren wie ich das Problehm am besten lösen könnte. Aber bis jetzt ist mir noch nicht wirklich was Eingefallen.

Ich bin auch schon auf die idee gekommen mit php die windows cmd auszufüren das die user ihren Server darüber starten können. aber das geht ja auch nicht da ich dann wieder Das Problehm habe das die user sich dann einfach mal auf meinem root umkucken.

Wie heißt es so schön Ich steh im wat und komm nicht weiter:)

Würde mich Freuen wenn euch irgendwas Einfallen würde.
So jetzt aber schluss mit schreiben. ich muss das noch irgendwie zum laufen beckommen.

gruß Opi62
 
Ja in die server log schreibt er
Code:
---------- Loaded log file: "server_log.txt". ---------- SA:MP Dedicated Server ---------------------- v0.2X, (C)2005-2008 SA:MP Team Unable to exec file 'server.cfg'. Error: Your password must be changed from the default password, please change it.
Also die selbe ausgabe wie im browser.
 
Endich hab ich es geschafft.
Das problehm lag darin das er die exe startet aber die CFG und die ememods ordner nicht laden konnte. das habe ich jetzt so gelöst das ich die CFG und den Gamemods ordner einfach in den Ordner der start dastei geschoben habe.

Und da kommt schon wieder das nächste Problehm. wo ich nicht weiter weiß und zwar wenn er den Server Startet per PHP lädt er die seite unendlich weiter und verhindert so das ich den ECHO mit dem text server online ausgiebt.

Und was noch Komisch ist ist das die cpu auslastung dann durchgehnd bei 100% liegt. wenn ich den server aber normal ohne php starte habe ich eine cpu auslastung von 1% bis 6%.

Villeicht habt ihr ja eine idee wie ich das mit der CPU auslastung und dem Dauerhaften laden der seite unterbinden kann.

Mir ist da die idee gekommen einfach eine konsole mit php zu realisieren.
Doch da fehlen mir ein bischen die ansätze wie ich dies am besten realisieren könnte.

Ich denke mal der Vorteil wäre das dann die CFG und der gamemods ordner nur noch im ordner des server vorhanden sind und nicht auf dem root dir von den php datei, und so müsste es eigendlich klappen denke ich mir einfach mal so das er dann auch nicht mehr so eine hohe CPU auslasstung hat.

Sorry wegen schreibweiße. aber ich sollte gleich mal ins bett gehn.

Aber hier noch der code wie ich es zum laufen gebracht habe.
PHP:
<?php
	shell_exec('c:\samp\samp-server.exe');
	echo "Server Wurde Gestartet";
?>
 
Das "Problem" mit shell_exec ist, dass es singulär mit bis zum Ende der entsprechenden Operation läuft. Das bedeutet, dass auf das Ende des SAMP-Prozesses gewartet wird, und währenddessen das Script nicht weiter verarbeitet wird.
Abhilfe würde es schaffen, den Prozess im Hintergrund zu starten (über einen Proxy, welcher die eigentliche Aktivität des neuen Prozesses verbirgt). Habe selbst damit bisher nicht gearbeitet, und die PHP-Doku ist auch etwas spärlich. Eventuell hilft dir ein Blick in die Liste bekannter Process Control Erweiterungen für PHP (PCNTL Beispiele auf Hudzilla).

Und einfacher sollte es sogar mit [phpf]popen[/phpf] gehen, wie mir gerade auffällt. Du solltest beim Einsatz der process-Funktionen lediglich darauf achten, nicht auf das Prozessende zu warten.
 
Danke für deinen rat.
Ich habe ja auch schon bei php.net nachgesehn und mir das mit popen() auch schon ausprobiert.

Nur leider hat das nicht funktioniert.
Aber das ich ja eh nix besserres zu tun habe werde ich mich mal für alle user drann setzten und mal kucken das ich ein Kleines tutorial Drüber schreiben kann wenn das alles klappt. Ich denke mir einfach mal das das Wohl für alle die mit php arbeiten Eine interresannte sache sein könnte.

Ich denk mir einfach mal das sowas doch irgendwie realisierbar sein muss. denn es giebt ja auch andere webinterfaces die es auch können.

Ich habe mir natürlich auch schon andere angesehn.
Und musste bei manchen mit entsetzen Festellen das es mit flash und Action Script Realisiert wurde.

Aber da ich keine lust hab im moment noch eine Sprache zu lernen mache ich es lieber mit php. Da kenn ich mir wenigstens sicher sein das ich eine lösung finde. denn mann lernt ja keine Neue Programier Sprache inerhalb von 5 minuten.

Gruß Opi62
 
Also ich muss schon sagen. Was haben sich die php erfinder dabei gedacht.?

War ja ne gute idee aber ich muss dich entteuschen.
Denn pcntl ist so wie es ausiht überhaupt nicht zu brauchen.
da selbt alle pcntl() anweisung eine eigene funktion sind die der xampp server einfach nicht mit macht.

Hier mal ein bei spiel.

PHP:
<?php
error_reporting(E_ALL | E_NOTICE); 
ini_set('display_errors','on');

   declare(ticks = 1);

    function signal_handler($signal) {
        print "Caught SIGALRM\n";
        pcntl_alarm(5);
    }

    pcntl_signal(SIGALRM, "signal_handler", true);
    pcntl_alarm(5);
    
    for($signal) 
	{
		$test = "test";
    	echo $test;
    }
?>
Ich glaube zwar nicht das es an mir liegt. ich Würde eher sagen bei dem syntax das da was nicht so ganz richtig sein kann.
Oder ich bin einfach nur zu blöd und übersehe den fehler.

Sagt mit jetzt bitte nicht das ich was übersehn habe.

Und ich muss sagen über pcntl() giebt es wirklich nicht viel zum nachlesen.

Gruß Opi62
 
So jetzt hab ich das mit POPEN().
PHP:
<?php
  error_reporting(E_ALL | E_NOTICE); 
  ini_set('display_errors','on');

$handle = popen('C:/samp/samp-server', 'r');
echo "$handle<br/>" . gettype($handle) . "\n";
echo "server gestartet";
pclose($handle);
?>
Nur leider giebt es immer noch das problehm mit der CPU auslastung. und er beendedt das script nicht nach start des servers.
er lädt es weiter bis ich es beende.

Also langsam weiß ich wirklich nicht mehr weiter was ich noch machen soll.
 
Zurück