Pausieren des Skripts bei system()-Aufruf auf Win32 vermeiden?

l0c4lh05t

Erfahrenes Mitglied
Hi,

nach recht langer Zeit habe ich mal wieder ein Problem mit PHP, für dessen Lösung ich euch unbedingt brauche :P

Also, ich führe ein Skript aus der Eingabeaufforderung (also das Windows Terminal aka Konsole, oder wie auch immer) aus. Das Skript habe ich auch extra für die Ausführung mit PHP CLI auf einem Windows Rechner geschrieben. Mein Problem ist, dass wenn ich system();, passthru();, exec(); usw. benutze, um ein Programm aufzurufen, das Skript solange pausiert wird, bis das aufgerufene Programm geschlossen wurde.

Wie kann ich das auf einem Windows Rechner vermeiden?

Danke!
 
ich meine mich da an start oder call zu erinnern, habe aber selbst seit einigen Jahren nicht mehr für die Dos/Windows Konsole programmiert. Probiers mal mit help an der Konsole, dann bekommst Du ja alle Befehle und dann such mal zu start oder call.

Ich hoffe es hilft.

Viele Grüße
jrook
 
Egal ob dein Problem jetzt gelöst ist oder wie auch immer, mich würde mal interessieren, was genau du vorhast. So wie ich das jetzt verstanden habe:
Ein PHP-Script in der Windows-Konsole ausführen (also einfach cmd.exe?). Aber die dürfte doch nicht mit PHP-Befehlen klarkommen?
Oder hast du das PHP-Script mit einem Compiler zu einer EXE kompiliert die dann über Konsole läuft?
Oder rufst du nur irgendwas über die Konsole auf, was dann das PHP-Script ausführt?

Finde ich jetzt mal interessant =)
 
Man kann PHP-Skripte auch einfach über die "cmd.exe" ausführen, vorausgesetzt man hat den PHP Interpreter.

Aber die dürfte doch nicht mit PHP-Befehlen klarkommen?
Wieso denn nicht? Klick: PHP CLI ^^

Oder hast du das PHP-Script mit einem Compiler zu einer EXE kompiliert die dann über Konsole läuft?
AFAIK kann man PHP-Skripte nicht kompilieren, höchstens embedden. Das geschieht mit Tools wie zmake (dann musst du aber eine .dll und die php.ini mitverteilen) oder bamcompile (und der unterstützt nur php4 - und der Name täuscht, er müsste eigentlich bamembedder heißen). Der Typ der Zmake (oder ein vergleichbares Tool) geschrieben hat, der hat dafür auch ein Web-Interface gemacht: php2exe.com, die Seite ist nun allerdings down.

Back to topic: Konnte die Lösung meines Problems noch nicht finden (auf Linux ist's kein Problem, nur auf Win32).

Edit: Aber jrook hat mich auf eine Idee gebracht, das Problem minder geschickt zu umgehen. Mit dem PHP-Skript eine Batch-Datei erstellen und das via system(); o.ä. aufrufen, denn das Batch-Skript schließt sich nach ausführen des Programms. Aber gibt es keine elegantere Lösung?
 
Zuletzt bearbeitet:
Ja ich weiß das schon, habe auch mal versucht mit irgendso einem Ding, was mir dann die ganze PHP-Lib, den Interpreter und mein Script in ne EXE gepackt hat, aber das war nicht so wirklich das wahre, da nehme ich dann doch gleich lieber C# oder C++.

Und wenn du einen Interpreter aufrufst über die Konsole, dann hätte ich das anders beschrieben, z.B. "Ich lasse das Script von meinem PHP-Interpreter durchlaufen, der nur eine Konsolen-Ausgabe besitzt", das war also nur ein Missverständnis.
Ich dachte du hättest es irgendwie so hingebastelt, dass die Windows-Konsole anstatt nur mit den Dos/Batch-Befehlen auch PHP-Code laufen lassen kann, das wäre dann doch schon mal interessant...
 
Ja ich weiß das schon, habe auch mal versucht mit irgendso einem Ding, was mir dann die ganze PHP-Lib, den Interpreter und mein Script in ne EXE gepackt hat, aber das war nicht so wirklich das wahre, da nehme ich dann doch gleich lieber C# oder C++.

Und wenn du einen Interpreter aufrufst über die Konsole, dann hätte ich das anders beschrieben, z.B. "Ich lasse das Script von meinem PHP-Interpreter durchlaufen, der nur eine Konsolen-Ausgabe besitzt", das war also nur ein Missverständnis.
Ich dachte du hättest es irgendwie so hingebastelt, dass die Windows-Konsole anstatt nur mit den Dos/Batch-Befehlen auch PHP-Code laufen lassen kann, das wäre dann doch schon mal interessant...

Missverständnis, ja. Einsicht, dass ich etwas falsch beschrieben habe, nein. Noch nicht einmal beim zweiten Durchlesen :rolleyes:
Ordentlich geschriebene PHP-Skripte haben bei mir einen höheren Stellenwert, als schlecht/unsauber geschriebene C++ Programme (von "Sprachen" wie vB/C#/Java *hust* ganz zu schweigen).

Und mal ehrlich, was erwartest du?
Dass wenn du PHP-Skripte über die Konsole aufrufst plötzlich die ganzen Funktionen von C++ in dem Skript benutzen kannst?
 
Zuletzt bearbeitet:
Ich habe ja nicht gesagt, dass du irgendwas falsch beschrieben hast. Ich hätte es nur anders beschrieben und da für mich die Windows-Konsole cmd.exe ist, was nicht viel weiter kann als andere kleine Tools in system32 aufzurufen (wenn man die normalen Befehle benutzt), habe ich das irgendwie falsch interpretiert. No offence!
 
Und zweifelst du etwa meinen C#/C++ Programmierstil an?^^ Ich glaube der ist, wenn ich mit dem Projekt fertig bin und noch mal drüber gehe und alles ordne, sogar ziemlich nah am Grad der 100%-igen Perfektion angelangt, die Leute von Microsoft sehen das zumindest so :P

Das mit dem ÜberZaun versteh ich ja, offence is aba so richtig und wenn man in einem englisch-sprachigen Land lebt, gewöhnt man sich eben solche Sachen an... aber was is (j/k)?^^ Nur um die Allgemeinbildung zu fördern...
 
Zuletzt bearbeitet:
Nein! Ich zweifel nicht deinen Programmierstil an, sondern meinen.
Und wenn du die "Sprachen" vB, C# oder Java erwähnst, dann kriege ich schon wieder mittlere Tobsucht.

Ich kannte diese Schreibweise noch nicht, die mit dem "c" in der Mitte. Das ist die Britische, die ich zwar in der Schule lerne, mir aber auch sehr schnell versuche abzugewöhnen.
No = Kein, Of = Über, fence = Zaun bzw. Gitter.
 
Zurück