private function createChild($socket, $count) { while ($conn = stream_socket_accept($socket, -1)) { while ($record = UltraMilk_FCGI_Record::read($conn)) { if ($record->getType() == UltraMilk_FCGI_RecordTypes::BEGIN_REQUEST) { if ($record->getRole() !== $this->role) { throw new RuntimeException('UltraMilk role not equal request role!'); } if ($record->getRole() == UltraMilk_FCGI_Roles::RESPONDER) { $this->onRequestHandler->invoke(new UltraMilk_HTTP_Request(UltraMilk_FCGI_Request::create($conn, $record->getVersion(), $this->role, $record->getRequestId(), $record->getFlags()))); } else { throw new RuntimeException('This role doesn\'t supported at this moment!'); } } unset($record); if (!is_resource($conn)) { break; } } } }