我有一个Codeigniter项目,包括一个时间昂贵的#34;同步。基本上我通过OCI8连接到远程服务器(可能运行CentOS,但这就是我所知道的)到Oracle数据库,挑选大约20,000行,然后更新本地MySQL数据库。
同步持续大约20ihs分钟(是的,MySQL可以更优化,什么不是),但这不是我目前的问题......
我有专用服务器,双Xeon和16 Gig内存,CentOS x64,Apache 2.2.15,PHP 5.6.21和MySQL版本5.6.30。
现在,使用Apache 2 Handler和默认的PREFORK MPM,该同步按预期工作。
如果我离开Apache 2 Handler(mod_php我假设)并将MPM更改为WORKER或EVENT,那么同步就会启动,并且PHP会在日志文件中没有任何内容的情况下显示死机的白屏。
如果我切换到fcgi和EVENT或WORKER MPM,同步开始,大约2分钟后它就会给我"网关没有收到来自上游服务器或应用程序的及时响应。"
请注意,自从我切换回Apache 2.0 Handler和PREFORK之后,它与服务器之间的连接没有问题。它可以按预期工作。
Codeigniter版本是2.1.0(是的我知道它很久以来升级,它只是继承的项目,我不完全清楚CORE文件是否有一些变化,而且这个人是#34;好吧它的工作,不是"。
任何有类似问题的线索或链接都非常感激。
提前致谢
答案 0 :(得分:0)
@Kosta,看起来你有某种服务器长请求超时错误。如果不检查日志,我无法确切地说出什么。我还建议你检查PHP配置超时,max_execution_time,max_input_time它也可能会影响这些问题。
答案 1 :(得分:0)
执行httpd -M
并查看Apache的活动模块列表中是否有fcgid_module
。
如果没有,请执行yum install mod_fcgid
并安装
然后你可能需要为你的超时问题做一些设置,假设你已经设置了其他所有内容来使用CGI / FastCGI而不是Apache 2 Handler,在/etc/httpd/conf/httpd.conf
之类的内容
<IfModule mod_fcgid.c>
FcgidIdleTimeout 1800
FcgidProcessLifeTime 1800
FcgidBusyTimeout 1800
FcgidIOTimeout 1800
FcgidConnectTimeout 20
</IfModule>
重新启动service httpd restart
和service php-fpm
重启(或者您正在使用的任何PHP处理程序)并重新尝试