public function testListensForEvents()
 {
     $listener = new EventListener();
     $es = fopen('php://memory', 'w+');
     $is = fopen('php://memory', 'w+');
     $os = fopen('php://memory', 'w+');
     $listener->setErrorStream($es)->setOutputStream($os)->setInputStream($is);
     // Make sure blank lines are ignored
     fwrite($is, "\n");
     fwrite($is, "ver:3.0 server:supervisor serial:313 pool:event_listener poolserial:313 eventname:TICK_5 len:15\n");
     fwrite($is, "when:1313021985");
     fwrite($is, "ver:3.0 server:supervisor serial:313 pool:event_listener poolserial:313 eventname:TICK_60 len:15\n");
     fwrite($is, "when:1313021990");
     fwrite($is, "ver:3.0 server:supervisor serial:313 pool:event_listener poolserial:313 eventname:TICK_3600 len:15\n");
     fwrite($is, "when:1313021995");
     rewind($is);
     $total = 0;
     $listener->listen(function (EventListener $listener, EventNotification $event) use(&$total) {
         $listener->log((string) $event);
         if (++$total == 1) {
             return true;
         } else {
             if ($total == 2) {
                 return false;
             } else {
                 return 'quit';
             }
         }
     });
     rewind($es);
     rewind($os);
     // Ensure that the correct output was given
     $this->assertEquals("READY\nRESULT 2\nOKREADY\nRESULT 4\nFAILREADY\n", stream_get_contents($os));
     // Ensure that the messages were logged properly
     $this->assertEquals(6, count(explode("\n", trim(stream_get_contents($es)))));
     // Make sure the entire stream was read
     $this->assertEquals('', stream_get_contents($is));
 }
Beispiel #2
0
<?php

/**
 * Here is a simple example of creating a supervisor event listener
 */
require_once __DIR__ . '/../vendor/autoload.php';
use Mtdowling\Supervisor\EventListener;
use Mtdowling\Supervisor\EventNotification;
$listener = new EventListener();
$listener->listen(function (EventListener $listener, EventNotification $event) {
    // Log information about the event
    $listener->log($event->getEventName());
    $listener->log($event->getServer());
    $listener->log($event->getPool());
    // Try messing around with supervisorctl to restart processes and see what
    // data is available
    $listener->log(var_export($event->getData(), true));
    return true;
});