Swoole创建的HttpServer服务器在访问时刷新几次页面后就显示空白页

新手上路,请多包涵

问题就是上面说的这样
在前几次访问的时候还是可以的


截图
刚启动swoole程序的页面

clipboard.png

第四次刷新

clipboard.png

程序脚本还是没变化

clipboard.png

代码的话比较长
请求处理的过程

//请求过滤
if ($request->server['path_info'] == '/favicon.ico' || $request->server['request_uri'] == '/favicon.ico') {
    return $response->end();
}
// 处理静态文件
if (file_exists($request->server['path_info']) && $request->server['path_info'] != "/index.php") {
    //echo "static data request";
    //return $response->end("static data request!");
}
$this->response = $response;
// 接收HTTP全局数组
if (isset($request->server)) {
    HttpServer::$server = $request->server;
    foreach ($request->server as $key => $value) {
        $_SERVER[ strtoupper($key) ] = $value;
    }
}
if (isset($request->header)) {
    HttpServer::$header = $request->header;
}
if (isset($request->get)) {
    HttpServer::$get = $request->get;
    foreach ($request->get as $key => $value) {
        $_GET[ $key ] = $value;
    }
}
if (isset($request->post)) {
    HttpServer::$post = $request->post;
    foreach ($request->post as $key => $value) {
        $_POST[ $key ] = $value;
    }
}
// 处理输出
ob_start();
try {
    //清空request对象
    $this->application->clearRequest();
    //运行Yii2框架
    $this->application->run();
    //输出日志到文件,必须强制执行,开启flush之后,qps降低5倍,待研究
    Yii::getLogger()->flush(true);
    //关闭数据库连接,防止mysql空闲超时
    $this->application->db->close();
    
} catch (Exception $e) {
    echo "app-Exception:" . $e->getMessage();
}
$result = ob_get_contents();
ob_end_clean();
// 结束请求
$response->end($result);
unset($result);

swoole服务器的配置代码

$http = new swoole_http_server("0.0.0.0", 9501);
$http->set([
    'worker_num'        => 16, //worker process num
    'backlog'           => 128, //listen backlog
    'max_request'       => 5000,
    'dispatch_mode'     => 1,
    'open_tcp_nodelay'  => 1,
    'enable_reuse_port' => 1,
    'task_worker_num'   => 32,
    'task_worker_max'   => 256,
    'daemonize'         => false,
    'log_file'          => '../runtime/logs/swoole_http_server.log',
]);
$http->on('WorkerStart', [$this, 'onWorkerStart']);
$http->on('Request', [$this, 'onRequest']);
$http->on('Task', [$this, 'onTask']);
$http->on('Finish', [$this, 'onFinish']);
$http->start();

每次都是刷新三次页面,前三次都是可以访问的,第四次就直接显示空白页,后面的刷新偶尔有一次可以访问,大部分是空白页

阅读 3.6k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题