PHP libevent是多线程的



我用php和libevent编写了一个简单的服务器。

<?php
function process($fd, $events, $arg) {
    $conn = stream_socket_accept($fd);
    //stream_set_blocking($conn, 0);
    $read = fread($conn, 4096);
    echo "new connection " . (string)$conn . "n";
    fwrite($conn, "The local time is " . date('r') . "n");
    fclose($conn);
    sleep(3);
}
$server = stream_socket_server("tcp://0.0.0.0:33333", $errno, $errstr);
stream_set_blocking($server, 0);
$base = event_base_new();
$event = event_new();
event_set($event, $server, EV_READ | EV_PERSIST, "process");
event_base_set($event, $base);
event_add($event);
event_base_loop($base);

同时我在2个不同的浏览器中加载它http://xxx:33333/,在第一个结果立即出现,在第二个3秒或更长时间1 -当地时间是2015年9月3日星期四21:17:112 -当地时间为2015年9月3日星期四21:17:17

我认为libevent是多线程的。但我的例子表明并非如此。是这样吗?还是我写错了代码?

谢谢

No。Libevent不是多线程的。它一次处理一个事件。

相关内容

  • 没有找到相关文章

最新更新