Skip to content
Nuclear Reactor written in zephir for php
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
EventLoop
README.md

README.md

zephir-react

Event-driven, non-blocking I/O with zephir for php.

使用zephir实现异步非阻塞IO的php C扩展框架, 功能实现自reactphp

安装

需要:Libevent;PHP > 5.3; zephir

zephir build
修改你的php.ini并增加react.so

使用

这是一个使用libevent实现的监听8082端口的Tcp Server

<?php
	$loop = React\EventLoop\Factory::create();

    $server = stream_socket_server('tcp://127.0.0.1:8082');
    stream_set_blocking($server, 0);
    $loop->addReadStream($server, function ($server) use ($loop) {
        $conn = stream_socket_accept($server);
        $data = "HTTP/1.1 200 OK\r\nContent-Length: 3\r\n\r\nHi\n";
        $loop->addWriteStream($conn, function ($conn) use (&$data, $loop) {
            $written = fwrite($conn, $data);
            if ($written === strlen($data)) {
                fclose($conn);
                $loop->removeStream($conn);
            } else {
                $data = substr($data, 0, $written);
            }
        });
    });

    $loop->addPeriodicTimer(5, function () {
        $memory = memory_get_usage() / 1024;
        $formatted = number_format($memory, 3).'K';
        echo "Current memory usage: {$formatted}\n";
    });

    $loop->run();

接下来需要做的组件

Http
Socket
Steam
Promise
Dns

And more....

You can’t perform that action at this time.