Неустранимая ошибка: в скрипте превышено максимальное время выполнения 30 секунд - PullRequest
0 голосов
/ 28 июня 2011

У меня есть клиент, который получает ошибку, связанную с тайм-аутом сценария.Я включил приведенный ниже код, но я думаю, что проблема в том, что время ожидания должно быть увеличено.

Это то, что я могу установить в коде, или это должно быть установлено веб-хостом (GoDaddy)?

Неустранимая ошибка: максимальное время выполнения 30 секунд превышено в D: \ hosting \ 123 \ html \ siteame \ wp-content \ plugins \ myplugin \ myplugin.php в строке 170

Код в этой точке:

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); 
}

Ответы [ 6 ]

4 голосов
/ 22 апреля 2012

Если вы разместили свой сайт на GoDaddy, хостинге Windows и используете WordPress, рано или поздно вы столкнетесь с проблемой максимального времени ожидания выполнения. Я столкнулся с этой проблемой довольно долго и посмотрел вокруг Google, ударившись головой. Если вы столкнулись с такой же серией проблем, как показано ниже:

  1. Вы находитесь на GoDaddy, думая, что они классные, но вы обнаруживаете, что WordPress генерирует ошибки времени выполнения
  2. вы обратились в службу поддержки. они явно либо простужают вас, либо просят написать собственный php.ini / php5.ini.
  3. ты не знаешь, что делать, и твой босс на твоей голове.
  4. вы пытаетесь достать INI-файл GoDaddy, вы не можете!
  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 Hosting Manager (да, через их веб-сайт). Запустите файловый менеджер
  4. На корне вашего хостинга создайте папку "baddaddy".
  5. выберите вновь созданную папку "baddaddy" и щелкните разрешения. Сделать доступным для записи в Интернете.
  6. скопируйте файл getconfig.php в badaddy и перейдите к http://yourhost/baddaddy/getconfig.php.

  7. Как только вы увидите «наконец-то», написанное на экране, вернитесь к файловому менеджеру на панели управления GoDaddy, перейдите в папку baddaddy и вы увидите новый файл PHP5.ini. Загрузите этот файл. Это копия настроек GoDaddy.

  8. Внесите любые необходимые изменения (просто знайте, что вы меняете, я не эксперт по PHP, поэтому я не могу нести ответственность, если вы что-то напортачили). Для моей проблемы я изменил max_execution_time = 30 на max_execution_time = 1200.

  9. Загрузите отредактированный файл в корень приложения и обратно в Панель управления GoDaddy, IIS Management, нажмите Recycle App Pool и затем ПОДОЖДИТЕ В ТЕЧЕНИЕ (20 минут)

  10. вернитесь к http://yourhost/info.php, чтобы подтвердить, что новые настройки установлены

ВАЖНО ** ЕСЛИ вы видите «500: Внутренняя ошибка сервера» в вашем блоге GoDaddy WordPress после всего этого, 12. Измените log_errors с log_errors = On на log_errors = Off в PHP5.ini, который вы только что отредактировали, и повторно загрузите, перезапустите пул приложений и подождите. Ошибка 500 появляется, если файл журнала не найден.

Я НЕ ЭКСПЕРТ PHP, но эта штука сработала для меня, блог все еще загружается медленно, но с тех пор я не видел никаких «Фатальных ошибок: тайм-аут 30 секунд».

1 голос
/ 28 июня 2011

Чтобы ограничить максимальное время выполнения, используйте set_time_limit($seconds).Если установлено $seconds в ноль, ограничение по времени не накладывается.Так что просто добавьте set_time_limit(0) в начале скрипта и скрипт будет работать до конца.Но если браузер пользователя отключается из-за тайм-аута браузера, ваш скрипт может быть остановлен, поэтому вам нужно добавить ignore_user_abort(true) в начале скрипта, чтобы игнорировать его и работать точно до конца скрипта.

0 голосов
/ 15 декабря 2013

Установив "max_execution_time = 600" в файле "php.ini", я сработал.

0 голосов
/ 06 февраля 2013

Ответ Гириша неполон. Что должно быть включено в info.php? Вы можете использовать простое обновление, предоставляемое по адресу: исправление для фатальной ошибки-максимальное-время-выполнения-превышение-wordpress

0 голосов
/ 28 июня 2011

Измените свой код на это:

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); 
}
0 голосов
/ 28 июня 2011

В зависимости от того, какие настройки ваш хост разрешил, вы можете использовать set_time_limit () передать ему в секундах, сколько времени вы хотите, чтобы он провел до истечения времени ожидания (используйте 0 для бесконечности).Например:

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

Возможно, GoDaddy заблокировал это, поэтому, если это не работает, попробуйте связаться с ними

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...