set_time_limit 调用导致超时 cpu消耗100%

作者: wxfeng 分类: 未分类 发布时间: 2017-08-02 00:00    阅读 926 次

      最近在迁移论坛系统(dicuz x.3.3)至新服务器后,后台以及部分页面无法访问,一直处于加载状态,至最后,页面空白.登陆服务器查看负载,在访问网站时,http进程CPU占用率飙升至100%;对比在原服务器,一切正常,说明极有可能是配置不正确导致的错误,于是对照新老http.conf 以及php.ini这两个配置文件, 调整新的web服务器配置与老的服务器保持一致,调整过后,重启各项服务,问题依旧。于是开始从后台入口文件admin.php来进行调试,排错。调试过程中,发现程序在执行/source/function/function_admincp.php文件中@set_time_limit(0);这个函数时会卡住,将其注释,即可顺利访问后台,由此推断,无法访问的页面可能都是由于此函数的原因而无法访问。于是网上搜索导致@set_time_limit(0) 无法执行的原因以及解决方案,其中有一论坛用户也遇到过这种问题,原问如下:

升级xdebug.
我碰到过.测试出来是xdebug版本问题.
一执行set_time_limit, apache直接没返回, 然后cpu upto 100%

php5.6 xdebug 版本导致
抱着试试的态度,我查看了新老服务器的xdebug版本(php -v),新老两个服务器的xdebug版本分别是2.5.3和2.5.5,因为老的服务器没问题,所以为了和老的服务器保持一致,对xdebug进行了升级,可通过下载源码编译安装或找到合适的yum源,在线升级安装,这里采用了yum 在线安装的方式:

[root@localhost ~]#yum install --enablerepo=remi-php56 php-xdebug
[root@localhost ~]# php -v
PHP 5.6.30 (cli) (built: Jan 19 2017 08:09:42)Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies    
    with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans

安装完毕后,重启httpd服务,访问各页面正常。cpu占用率也立马降了下来。

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

您的电子邮箱地址不会被公开。