Autor Beitrag
Nano-Ware
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 7



BeitragVerfasst: Do 23.06.11 18:15 
Hey,

ich möchte gern per PHP einen Server starten. Ich hab das unter Windows mit exec('abc.exe'); gemacht. Der Server startet auch, aber der PHP Script läd und läd.. Ist ja auch klar er wartet ja darauf, dass die Anwendung beendet wird, das wird sie aber ja nicht.
Das ist Problem 1.

Jetzt möchte ich mit einer 2. PHP Datei die Ausgaben der Konsole (Gameserver) per echo ausgeben. Nur wie das geht weiß ich garnicht. Das Prinzip ist folgendes:

*/start.php -> startet den Server
---------------------------------
*/read.php -> gibt den aktuellen Stand der Konsole aus, also den gesammten Text der Konsole.

Ist das überhaupt realisierbar? Es ist eigentlich doch recht wichtig das zu schaffen.


Ich hab mit XAMPP unter Windows experimentiert und habs geschafft mit ner vorgeschalteten *.bat Datei die exe zu starten. Ich glaub allerdings kaum, dass man jetzt noch mit einem PHP-Script den Inhalt der Konsole auslesen kann oder?

<?php
exec('abc.bat);
?>

-abc.bat

start abc.exe



Danke


Moderiert von user profile iconChristian S.: Topic aus Off Topic verschoben am So 15.07.2012 um 12:54
Niko S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 566
Erhaltene Danke: 10

Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
BeitragVerfasst: Do 23.06.11 20:57 
Häng den Output an eine Datei und lies die Datei aus.
Nano-Ware Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 7



BeitragVerfasst: Do 23.06.11 23:02 
Könntest du mir einen Beispielcode in PHP geben? Ich kann nämlich nur mit PHP arbeiten alle anderen Möglichkeiten bleiben mir verwehrt.

Nur, dass ich es gesagt hab (; ich will nicht dass ihr meine Programme schreibt, aber ich stehe hier seit langem vor einem Problem...

Danke (:
Niko S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 566
Erhaltene Danke: 10

Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
BeitragVerfasst: Do 23.06.11 23:06 
Ich glaub in windows geht das "app.exe > logdatei.log" bin mir aber nicht ganz sicher.
Und Auslesen einer Datei findest du ja zu hauf im Netz. www.schattenbaum.net/php/datei.php
Nano-Ware Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 7



BeitragVerfasst: Fr 24.06.11 01:31 
Ich hab das so in die exec Funktion geschrieben und eine Sache klappt schonmal, er erstellt die log-Datei und schreibt die Ausgabe rein (: Allerdings läd die "start.php" trotzdem unendlich weiter..
Das gute ist, schließe ich jetzt den Tab, in dem die PHP Datei so lange läd, loggt er trotzdem weiter. Wie lange loggt die Apache denn jetzt noch die Anwendung? Oder wird die jetzt "unendlich" lang geloggt bis die exe geschlossen wird?

Aber vorher: Ich hab die Frage auch schonmal vor 2 Wochen in nem anderen Forum gefragt und da kam nur Müll.. Ich bin dir wirklich total dankbar!

Jetzt muss ich nur noch die Sache mit dem "unendlichem" Laden in den Griff bekommen, weil exec() ja solange läd, bis die Anwendung/Befehl beendet ist. Aber eigentlich möchte ich die Anwendung ja nur starten und loggen.

EDIT:// Der PHP Script soll ja auch unter Linux laufen, wie sieht das da mit dem app.exe > log.txt aus?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 24.06.11 02:04 
Unter Linux gibts keine .exe Dateien. :D

Was das asynchrone Ausführen angeht:
stackoverflow.com/qu...us-shell-exec-in-php
Nano-Ware Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 7



BeitragVerfasst: Fr 24.06.11 10:35 
Das war mir klar (: Ich wollte nur wissen, wie ich ne Linux Anwendung ausführen kann, und genauso wie ichs jetzt bei Windows hab ne Log-Datei erstellen kann.

Es haben sich jetzt allerdings doch noch Fragen gestellt. Wenn der Server 24h/7 läuft wird die Log-Datei wohl schnell sehr groß. Gibt es eine Möglichkeit, ohne den Server zu beenden mit PHP die logdatei zu bereinigen? Also, dass diese einfach da weiter loggt wo sie aufgehört hat?
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Fr 24.06.11 11:04 
Dein Gamesserver erstellt doch(zu mindestens bei die, die ich kenne ET COD4 usw) automatisch ne log.
Wenn die maxgrösse erreicht ist, wird eine neue erstellt und die andere gezippt.

Allerdings kannst Du die Daten selber auslesen, über udp und brauchst nicht die Log datei. Schau dier mal HLSW an, die machen auch nichts anderes!

Gruss Alf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
Nano-Ware Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 7



BeitragVerfasst: Fr 24.06.11 12:46 
Mein Server erstellt nicht automatisch ne Log-Datei und die Infos die ich will bekomm ich nicht per UDP Zugriff (:
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Fr 24.06.11 13:27 
mh...

Wenn (unter Windows) deine Exe keine Rückmeldung nach aussen gibt als Server, hast Du ja nur die Möglichkeit zu prüfen im Taskmanager ob das Prog läuft oder abgeschmiert ist. Denn das reine ausführen über eine .bat mit Parameter bringt dir ja nix. Das sagt ja nix aus.

Unter Linux genau das selbe. Dort kannst Du zwar mit pipes die Meldung vom System abfragen ob der Prog, Server gesartet ist, aber das wars dann auch schon. Ob Dein Server richtig läuft, merkst Du eh erst wenn Du dann damit was machen willst.

Also bleibt Dir eh nur, Start Stop evtl noch Status als parameter ob er noch aktiv ist, und das war es.
Alles andere müsste nähmlich dein Server selbst liefern.

Gruss Alf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
Nano-Ware Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 7



BeitragVerfasst: Fr 24.06.11 14:37 
Oben hat doch jemand die methode "app.exe > log.txt" gepostet. Ich kann aus dieser log.txt alles auslesen was ich brauch. Aber die muss halt erstellt werden und eventuell auch ab und zu geleer denn wenn jemand mal die Log-Datei von nem anderen Rechner analysieren will und erst 2GB Text herunterladen und analysieren muss ist das nicht der sinn der sache (:
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Fr 24.06.11 15:42 
Na wenn Du ne log hast, dann liefert der Sever das was Du brauchst. Du hast es nur nicht ausgelesen, wenn ich es richtig verstanden habe.
Unter Linux weiss ich, kann man sogar filtern was in der Log stehen soll bzw wie gross sie sein soll. Wie das unter Windows ist hab ich noch nichts gesehen.
Was die Grösse angeht, das haben Server logs nun mal so an sich.
Allerdings ist es doch so, wenn kein Zugriff auf den Server wird auch nichts geschrieben.
Oder sollte es bei Dir anders sein?

Gruss Alf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
MDX
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 595
Erhaltene Danke: 4

Windows 8.1, Linux Debian 8, Android Lollipop
Delphi, PHP, Java (Android)
BeitragVerfasst: Sa 25.06.11 16:09 
Wäre praktisch wenn du mal schreiben würdest was das für eine Gameserver ist :lol: