Example #1
0
<?php

/**
 * Created by PhpStorm.
 * User: jamlee
 * Date: 2015/10/31
 * Time: 15:39
 */
use Jamlee\Coroutine\Scheduler;
use Jamlee\Coroutine\SystemCall;
require '../vendor/autoload.php';
function task()
{
    try {
        (yield SystemCall::killTask(500));
    } catch (Exception $e) {
        echo 'Tried to kill task 500 but failed: ', $e->getMessage(), "\n";
    }
}
$scheduler = new Scheduler();
$scheduler::$debug = true;
$scheduler->newTask(task());
$scheduler->run();
Example #2
0
    $socket = @stream_socket_server("tcp://localhost:{$port}", $errNo, $errStr);
    if (!$socket) {
        throw new Exception($errStr, $errNo);
    }
    stream_set_blocking($socket, 0);
    $socket = new CoSocket($socket);
    while (true) {
        (yield SystemCall::newTask(handleClient((yield $socket->accept()))));
    }
}
function handleClient($socket)
{
    $data = (yield $socket->read(8192));
    $msg = "Received following request:\n\n{$data}";
    $msgLength = strlen($msg);
    $response = <<<RES
    HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: {$msgLength}
Connection: close


{$msg}
RES;
    (yield $socket->write($response));
    (yield $socket->close());
}
$scheduler = new Scheduler();
$scheduler::$debug = true;
$scheduler->newTask(server(8000));
$scheduler->withIoPoll()->run();