Ankündigung

Einklappen
Keine Ankündigung bisher.

In STDOUT seeken?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • In STDOUT seeken?

    Hallo,

    gibt es eine Möglichkeit in STDOUT zu seeken, um an eine bestimmte Position xy etwas zu schreiben? Wenn das nicht möglich ist, kann man ein Steuerzeichen (z.B. "^H") senden? Es ist ja möglich mit PHP Farben über Steuerzeichen zu setzen.

    Danke schonmal für eure Hilfe!

    Gruß
    Tim
    Betriebssystem: Ubuntu 7.10, Kernel v2.6.24-8-generic
    Webserver: LightTPD v1.4.13, PHP v5.2.4 + FastCGI + MySQLi v5.0.51a

  • #2
    Hallo,

    nochmal von vorne... an eine Position xy etwas zu schreiben ist sowieso nicht möglich. Außer Du platzierst die Ausgabe mit CSS, was dann wenig mit PHP zu tun hat.

    Wie und wo willst du denn so ein Steuerzeichen senden? ^H steht ja - wenn ich mal meine bescheidenen C-Kenntnisse auspacke für ein "Backspace".
    Solltest Dich doch nochmals mit der Logik des PHP-Parsers und der Ausgabe beschäftigen. Farben (??!) haben in der PHP-Logik sowieso gar nichts verloren.

    Auf STDOUT kannst du (meines Wissens) nur zugreifen, wenn du die Ausgabe in den Cache schreibst (ob_start()) und dann die Cache-Funktionen benutzt.

    Gruß

    Kommentar


    • #3
      Hallo,

      danke für die schnelle Antwort.

      an eine Position xy etwas zu schreiben ist sowieso nicht möglich. Außer Du platzierst die Ausgabe mit CSS, was dann wenig mit PHP zu tun hat.
      Der Browser soll den Output nicht interpretieren, sondern das Terminal. Das Problem hat nichts mit PHP zu tun. Vielleicht wäre es besser gewesen, wenn ich in einem Bash Forum nachgefragt hätte. Den Grund, warum ich die Frage hier gestellt habe war, dass ich dachte, man könnte die PHP Funktionen einfach verwenden, um an eine bestimmte Position zu "seeken". Es ist nämlich möglich der Funktion "fopen" STDOUT als Filepointer zu übergeben. Bei Dateien, die mit fopen() geöffnet wurden, kann man fseek() verwenden.

      Solltest Dich doch nochmals mit der Logik des PHP-Parsers und der Ausgabe beschäftigen.
      Ja, werde ich machen. Kannst du mir eine Webseite empfehlen?

      Auf STDOUT kannst du (meines Wissens) nur zugreifen, wenn du die Ausgabe in den Cache schreibst (ob_start()) und dann die Cache-Funktionen benutzt.
      Wird ob_start() nicht zum Buffering des Outputs verwendet? Der Output wird abgefangen, und kann bspw. direkt einer Callback-Funktion übergeben (ob_start('callback') werden oder als Rückgabewert verwendet werden ($value = ob_start(). Hat PHP bereits nativ Caching-Funktionen integriert? Ich habe davon gehört, dass man über eine Extension diese Funktionalität "nachrüsten" kann. Für meine Caching-Klasse verwende ich allerdings Output Buffering.

      Ich habe im Bash Prompt HOWTO die Lösung zu meinem Problem gefunden. Es ist möglich über Steuerzeichen, die Position des Cursors festzulegen. Hier ein kleines Beispiel:

      PHP-Code:
      <?php

      //Farben: [url]http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html[/url]
      //Cursor: [url]http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x361.html[/url]

      define ('BLUE'"\033[0;34m");
      define ('RED' "\033[0;31m");

      //Fensterinhalt leeren
      echo "\033[2J";

      //Cursor an Position xy setzen
      $x 5;
      $y 5;
      echo 
      "\033[$x;${y}H";

      //blauer Text
      echo BLUE 'blau';
      echo 
      "\r\n";

      //roter Text
      echo RED  'rot';
      echo 
      "\r\n";

      //Farbe aufheben und Zeilenumbruch
      echo "\033[0m";
      echo 
      "\r\n";

      ?>
      Gruß
      Tim
      Betriebssystem: Ubuntu 7.10, Kernel v2.6.24-8-generic
      Webserver: LightTPD v1.4.13, PHP v5.2.4 + FastCGI + MySQLi v5.0.51a

      Kommentar


      • #4
        Das Problem bei deiner Lösung ist, dass das nur mit xterm - oder dem Terminaltyp, für den du die Steuerzeichen gerade programmierst - funktioniert. Damit die Funktion terminal-unabhängig ist, musst du ncurses oder oder ähnliche Funktionen verwenden. Ich habe damit aber auch noch kaum Erfahrung und die Doku ist nicht gerade erhebend.
        Diese machen natürlich nur Sinn bei Scripts, die ohne Browser laufen. @pepe24: Bei diesen kann auch nichts mit CSS oder HTML gesteuert werden.
        Gruss
        L

        Kommentar


        • #5
          Genial! Genau sowas habe ich gesucht! Vielen Dank!
          Zur Dokumentation: Noch schlimmer finde ich die cURL Dokumentation. Ich habe Tage gebraucht, um den Grund zu finden, weshalb cURL keine Dateien über multipart/form-data hochladen konnte. In der Dokumentation wurde diese Option gar nicht erst erwähnt. In einer Contribution auf php.net bin ich auf die Funktionalität aufmerksam geworden. Das Problem war, dass der KOMPLETTE Pfad zur Datei angeben musste. Bei ncurses gibt es bereits sehr gute Programmierbeispiele in den Contributions. ncurses ist richtiger Komfort, wenn man bedenkt, mit welchen Mitteln man dort ein Fenster geleert hatte, ohne die genaue Höhe zu wissen.
          Ich wollte mir eine kleines Script schreiben, um meinen Server über Telnet zu administrieren (Backups, Filemanager, etc.). Dafür habe ich mir überlegt eine Terminal-GUI-Klasse zu schreiben. Das "Design" ist in einer XML Datei gespeichert. Derzeit bin ich noch am Überlegen, wie ich einen GUI Designer schreiben werde. Die schnellste Möglichkeit wäre wohl "AJAX".

          Gruß
          Tim
          Betriebssystem: Ubuntu 7.10, Kernel v2.6.24-8-generic
          Webserver: LightTPD v1.4.13, PHP v5.2.4 + FastCGI + MySQLi v5.0.51a

          Kommentar


          • #6
            Wenn du ein Fenster/Ajax-Framework suchst (für Web), schau dir mal qooxdoo an.
            http://www.qooxdoo.org

            Kommentar


            • #7
              Diese machen natürlich nur bei Scripts, die ohne Browser laufen.
              Ups! Bildungslücke... Ich nehme alles zurück und behaupte das Gegenteil.

              Kommentar


              • #8
                Danke für den Tipp. Mir ist qooxdoo bekannt. Es wird sogar von GMX verwendet. Für meine Zwecke ist qooxdoo etwas zu mächtig und ich verwende schon seit längerer Zeit jQuery, womit ich auch sehr zufrieden bin.

                Gruß
                Tim
                Betriebssystem: Ubuntu 7.10, Kernel v2.6.24-8-generic
                Webserver: LightTPD v1.4.13, PHP v5.2.4 + FastCGI + MySQLi v5.0.51a

                Kommentar

                Lädt...
                X