Socket-Server - Programme ausführen

Raven280438

Erfahrenes Mitglied
Hi,

ich bin im Moment dabei, ein Client-Server-System mit Sockets zu schreiben.
(Da ich mit Sockets noch nicht gearbeitet habe, nehme ich als Grundlage: http://php.net/manual/de/sockets.examples.php

Der Client soll an den Server verschiedene Befehle schicken, die vom Server ausgeführt werden, und die Rückgabe wieder an den Client gesendet wird.

Mein Problem im Moment: Wie bekomm ich es hin, dass wenn Benutzer1 ein Programm startet, was noch weitere Eingabe erwartet (zB mit "y" noch irgendwas bestätigen), die Eingaben von Benutzer2 nicht berücksichtigt werden.
D.h. kann man beim Ausführen von Befehlen (mit exec, system, proc_open etc.) irgendwie verschiedene "Sessions" zulassen, die sich gegenseitig nicht behindern?



Gruß
 
Wird nicht durch jeden Aufruf von ecex, system, ... auch das Programm neu gestartet (eigene PID)? Ich dachte das wird dann automatisch richtig zugeordnet. Oder hast du mal ein Beipsiel, an dem man das testen könnte?
 
Hi,

ich hab jetzt die ssh2lib ins Auge gefasst.

Erstmal ein simples Beispiel:
PHP:
$connection = ssh2_connect('server', 'port');
ssh2_auth_password($connection, 'ssh-user', 'passwort');
$stdio = ssh2_shell($connection,"xterm");

fwrite($stdio,"dir\n");

// For some obscur reasons, just after ur command, u need to make a sleep to be sure, that the command has reached the server and is running
sleep(1);

        
// Then u can fetch the stream to see what happens on stdio
while($line = fgets($stdio)) {
 flush();
 echo $line."<br />";
}

fclose($stdio);

Ist es jetzt irgendwie möglich, die $connection und $stdio über den Seitenreload hinweg zu speichern?
Dass man auch Befehle ausführen kann, die zB mehrere Eingaben benötigen.
(zB ein Programm, bei dem man nochmal was bestätigen muss)


Gruß
 
Vielleicht geht das irgendwie.
Aber wäre es nicht sinniger, einfach im PHP-Programm zu warten? Du baust eine whileschleife (am besten mit einem sleep() am ende) und liest jeweils die ausgabe des programms. Wenn die bestätigungsabfrage erscheint sendest du die bestätigung zum server und verlässt die schleife.
 
Zurück