Skip to content

FAQ issue

tolizhan edited this page Aug 3, 2022 · 10 revisions

部署时遇到的常见问题

data文件夹无法写入(框架配置_of.dataDir指向的文件夹)

可以尝试 "chmod -R 777 data", "chown -R 用户 data", "chgrp -R 用户组 data" 来解决问题

如何看到mysql死锁日志

mysql 帐号分配 ROCESS 权限后, 框架会抓取死锁日志

为什么通过 curl 或 of_base_com_net::request 访问网络慢

在网络正常的情况可能是IP6的问题, 在 /etc/resolv.conf 加上 options single-request-reopen 参数

如何降低框架对网络磁盘的依赖

一, 将所有 kv 配置成非files模式, 如redis模式, 注意 default 和 _ofSelf 有默认配置
二, 减少不必要 SESSION 生成, 如serv层的API, 可以通过 _of.session.autoStart 配置
三, SESSION切到非files模式, 如kv(轻度依赖磁盘)或db(不依赖磁盘), 最好用cookie绑定将files分布式独立存储
四, 动态计划任何切换到db模式, _of.com.timer.task

如何禁止浏览器的内存(from memory cache)与磁盘(rom disk cache)缓存

设置响应头 Cache-Control 为 no-cache 便可, 如: apache 配置方法
#开启 mod_headers 模块
LoadModule headers_module modules/mod_headers.so

#禁止css与js文件浏览器缓存 <FilesMatch ".(css|js)$">     header set Cache-Control "max-age=0, no-cache" </FilesMatch>

如何排查异步代码卡死问题

一, 设置"脚本超时"排查代码死循环, 超时后错误日志中会提示代码位置
set_time_limit(60);
二, 为网络请求函数设置"响应超时"排查网络异常, "脚本超时"对"响应超时"无效
//不包含CURL的响应超时
ini_set('default_socket_timeout', 60);

//CURL 响应超时(60s) curl_setopt($ch, CURLOPT_TIMEOUT, 60);

//file_get_contents 响应超时(60s) file_get_contents(URL, false, stream_context_create(array(     'http' => array(         'timeout' => 60     ) )));

//推荐 of_base_com_net::request 默认default_socket_timeout超时设置 of_base_com_net::request(URL);

三, 上述无效时, 添加"调试代码", 记录每个节点位置, 再分析排查
linux 查看异步进程 printf '%b\n\n' $(ps -ef | grep index.php | sed 's/ /%20/g;s/%/\x/g')
Clone this wiki locally