php libevent是多线程的吗?

时间:2015-09-03 18:28:20

标签: php multithreading 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:11 2 - 当地时间是周四,2015年9月3日21:17:17

我认为libevent是多线程的。但我的例子表明不是。是这样吗?或者我的代码有误?

由于

1 个答案:

答案 0 :(得分:0)

没有。 Libevent不是多线程的。它处理one event at a time.