<?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();
$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();