diff --git a/examples/simple.php b/examples/simple.php index 3fbdf4a..603fe4b 100644 --- a/examples/simple.php +++ b/examples/simple.php @@ -26,22 +26,21 @@ class MyShell extends Shell }); $context->addCommand("mycommand", new MyCommand()); $this->updatePrompt(); + + $this->addListener("update", function() { + static $lt; + $t = floor(microtime(true)); + if ($t > $lt) { + $lt = $t + 5; + echo date("Y-m-d h:i:s")."\n"; + } + }); } protected function updatePrompt() { $this->setPrompt("test[{$this->seq}]: "); } - - protected function onUpdate() - { - static $lt; - $t = floor(microtime(true)); - if ($t > $lt) { - $lt = $t + 5; - echo date("Y-m-d h:i:s")."\n"; - } - } protected function onCommand($buffer) { diff --git a/lib/Shell.php b/lib/Shell.php index 03ab2f4..bd4157f 100644 --- a/lib/Shell.php +++ b/lib/Shell.php @@ -261,7 +261,6 @@ class Shell // Update the input stuff, sleep if nothing to do. if (!($buffer = $this->lineReader->update())) { usleep(10000); - continue; } // we get a ^C on ^C, so deal with the ^C. if ($buffer == "\x03") { @@ -270,7 +269,10 @@ class Shell } // Execute the buffer ob_start(); - $this->executeBuffer($buffer); + $this->dispatchEvent("update"); + if ($buffer) { + $this->executeBuffer($buffer); + } $output = ob_get_contents(); ob_end_clean(); @@ -284,7 +286,9 @@ class Shell $this->stop(); } - $this->dispatchEvent("prompt", [ "context"=>$this->context ]); + if ($buffer) { + $this->dispatchEvent("prompt", [ "context"=>$this->context ]); + } } $this->lineReader = null;