/** * Process HTTP headers * @return boolean Success */ protected function httpProcessHeaders() { $this->req->attrs->paramsDone = true; if (isset($this->req->attrs->server['HTTP_CONNECTION']) && preg_match('~(?:^|\\W)Upgrade(?:\\W|$)~i', $this->req->attrs->server['HTTP_CONNECTION']) && isset($this->req->attrs->server['HTTP_UPGRADE']) && strtolower($this->req->attrs->server['HTTP_UPGRADE']) === 'websocket') { if ($this->pool->WS) { $this->pool->WS->inheritFromRequest($this->req, $this); } return false; } $this->req = Daemon::$appResolver->getRequest($this->req, $this, isset($this->pool->config->responder->value) ? $this->pool->config->responder->value : null); if ($this->req instanceof \stdClass) { $this->endRequest($this->req, 0, 0); return false; } else { if ($this->pool->config->sendfile->value && (!$this->pool->config->sendfileonlybycommand->value || isset($this->req->attrs->server['USE_SENDFILE'])) && !isset($this->req->attrs->server['DONT_USE_SENDFILE'])) { $req = $this->req; FileSystem::tempnam($this->pool->config->sendfiledir->value, $this->pool->config->sendfileprefix->value, function ($fn) use($req) { FileSystem::open($fn, 'wb', function ($file) use($req) { $req->sendfp = $file; }); $req->header('X-Sendfile: ' . $fn); }); } $this->req->callInit(); } return true; }
/** * Called when file upload started * @param Input $in Input buffer * @return void */ public function onUploadFileStart($in) { $this->freezeInput(); FileSystem::tempnam(ini_get('upload_tmp_dir'), 'php', function ($fp) use($in) { if (!$fp) { $in->curPart['fp'] = false; $in->curPart['error'] = UPLOAD_ERR_NO_TMP_DIR; } else { $in->curPart['fp'] = $fp; $in->curPart['tmp_name'] = $fp->path; } $this->unfreezeInput(); }); }
/** * Start new session * @param callable $cb Callback * @return void */ protected function sessionStartNew($cb = null) { FileSystem::tempnam(session_save_path(), $this->sessionPrefix, function ($fp) use($cb) { if (!$fp) { call_user_func($cb, false); return; } $this->sessionFp = $fp; $this->sessionId = substr(basename($fp->path), strlen($this->sessionPrefix)); $this->setcookie(ini_get('session.name'), $this->sessionId, ini_get('session.cookie_lifetime'), ini_get('session.cookie_path'), ini_get('session.cookie_domain'), ini_get('session.cookie_secure'), ini_get('session.cookie_httponly')); call_user_func($cb, true); }); }