Swoole创建的HttpServer服务器在访问时刷新几次页面后就显示空白页
问题就是上面说的这样
在前几次访问的时候还是可以的
截图
刚启动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();
每次都是刷新三次页面,前三次都是可以访问的,第四次就直接显示空白页,后面的刷新偶尔有一次可以访问,大部分是空白页
相关阅读:
视频水印有没有java的例子,文档我实在看不懂
vuejs+summernote出现好多问题~
关于缓存的问题
WebStorm node_modules无法取消Excluded?
为什么使用group后就变成两条数据了?
uwsgi调用django,viewset生命周期问题
vue-cli 2.0 chrome npm run dev console error
微信企业号支付成功自动关注
如何防止狂点提交表单按钮导致的数据重复?
JS创建对象的另一种方法是如何理解的?
看jquery sizzle选择器源码的时候遇见的一个数组问题
Swift3 的一些疑惑
怎么把 list1 和 list2 中包含的重复字典去除,合并生成一个新的 list_all?
echart图表大小怎么调节?
将script标签至于display为none的div中疑惑
Laravel 5.1 如何 migrate 某一个指定的迁移文件?
使用react native的担忧
while 如何做自動保存數據?
Vue springboot 跨域请求丢失session
是多个Ajax请求更消耗服务端性能,还是服务端Mysql Join更消耗性能?