-
-
Notifications
You must be signed in to change notification settings - Fork 158
EventBase::loop(): kevent: Bad file descriptor #280
Copy link
Copy link
Closed
Labels
Description
hello,
I'm writing forking TCP server with master and forked worker processes. the ExtEventLoop instance in child process will raise some error like this:
Warning: EventBase::looPHP Warning: EventBase::loop(): kevent: Bad file descriptor in /Users/xxx/vendor/react/event-loop/src/ExtEventLoop.php on line 205
Warning: EventBase::loop(): kevent: Bad file descriptor in /Users/xxxxx/vendor/react/event-loop/src/ExtEventLoop.php on line 205
tserver/vendor/react/event-loop/src/ExtEventLoop.php on line 205
Sample code:
include __DIR__ . '/vendor/autoload.php';
$loop = \React\EventLoop\Loop::get();
$server = new \React\Socket\SocketServer('tcp://127.0.0.1:1234', [], $loop);
const WORKER_NUM = 3;
for ($i = 0; $i <= WORKER_NUM; $i++) {
$pid = pcntl_fork();
if (-1 === $pid) {
exit('fork error');
} elseif ($pid) {
} else {
// run the server.
$loop->run();
exit;
}
}
// close in master process.
$server->close();
pcntl_wait($status);environment:
php: 7.4.25 NTS
os: macos 11.5.2
machine: Macbook pro(Apple M1)
Reference https://stackoverflow.com/questions/33735302/reactphp-libevent-and-socket-pair-throws-error
Is it possible to add a method getEventBase() in https://github.com/reactphp/event-loop/blob/master/src/ExtEventLoop.php to expose the raw eventBase object?
Reactions are currently unavailable