致命错误:脚本中超过了30秒的最长执行时间


Fatal error: Maximum execution time of 30 seconds exceeded in script

我有一个客户收到一个与脚本超时有关的错误。我已经包含了下面的代码,但我认为问题是需要延长超时时间。

这是我可以在代码中设置的东西,还是必须由网络主机(GoDaddy)设置?

致命错误:在第170行的D:''hosting''123''html''siteame''wp-content''plugins''myplugin''myplugin.php中超过了30秒的最长执行时间

此时的代码是:

function my_copy_recurse($src,$dst){
    $dir = opendir($src); 
    @mkdir($dst); 
    while(false !== ( $file = readdir($dir)) ) 
    { 
        if (( $file != '.' ) && ( $file != '..' )) 
        { 
            if ( is_dir($src . '/' . $file) ) { 
                my_copy_recurse($src . '/' . $file,$dst . '/' . $file); 
            } 
            else { 
                copy($src . '/' . $file,$dst . '/' . $file); 
            } 
        } //THIS IS LINE 170
    } 
    closedir($dir); 
}

如果你已经在GoDaddy、Windows主机上托管了你的网站,并且正在使用WordPress,你迟早会面临最长执行时间的问题。我面对这个问题已经有很长一段时间了,我环顾谷歌,撞到了头。如果你遇到了与以下相同的一系列问题:

  1. 你在GoDaddy上被托管,认为它们很棒,但你发现wordpress抛出了执行时间错误
  2. 您联系了支持人员。他们显然要么对你冷遇,要么让你写一个自定义的php.ini/php5.ini
  3. 你不知道该怎么办,而你的老板却在你的头上
  4. 你试图获得GoDaddy的ini文件,你不能
  5. 最后,你决定写自己的PHP.ini文件,但要么害怕破坏什么,要么就是不知道从哪里开始

这篇文章是给你的>

  1. 打开你的文本编辑器。我推荐记事本++。创建以下文件:info.php
  1. 将info.php上传到您的主机根目录。现在浏览到http://yourhost/info.php.屏幕上加载的是PHP配置。查找已加载的配置文件并记下其值。在我的情况下,它是C:''PHP5''php.ini。我们需要在自定义PHP5.ini文件中提供所有这些信息,但它的信息太多,无法复制和格式化,所以我们将复制GoDaddy的默认文件,并根据需要对其进行编辑。

  2. 启动文本编辑器并创建以下文件:getconfig.php<?php copy('C:'PHP5'php.ini'*, 'PHP5.ini'); echo('finally'); ?>
    (用加载的配置文件中显示的任何路径替换*)

  3. 打开GoDaddy主机管理员(是的,通过他们的网站)。启动文件管理器
  4. 在你的主机根上创建一个文件夹"baddaddy"
  5. 选择新创建的文件夹"baddaddy",然后单击权限使其在web上可写
  6. 将文件getconfig.php复制到badaddy,现在浏览到http://yourhost/baddaddy/getconfig.php.

  7. 一旦你看到屏幕上写着"finally",回到GoDaddy控制面板中的文件管理器,转到baddaddy文件夹,你会看到一个新文件PHP5.ini出现在那里。下载此文件。这是GoDaddy设置的副本。

  8. 做任何你需要的改变(只要知道你在改变什么,我不是PHP专家,所以如果你搞砸了什么,我不负责)。对于我的问题,我将max_execution_time=30更改为max_exection_time=1200。

  9. 将编辑后的文件上传到应用程序的根目录,然后返回GoDaddy控制面板的IIS管理,点击回收应用程序池,然后等待一段时间(20分钟)

  10. 浏览回http://yourhost/info.php确认新设置已到位

重要事项**如果你在GoDaddy WordPress博客上看到"500:内部服务器错误",12.将您刚刚编辑的PHP5.ini中的log_errors从log_errors=On更改为log_errors=Off,然后重新上传、回收应用程序池并等待。如果找不到日志文件,则会弹出500错误。

我不是PHP专家,但这件事对我有效,博客加载仍然很慢,但从那以后我再也没有看到任何"致命错误:30秒超时"。

要限制最长执行时间,请使用set_time_limit($seconds)。如果将$seconds设置为零,则没有时间限制。因此,只需在脚本的开头添加set_time_limit(0),脚本就会一直工作到最后。但是,如果用户的浏览器由于浏览器超时而断开连接,您的脚本可能会被暂停,因此您需要在脚本的开头添加ignore_user_abort(true)来忽略它,并一直工作到脚本结束。

根据主机允许的设置,您可以使用set_time_limit()在几秒钟内将您希望它在超时前花费的时间传递给它(使用0表示无限)。例如:

set_time_limit(0);     //script will now run till completes

GoDaddy可能已经阻止了这一点,所以如果它不起作用,请尝试联系他们

在"php.ini"文件中设置"max_execution_time=600"对我有效。

Girish的答案是不完整的。info.php中必须包含哪些内容?您可以使用以下位置提供的简单更新:fix-for-cataly-error-maximum-execution-time30-seconds-exceeded-wordpress

将代码更改为:

function my_copy_recurse($src,$dst){
    $dir = opendir($src); 
    @mkdir($dst); 
    while($file = readdir($dir) ) 
    { 
        if ($file == '.' || $file == '..' ) continue; 

            if ( is_dir($src . '/' . $file) ) { 
                my_copy_recurse($src . '/' . $file,$dst . '/' . $file); 
            } 
            else { 
                copy($src . '/' . $file,$dst . '/' . $file); 
            } 
    } 
    closedir($dir); 
}