问题就是上面说的这样
在前几次访问的时候还是可以的
截图
刚启动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();
每次都是刷新三次页面,前三次都是可以访问的,第四次就直接显示空白页,后面的刷新偶尔有一次可以访问,大部分是空白页