Значение по умолчанию maximun_execution_time составляет 120 секунд. Я выполнил все инструкции по созданию файла php.ini и разместил его в правильном месте public_html. Я запустил phpinfo () и обнаружил, что maximun_execution_time успешно настроено на 600 секунд.
Но проблема в том, что он по-прежнему не может выполнить сценарий, который более 120 секунд. Он вернет код ошибки 500 Внутренняя ошибка сервера после 2 минут времени выполнения.
файл sleep.php:
<?php
$sleepTime = isset($_POST['sleepTime'])? intval($_POST['sleepTime']): 0;
sleep($sleepTime);
echo " woke up";
?>
файл sleep.html:
<script>
var beginSleep=function() {
var timeNow = new Date();
$('input[type=button]').attr("disabled", true);
$('#msg').html(timeNow.getHours()+":"+timeNow.getMinutes()+":"+timeNow.getSeconds()+" Sleeping...<br>");
$.ajax({
url: "sleep.php",
data: $('#formSleep').serialize(),
type:"POST",
dataType:'text',
success: function(msg) {
timeNow = new Date();
$('#msg').append(timeNow.getHours()+":"+timeNow.getMinutes()+":"+timeNow.getSeconds()+msg);
$('input[type=button]').removeAttr("disabled");
},
error:function(xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
};
</script>
<form id="formSleep" method="post" action="sleep.php">
<p>Sleep time(seconds):</p><input type="text" name="sleepTime" value="5" />
<input type="button" value="submit" onclick="beginSleep()" />
</form>
<p id="msg"></p>
Снимки экрана:
http://i.imgur.com/IAiSpPS.jpg
http://i.imgur.com/w7A1nKA.jpg
Если я установлю время ожидания на 121 секунду и отправлю сообщение, оно не вернет сообщение «проснулся», а выдаст код ошибки 500.
Последние обновления
Я говорил с поддержкой GoDaddy, они сказали, что мой php.ini работает правильно, потому что они могут видеть, что значение max_execution_time изменилось до 600 секунд. Но они не могли ответить мне, почему возникла проблема с тайм-аутом. Они настаивали на том, что это моя проблема со сценариями и что мой тестовый сценарий недопустим для выполнения теста.
Я показал им еще один тестовый скрипт, который, я считаю, самый простой. Сообщение никогда не будет отображаться, так как оно превышает 120 секунд и вернет код ошибки 500 внутренняя ошибка сервера.
<?php
sleep(121); echo "sleep(121) completed";
?>
Они показали мне свои тестовые сценарии и заявили, что настройка max_execution_time работает нормально.
test.php: test.php будет перенаправлен на мою домашнюю страницу через 30 секунд.
header( "refresh:30; url=http://my-site.net" );
echo "please wait 30 seconds";
Другой тестовый скрипт, который они мне показали, это бесконечный цикл «for (;;);». Этот тестовый скрипт также автоматически отключается по истечении 120 секунд. Кроме того, бесконечный цикл потреблял 80% ресурсов моего процессора.
register_shutdown_function(function() {
echo "shutdown function called\n";
});
set_time_limit(600); // Set time limit to 1 second (optional)
for (;;) ;
Они пришли к выводу, что мое max_execution_time не работает должным образом из-за того, что у меня недостаточно ресурсов процессора.
Я не верю тому, что они сказали, потому что sleep () не использует много ресурсов. Я попытался запустить тестовые сценарии параллельно, но загрузка процессора составила 0%. Кроме того, я не думаю, что функция header («refresh: 30», url = …) может считаться долгосрочным скриптом. Служба поддержки GoDaddy не так хороша, как я ожидал.
Та же проблема с 000webhost и bluehost и ProISP, любой процесс PHP, работающий более 120 секунд, будет остановлен, независимо от настроек, чтобы предотвратить перегрузку сервера, и вы должны спросить инженера (который действительно знает, в чем проблема) для вашего учетная запись / сценарий, чтобы получить исключение из этой функции безопасности (удачи. Только ProISP фактически предоставил мне исключение для этого, для 1 конкретного сценария php ..) — или вы можете купить VPS (например, ramnode.com) или использовать веб-хост, который не имеет этого ограничения (например, syse.no), или использовать веб-хост, который может быть
готов дать вам освобождение (например, proisp.no)
Обслуживающий персонал GoDaddy отсталый. Зачем? заголовок («обновить: 30; URL =http://my-site.net«);
это сделает ВАШ БРАУЗЕР перенаправленным и не имеет никакого отношения ко времени выполнения php, и они не смогли найти реальную причину проблемы, а настоящая проблема не имеет никакого отношения к использованию вашего процессора.
Эта почта позволил мне увеличить мой предел PHP.
Ключевая информация:
Откройте SFTP-подключение к вашей учетной записи хостинга GoDaddy
В том же каталоге, что и wp-config.php
, создать .user.ini
файл.
Заметка ведущий .
.user.ini
добавление файла max_execution_time = 180
Это увеличит GoDaddy max_execution_time
до 3 минут.
Добавьте это вверху вашего php-скрипта:
set_time_limit(600);
//or set_time_limit(0); unlimited time
ignore_user_abort(1);
Поместите это в верхней части вашего сценария PHP
ini_set('max_execution_time', 300); //300 seconds = 5 minutes
если это работает, тогда запустите
где php
Проверьте расположение выходной папки и перейдите в этот файл php.ini. проверьте max_input_time =?
Godaddy не разрешать обновлять конфигурацию сервера по умолчанию.
Даже если вы найдете путь og php.ini, у вас не будет доступа для редактирования через SSH / FTP-клиент согласно их политике.
Решение :
Единственным решением, которое я нашел, была поддержка Call to Godaddy. Как только они разрешат разрешение, вы сможете найти редактируемое поле по следующему пути для переменных PHP.
Дорожка : Главная> Программное обеспечение> Версия PHP> Переключиться на параметры PHP