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

 苏佡挖图组糖最棒 发布于 2022-11-16 14:57

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


截图
刚启动swoole程序的页面

第四次刷新

程序脚本还是没变化

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

//请求过滤
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();

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

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有