-
-
Notifications
You must be signed in to change notification settings - Fork 158
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?