php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.03.2006, 06:05  
Benutzer
 
Registriert seit: 13.07.2005
Beiträge: 47
schnurzli
Standard Schleife nach Tastendruck beenden

hallo,

ich habe wieder einmal ein problem mit der passenden schleife...
ich habe versucht, in einem kleinen script, die stdin - fkt zu testen.


Code:
Code:
<?php
$stdin = fopen('php://stdin', 'r');
$line = trim(fgets(STDIN));
if($line = chr(01)){
echo $line;
}
?>
das funktioniert auch soweit. bei drücken von STRG + B und danach ENTER wird das script beendet...

ich habe ein script in einer schleife laufen (socket horcht immer auf eingehende verbindung)
wie spanne ich jetzt eine schleife um dieses script, dass er nur in dem fall $line = chr(01) + Enter aus der schleife hüpft?

mfg
schnurzli ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.03.2006, 13:25  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von schnurzli
das funktioniert auch soweit. bei drücken von STRG + B und danach ENTER wird das script beendet...
Bei Zuweisung eines Wertes, der nicht als FALSE gewertet wird, kein Wunder.
Du meinst wohl $line == chr(2).

Zitat:
Zitat von schnurzli
wie spanne ich jetzt eine schleife um dieses script, dass er nur in dem fall $line = chr(01) + Enter aus der schleife hüpft?
Mir wäre neu, dass ein Kommandozeilenskript gezielt auf Events reagieren
kann. Du könntest höchstens in regelmäßigen Abständen nachfragen, ob die
Abarbeitung fortgesetzt werden soll.

BTW: Wieso baust Du eigentlich eine Verbindung zum stdin-Stream auf, wenn
Du später mit der als Konstante STDIN bereitgestellten Ressource arbeitest?
 
Alt 24.03.2006, 13:33  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 4.651
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

stdin blockiert die fgets Abfrage solange bis eine Tastaturabfrage vorliegt, von daher kannst du das nicht machen, was du vorhast. Wie karl beschrieben hat, kannst du höchstens in regelmäßigen Abständen nachfragen, wirst dann aber blockiert, bis etwas eingegeben wurde.

P.S.: Google ist dein Freund (alternative extensions suchen).
__________________
Entwickler aus Leidenschaft und ein Zahnrad in einem der größten Java-Projekte der Welt.
mepeisen ist offline  
Alt 24.03.2006, 14:03  
Gast
 
Beiträge: n/a
Standard Re: Schleife nach Tastendruck beenden

@schnurzli

Ändere das Konzept "etwas" und verwende das:
http://de2.php.net/pcntl
 
Alt 24.03.2006, 15:44  
Benutzer
 
Registriert seit: 13.07.2005
Beiträge: 47
schnurzli
Standard

@ ignatz
"etwas" ist sehr weitläufig
funkt ja leider nur unter linux...

@ karl-150

du hast recht mein geposteter code war falsch. hab ! vergessen... ich hab es trotzdem nicht hinbekommen. habe aber herausgefunden, dass php einen bug hat. und zwar kommt es derzeit nicht mit STDIN klar - deshalb hatte ich auch diese eigenartige konstellation...

meine nächster versuch wird sein, dass ich das das ganze mit einem textfile mache. wenn in einem textfile "end" steht, dann beendet sich das programm... dies könnte man ja mit einem batchfile lösen...

so als workaround...
schnurzli ist offline  
Alt 24.03.2006, 16:33  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 4.651
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

PHP hat keinen Bug an dieser Stelle. Es verarbeitet stdin lediglich auf eine Weise, die für deine Bedürfnisse nicht hinhauen.
__________________
Entwickler aus Leidenschaft und ein Zahnrad in einem der größten Java-Projekte der Welt.
mepeisen ist offline  
Alt 24.03.2006, 18:05  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von schnurzli
@ ignatz
"etwas" ist sehr weitläufig
PHP ist für evenbasierte Programme ungeeignet.
Zitat:
funkt ja leider nur unter linux...
Linux ist eben der Maßstab und nicht die Zeit zwischen zwei Abstürzen...
 
Alt 24.03.2006, 18:56  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von ignatz
Zitat:
funkt ja leider nur unter linux...
Linux ist eben der Maßstab und nicht die Zeit zwischen zwei Abstürzen...
*gääähn*
imported_Ben ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
For schleife beenden Toby PHP Tipps 2008 32 15.10.2007 11:57
Warum wird die erste Schleife nur einmal durchlaufen ? PHP Tipps 2006 12 03.03.2006 20:04
array als Schleife verwenden cyberholic Datenbanken 6 12.01.2006 13:14
[Erledigt] While schleife in while schleife = nur ein datensatz?! PHP Tipps 2005-2 9 28.10.2005 12:48
Datenbankabfrage in einer Schleife mit DB-Abfrage Datenbanken 3 16.10.2005 21:04
for Schleife -> unterbrechen, Befehl einfügen, fortsetzen PHP Tipps 2005-2 7 10.10.2005 21:05
while schleife in einer while schleife beim tmpl-sys PHP Tipps 2005-2 0 27.07.2005 15:07
While Schleife Beatbox Off-Topic Diskussionen 8 19.05.2005 21:55
while schleife beenden PHP Tipps 2005 3 29.03.2005 20:35
schauderhafte Schleife PHP Tipps 2005 5 16.03.2005 21:47
Verschachteltes If in Schleife PHP Tipps 2005 2 07.03.2005 19:04
IF ELSEIF ELSEIF ELSE mit While Schleife PHP Tipps 2005 9 04.03.2005 23:27
Variabel aus while schleife ausserhalb der schleife nutzen PHP Tipps 2005 8 12.02.2005 18:04
Problem mit ner schleife PHP Tipps 2004-2 3 24.11.2004 10:50
versteh diese do-while schleife nicht PHP Tipps 2004 5 08.09.2004 16:54

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php tastendruck, java schleife bis tastendruck, java tastendruck abfragen, java schleife abbrechen bei tastendruck, java tastendruck, java erst nach tastendruck beenden, while schleife durch enter beenden, abbrechen der endlosschleife mit tastenbefehl, java enter beenden, beende schleife mit enter java, http://www.php.de/php-tipps-2006/38469-schleife-nach-tastendruck-beenden.html, enter drücken zum beenden einer while-schleife, java schleife per taste beenden, linux batch abbruch der schleife bei tastendruck, java schleifen per enter beenden, java abbruch durch tastendruck, java while taste abbruch, schleife mit enter beenden java, java schleife auf tastendruck verlassen, java taste abfragen

Alle Zeitangaben in WEZ +1. Es ist jetzt 13:11 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.