我的客户收到与脚本超时相关的错误。我已经包含了下面的代码,但我认为问题在于需要延长超时。
这是我可以在代码中设置的内容,还是必须由Web主机(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);
}
答案 0 :(得分:4)
如果您在GoDaddy,Windows主机上使用WordPress托管了您的网站,迟早您将面临最大执行超时问题。我在很长一段时间内遇到了这个问题,看着谷歌,打我的脑袋。如果您遇到与以下相同的一系列问题:
这篇文章适合你>
将info.php上传到您托管的根目录。现在浏览http://yourhost/info.php。无论屏幕上的负载是什么,都是PHP配置。查找已加载的配置文件并记下其值。在我的情况下,它是C:\ PHP5 \ php.ini。我们需要在自定义PHP5.ini文件中提供所有这些信息,但是要复制和格式化的信息太多,因此我们将复制GoDaddy的默认文件并根据需要进行编辑。
触发文本编辑器并创建以下文件:
getconfig.php
<?php copy('C:\PHP5\php.ini'*, 'PHP5.ini'); echo('finally'); ?>
(将*替换为加载配置文件中显示的任何路径)
将文件getconfig.php复制到badaddy,现在浏览到http://yourhost/baddaddy/getconfig.php。
一旦你看到&#34;终于&#34;写在屏幕上,回到GoDaddy控制面板中的文件管理器,转到baddaddy文件夹,你会看到一个新文件PHP5.ini出现在那里。下载此文件。这是GoDaddy设置的副本。
做出你需要的任何改变(只知道你正在改变什么,我不是PHP专家,所以如果搞砸了什么我就不负责任)。对于我的问题,我将max_execution_time = 30更改为max_execution_time = 1200。
将已编辑的文件上传到应用程序的根目录,然后返回GoDaddy控制面板,IIS管理,点击回收应用程序池,然后 等待一段时间(20分钟) 强>
浏览回http://yourhost/info.php以确认新设置已到位
重要 * * 如果您看到&#34; 500:内部服务器错误&#34;完成所有这些后,在你的GoDaddy WordPress博客上, 12.在刚刚编辑的PHP5.ini中将log_errors从on_errors = On更改为log_errors = Off,然后重新上传,回收应用程序池并等待。如果找不到日志文件,则会弹出500错误。
我没有PHP专家,但这件事对我有用,博客仍然加载缓慢,但我没有看到任何&#34;致命错误:30秒超时&#34;从那以后。
答案 1 :(得分:1)
要限制最长执行时间,请使用set_time_limit($seconds)
。
如果将$seconds
设置为零,则不会施加时间限制。因此,只需在脚本开头添加set_time_limit(0)
,脚本将一直运行到最后。但是如果用户的浏览器由于浏览器超时而断开连接,则脚本可能会暂停,因此您需要在脚本开头添加ignore_user_abort(true)
以忽略它并直到脚本结束才能正常工作。
答案 2 :(得分:0)
根据您的主机允许的设置,您可以在几秒钟内使用set_time_limit()传递给它的时间,在它超时之前需要多长时间(使用0表示无限制)。 E.g:
set_time_limit(0); //script will now run till completes
GoDaddy可能已经阻止了这一点,如果它不起作用,请尝试联系他们
答案 3 :(得分:0)
Girish的回答是不完整的。什么必须包含在info.php中? 您可以使用以下网址提供的简单更新:fix-for-fatal-error-maximum-execution-time-30-seconds-exceeded-wordpress
答案 4 :(得分:0)
在“php.ini”文件中设置“max_execution_time = 600”为我工作。
答案 5 :(得分:-1)
将您的代码更改为:
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);
}