Esempio n. 1
1
 public function process(LooPHP_EventLoop $event_loop, $timeout)
 {
     $read_resource_array = $this->_socket_array;
     $write_resource_array = NULL;
     $exception_resource_array = $this->_socket_array;
     $results = socket_select($read_resource_array, $write_resource_array, $exception_resource_array, is_null($timeout) ? NULL : floor($timeout), is_null($timeout) ? NULL : fmod($timeout, 1) * 1000000);
     if ($results === FALSE) {
         throw new Exception("stream_select failed");
     } else {
         if ($results > 0) {
             foreach ($read_resource_array as $read_resource) {
                 if ($this->_listen_socket === $read_resource) {
                     $client_resource = @socket_accept($this->_listen_socket);
                     $this->_socket_array[(int) $client_resource] = $client_resource;
                 } else {
                     //send http responce in 5 second (just to demo events)
                     $event_loop->addEvent(function () use($read_resource) {
                         $send_data = "HTTP/1.0 200 OK\n" . "Content-Type: text/html\n" . "Server: LooPHP" . "\r\n\r\n" . "<body>Hello World</body>";
                         socket_write($read_resource, $send_data);
                         socket_close($read_resource);
                     }, 5);
                     unset($this->_socket_array[(int) $read_resource]);
                 }
             }
             foreach ($exception_resource_array as $exception_resource) {
                 print "Socket had exception\n";
                 unset($this->_socket_array[(int) $exception_resource]);
             }
         }
     }
     return TRUE;
 }
Esempio n. 2
0
<?php

require dirname(dirname(__FILE__)) . "/LooPHP/Autoload.php";
LooPHP_Autoload::register();
$loop = new LooPHP_EventLoop();
for ($i = 0; $i < 100000; $i++) {
    $loop->addEvent(function () {
    });
}
$loop->run();
Esempio n. 3
0
<?php

require dirname(dirname(__FILE__)) . "/LooPHP/Autoload.php";
LooPHP_Autoload::register();
$loop = new LooPHP_EventLoop();
$target_time = microtime(TRUE) + 0;
for ($i = 0; $i < 100000; $i++) {
    $loop->addEvent(function () {
    }, $target_time - microtime(TRUE));
}
$loop->run();
Esempio n. 4
0
<?php

require dirname(dirname(__FILE__)) . "/LooPHP/Autoload.php";
LooPHP_Autoload::register();
$loop = new LooPHP_EventLoop();
$add_event = function ($loop) use(&$add_event) {
    static $i = 0;
    if (++$i >= 100000) {
        return;
    }
    $loop->addEvent($add_event);
};
$add_event($loop);
$loop->run();
Esempio n. 5
0
<?php

require dirname(dirname(__FILE__)) . "/LooPHP/Autoload.php";
LooPHP_Autoloader::register();
$loop = new LooPHP_EventLoop();
$loop->addEvent(function () {
    print "Event 1\n";
}, 1);
$loop->addEvent(function ($loop) {
    print "Event 3\n";
    print "Adding Event 6\n";
    $loop->addEvent(function () {
        print "Event 6\n";
    }, 3);
}, 3);
$event_4 = $loop->addEvent(function () {
    print "Event 4\n";
}, 4);
$loop->addEvent(function () use($event_4) {
    print "Event 2\n";
    print "Cancelling Event 4\n";
    $event_4->cancel();
}, 2);
$loop->addEvent(function () {
    print "Event 5\n";
}, 5);
print "Starting Run Loop:\n";
$loop->run();
Esempio n. 6
0
<?php

require dirname(dirname(__FILE__)) . "/LooPHP/Autoload.php";
LooPHP_Autoloader::register();
$multi_event_source = new LooPHP_EventSourceMulti(array(array(function () {
    static $i = 0;
    usleep(100000);
    return (string) ++$i . "\n";
}, function ($input, $loophp) {
    print $input;
}), array(function () {
    static $i = 0;
    usleep(100000);
    return (string) ++$i . "\n";
}, function ($input, $loophp) {
    print $input;
})));
$loop = new LooPHP_EventLoop($multi_event_source);
$loop->run();