PHP - Konsole

Status
Nicht offen für weitere Antworten.

Nino14

Erfahrenes Mitglied
heey erstmal möchte ich mich für die tolle Hilfe die ich in diesem Forum schon bekommen habe bedanken.

Aber nun zu meinem Problem. Ich möchte meinen Administrationsbereich mit einer Konsole versehen. Das heißt ich möchte ein Input Feld zur eingabe verwenden.

Zu meiner Überlegung der Realisierung:
Das ganze System soll aus zwei Dateien bestehen die per Frame nebeneinander gelegt werden, so das es wie eine Seite aussieht.
Eine Datei enthält eine Schleife die dauerhaft läuft und prüft ob die $_SESSION['befehl'] vorhanden ist. Ist die Variable vorhanden zerlege ich ihn erst per explodeI(); und jage den Befehl dann durch eine switch Abfrage. Je nach befehl wird dann die entsprechende Funktion aufgerufen. Am ende wird die Session wieder gelöscht.

Die Zweite Datei enthält das Input Feld in welches der Befehl eingetragen wird. Das Formular sendet sich an die selbe Datei ab und schreibt den Befehl in die Session.

Das ist meine Überlegung zu dem Thema. Leider habe ich volgendes Problem bei der Schleife. Ich habe versucht es über eine while schleife zu realisieren. Leider wird durch diese Schleife die volle Auslastung meines Systems bewirkt und so kann ich das Formular nichtmal mehr abschicken.
Meine Frage an euch: Gibt es andere Schleifen die nicht so eine hohe Auslastung bringen oder gibt es eine Möglichleit die while schleife zu beschränken?

Oder eventuell ist das ja absoluter Müll was ich mir überlegt habe und jemand anders hat ne viel bessere Idee.

Ich bin echt dankbar für jede Antwort die ich bekomme.

LG Nikolas Meyer
 
Nein.
Denn das was du da vorhast, ist eine Endlosschleife. Und dafür ist PHP (soweit ich weiß) nicht konzipiert.
Benutze einfach AJAX als Mittler oder arbeite einfach ganz normal mit einem Formular, wo das Absenden eben an den "Konsolenframe" geschickt wird.
 
also ich habe schonmal eine klasse auf meinem pc die auch eine endloschschleife enthielt und das system lief ohne probleme Weiter. Ein server in php geschrieben arbeitet doch auch mit einer Endloschleife und da klappt es ja auch...
 
Endlosschleifen funktionieren bei mir jedenfalls nicht nicht auf dem lokalen server wie auch auf dem Webserver da in der php.ini ja der befehl max_execution_time deklariert ist :)
 
nun ja deine frage erübrigt sich wenn man weiß wie PHP Arbeitet...
also sehen wir uns das übliche schema eines webseitenaufrufs an....

client schickt http an server
server schikt http an client

so nun um PHP erweitert...

client schickt http an server
server liest datei und parsed PHP
reine HTML DAtei (ohne PHP-CODE weil der ja schon ausgeführt wurde) vom server via HTTP an den Client...

im normalfall macht man sowas wenn man nur PHP nutzen will so, das man eine Formularseite(HTML) hat die die eingabe an eine anwendung übergibt via post oder get... diese anwendung (PHP-Script) wird mit ankunft der get/post abfrage gestartet und liefert etwas zurück -> das ergebnis wird via http wieder an den client gesendet (thema returncode) als ergebnis kann eine ganze webseite zurückgeschickt werden ...

nun ja jeder fängt mal an aber bevor man loslegt sollte man sich schon a bissl informieren wie da so eine programm anläuft btw. wo ein programm abläuft... JS läuft ja auf dem rechner des Clients ....
 
nun ja jeder fängt mal an aber bevor man loslegt sollte man sich schon a bissl informieren wie da so eine programm anläuft btw. wo ein programm abläuft... JS läuft ja auf dem rechner des Clients ....

also erstens bin ich kein Anfänger! Und zweitens steht in meinem Post auch drinnen das das eine theoretische Überlegung ist und es auch absoluter müll sein könnte...

deine Aussage klingt logisch jedoch denk ich grade an ein einfaches Programm:

Code:
while(true)
{
echo "blub<br>";
}

führ das ma aus dann wird das blub auch nicht ers angezeigt wenn das probgramm zu ende gelaufen ist.
 
Ohne JavaScript wird das nix in meinen Augen , am besten wäre es wirklich über Ajax einen Request an den Server zu senden.

While Schleife oder Endlosschleife kannst schon mal vergessen, wenn das eine endlos Schleife ist dann kommt die gar nicht mehr zum Ende und das Programm Ende wird wirklich nie erreicht , naja nach 30 sec gibt es dann, wenn nicht umgestellt, den üblichen time out.

Das dies Konstrukt laufen wird ist klar , die Ausgabe steht ja auch im Funktions Körper alles was nach dem Funktions Körper kommt wird quasi nie erreicht.

Code:
while(true) {
   echo "blubb<br>";
}


Alternativ könnte man mit Frames arbeiten , der obere Frame ist deine Konsole und der untere Frame ist deine Eingabe Zeile , würde aber ein neuladen immer wieder erzwingen überlege eben ob das mit Frames ginge das man nur ein Teil aktualisiert also so komplett ohne JS.

Des 2. wäre ja dann mit Ajax da wäre die Umsetzung "relativ" einfach. Also so ganz komplett ohne JS wirst nicht auskommen denk ich wenn Du nicht neuladen willst oder mit Frames arbeitest.
 
öömm...
wir Haben in der Schule momentan ein kleines Projekt laufen und dort ist acuh eine "Komandozeile" integriert. Allerdings nur um swelber Befehle einzugeben.

Dafür ahben wir uns eine Inputbox gebastelt, diese Fürt den eingegebenen Befehl direkt aus. (sichertheit wird mit einem Log In realisiert)
 
Es geht ja gar nicht um die Kommandozeile, sondern um die Art und Weise wie das Skript den Input der Kommandozeile akzeptiert.
Wenn sie nur auf den HTTP Request reagiert (oder eben auf einen asynchronen Request durch JS) ist das in Ordnung. Aber in einer Endlosschleife wird das nichts.
 
okee dann bleibt mir wohl nichts anderes übrig als euch das mit der Endlosschleife zu glauben...

Die ganzen anderen ideen werde ich mir noch genauer durchlesen und testen...

Danke schonmal. Ich denke ich habe nun genug informationen um das script zu gestalten.

Danke
LG Nino
 
Status
Nicht offen für weitere Antworten.
Zurück