最新版Workerman5.1,安裝了revolt/event-loop,運(yùn)行環(huán)境為windows10、PHP8.3.8,用下面代碼(文檔示例代碼):
。。。
$worker = new Worker('http://0.0.0.0:8001');
$worker->eventLoop = Fiber::class; // 使用自帶的Fiber協(xié)程
$worker->onMessage = function (TcpConnection $connection, Request $request)
{
echo "onMessage:id:{$connection->id}\n";
Coroutine::create(function () {
echo file_get_contents("http://。。。");
});
$connection->send('ok');
};
Worker::runAll();
運(yùn)行成功,但實(shí)際訪(fǎng)問(wèn)時(shí)一直請(qǐng)求中無(wú)法返回?cái)?shù)據(jù),如果改為Swow就正常,請(qǐng)問(wèn)是否Windows下不支持Fiber?
文檔有寫(xiě),F(xiàn)iber里用阻塞函數(shù)進(jìn)程會(huì)進(jìn)入阻塞。
這個(gè)我明白,但不用阻塞函數(shù)也有問(wèn)題,比如我直接:
$worker->onMessage = function(TcpConnection $connection, Request $request)
{
echo "onMessage:id:{$connection->id}\n";
$connection->send('hello');
};
這樣也一直不返回?cái)?shù)據(jù)。。