PHP程序时出现 Fatal error: Maximum execution time of 30 seconds exceeded in 提示

 更新时间:2016年11月25日 17:36  点击:1641
Maximum execution time of 30是告诉我们程序超时了,脚本超时了要解决的话可以设置脚本的运行时间或优化程序了,下面我们一起来看PHP程序时出现 Fatal error: Maximum execution time of 30 seconds exceeded in解决办法。


由于近日做的程序中涉及到的循环比较多且处理的情况较复杂,所以在运行程序时出现执行超时提示如下: Fatal error: Maximum execution time of 30 seconds exceeded in D:\php\AppServ\www\sum3\test.php on line 3


很简单,意思是说脚本执行时间超过了30秒的上限。这个错误以前经常碰到,一般都是直接在页面头部加个 set_time_limit(0) 处理,今天特意将这个错误的处理方法做一下总结。


1.修改php的配置文件,找到php.ini文件,它一般应该放在你的C:\WINDOWS目录下,然后找到 max_execution_time = 30 ;//设置成你想要的值,单位是秒, 这一行,这就是设置的执行时间最大值为30秒,你可以对这个值进行一下修正,改为你的期望值。(也可以直接设置成:max_execution_time = 0)

2.使用ini_set()函数,不是所有人都能修改php.ini文件的,那么你可以使用这个函数来改变你的最大执行时间限制值,如: ini_set('max_execution_time', '100'); 则设置为100秒,你也可以设置为0,那么就是不限制执行的时间。

3.使用set_time_limit()函数,set_time_limit(20)则表示最大执行时间加上20秒,但如果在php执行安全模式时,set_time_limit()将不会有结果,除非你用了第一种方法。

以下是部分讲解:set_time_limit --- 限制最大的执行时间set_time_limit(PH3 , PHP4)set_time_limit --- 限制最大的执行时间语法 : void set_time_limit (int seconds)说明 : 设定一个程式所允许执行的秒数,如果到达限制的时间,程式将会传回错误。

它预设的限制时间是30秒,max_execution_time的值定义在结构档案中(在PHP3中叫做php3.ini,在PHP4则叫做php.ini),如果将秒数设为0,表示无时间上的限制。

当呼叫此函式时,set_time_limit( )会从零重新开始计算最长执行的时间,也就是说,如果最长执行时间为预设的30秒,而在呼叫此函式set_time_limit(20)之前已花了25秒来执行程式,则程式最长执行的时间将会是45秒。

注意 : 当PHP是执行在安全模式时,set_time_limit( )将不会有结果,除非是关闭安全模式或是修改结构档案中(在PHP3中叫做php3.ini,在PHP4则叫做php.ini)的时间限制。


案例:如果没有打开安全模式,设置程序运行时间为25秒。例如:


<?php

if(!ini_get('safe_mode')){

    set_time_limit(25);

}

我们看到英文Call to undefined method就知道是因为函数或方法没有定义了,这个对于插件就有可能是什么功能没有开启了,我们下面来看看Call to undefined method DebugBar\\DebugBar::info()问题解决方法

使用 Laravel 的调试工具 laravel-debugbar 的 Facade 方式 Debugbar::info(), Debugbar::error()等方法打印日志消息,页面打不开,查看 PHP 错误日志报错:Call to undefined method DebugBar\\DebugBar::info().

请确保按照https://github.com/barryvdh/laravel-debugbar上的文档安装的,别忘了执行 composer dump-autoload.

如果你找不到原因,可能是命名空间引用错了,改成


use Barryvdh\Debugbar\Facade as Debugbar;

再用 Facade 的方式调用:

Debugbar::info('test debug info');

这个时候发现可以了,如图:

不过这样使用有点不方便了,这个组件的 Facade 的定义方式有点奇怪,不应该这样去定义,先就这样用吧,或者自己定义一个全局函数,直接通过 app(‘debugbar’) 这种方式去调用。吧。

gzuncompress函数不是php自带的系统函数而是一个插件函数了所以要使用 gzuncompress函数我们必须安装一个插件,下面来看看PHP函数gzuncompress无法使用的问题解决办法吧。

解决过程

1.gzuncompress函数需要zlib支持才可以正常使用
2.可以使用探针检查当前php版本中是否已经开启了该函数
3.解决方式,额外编译php,安装zlib组件

解决步骤

1.开发环境为centos6.5 bit php5.3
2.参考代码(不可以直接拿去用,请思考下在执行以下代码)

[root@leafrainy zlib]# pwd
/root/dl/php/ext/zlib
[root@leafrainy zlib]#mv config0.m4 config.m4
[root@leafrainy zlib]#/usr/local/php/bin/phpize
[root@leafrainy zlib]#./configure --with-php-config=/usr/local/php/bin/php-config
[root@leafrainy zlib]#make
[root@leafrainy zlib]# cp modules/zlib.so /usr/local/php/lib/php/extension/
[root@leafrainy zlib]#vi /usr/local/php/lib/php.ini
添加extension=zlib.so

重启apache

Undefined variable错误是什么问题呢,小编觉得这个是程序错误了,那么碰到Undefined variable要如何解决呢,我们一起来看看具体的解决办法吧。

我们知道在 php 中,变量通常是不需要定义直接使用的,但有的时候因为 php 环境的问题会出现各种各样奇奇怪怪的事情,今天在调试程序的时候直接提示 Notice: Undefined variable 的错误,这是因为有的变量没有定义造成的,也是晕了,好吧,这种问题直接一句屏蔽误句就搞定了。

直接在程序的最顶端插入一句 error_reporting(0); 相信就不会再暴露这样的问题了,也不耽误程序的运行,当然这个只是应急的方法,我们还是要好好检查程序哪里出现的问题,然后对症下药,对于直接屏蔽问题夏日博客再总结几种方法吧。

php.ini 配置文件中的修改

在php.ini中的302行 error_reporting = E_ALL
修改成
error_reporting = E_ALL & ~E_NOTICE 再重启apache2.2就行了
解决方法:修改php.ini
将: error_reporting = E_ALL
修改为:error_reporting = E_ALL & ~E_NOTICE
如果什么错误都不想让显示,直接修改:
display_errors = Off
如果你没有php.ini的修改权限,可在php头部加入:
ini_set("error_reporting","E_ALL & ~E_NOTICE");

php文件中的修改

如果你没有php.ini的修改权限,可在php头部加入 ini_set("error_reporting","E_ALL & ~E_NOTICE"); 或者 error_reporting(0);// 即可。

一般情况下直接建议在 php 文件中进行添加,这种方法简单,不用去修改服务端的 php.ini 了。

[!--infotagslink--]

相关文章