Значение 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://img.ruphp.com/configuration-files/IAiSpPS.jpg
http://img.ruphp.com/configuration-files/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 секунд, будет прекращен независимо от настроек, чтобы предотвратить перегрузку сервера, и вы должны спросить у инженера (который действительно знает, в чем проблема) для вашего account / script, чтобы получить освобождение от этой функции безопасности (удача. Только ProISP на самом деле дал мне освобождение для этого, для одного конкретного скрипта php ..) – или вы могли бы купить VPS (например, ramnode.com) или использовать веб-хост, который не имеет этого ограничения (например, syse.no), или использовать веб-хостинг, который может быть готов предоставить вам освобождение (например, proisp.no)
Сотрудники службы поддержки GoDaddy отстают. Зачем? header ("refresh: 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
если он работает, тогда запустите
whereis php
Проверьте местоположение папки вывода и перейдите в файл php.ini этого местоположения. Проверить max_input_time =?
Godaddy не позволяет обновлять конфигурацию сервера по умолчанию. Даже если вы найдете путь og php.ini, у вас не будет доступа к редактированию через SSH / FTP-клиент в соответствии с их политикой.
Решение: Единственное решение, которое я нашел, это поддержка Call to Godaddy. Как только они разрешат разрешение, вы сможете найти редактируемое поле в следующем пути для переменных PHP.
Путь : Главная> Программное обеспечение> Версия PHP> Переключиться на PHP-параметры