Время выполнения скрипта.

Royal Flash

-=MaestrO=-
Время выполнения скрипта.

Нашел 3 способа, установить время выполнения скрипта.

set_time_limit (500) - устанавливает максимально возможное время выполнения скрипта.

ini_set ( 'max_execution_time', 500) - на сколько я понял из мануала - идентично set_time_limit (500), только еще работает в save mode, и не распространяется на загрузку переменных и файлов?

ini_set ( 'max_input_time', 500) Насколько я понял из мануала, делает тоже, что и два предидущих примера, с тем отличаем, что распространяется только на получение входящих данных (POST, GET, file uploads)

1. Увеличение времени исполнения мне необходимо для скрипта-загрузчика файлов. Подскажите: чем лучше воспользоваться для этих целей?

2. И еще, по умолчанию в PHP max_execution_time установлен на 30 сек, а max_input_time на 60. Это значит, что, к примеру, цикл будет исполнятся не более 30 сек, а загрузка файла не более 60?

3. Что будет, если поставить set_time_limit (500): загрузка файлов, переменных и время выполнения скрипта в целом (цикл, запросы к БД и т.д.) будет происходить не более 500 секунд?

P.S. Просьба не отправлять меня назад в ман :), в английском я не профи.
 

Royal Flash

-=MaestrO=-
berkut
Что мог, уже давно проверил, только вот max_input_time, нет возможности проверить. А отличий в set_time_limit (500) и ini_set ( 'max_execution_time', 500) я не нашел никаких... Да и ответ на вопрос №2 меня очень интересует... Зачем при загрузке файлов на сервер, указывать ini_set ( 'max_execution_time', 500), если, по идее, можно указать ini_set ( 'max_input_time', 500), хотя в топиках, которые я читал, связанных с загрузкой файлов, везде речь идет о ini_set ( 'max_execution_time', 500) или set_time_limit (500)?
 

Royal Flash

-=MaestrO=-
Вот выдержка из http://phpclub.ru/manrus/f/set-time-limit.html
Примечание: функция set_time_limit() и директива конфигурации max_execution_time влияют только на время выполнения самого скрипта. Любое время, затраченное на деятельность вне выполнения скрипта, такую как системные вызовы с помощью system(), функция sleep(), запросы к БД etc. не включается при подсчёте максимального времени работы скрипта.
Полный бред.
Для примера, простой скрипт:
PHP:
set_time_limit(3);
echo "????????????";
sleep (4);
echo "!!!!!!!!!!!!";
Исходя из приведенной высше цитаты, результатом работы этого скрипта должно стать вывод в броузер ???????????? и !!!!!!!!!!!!. Только, на самом деле, через 4 секунды выводится только ????????????, и сообщение об ошибке: Fatal error: Maximum execution time of 3 seconds, что полностю противоречит утверждению: "Любое время, затраченное на деятельность вне выполнения скрипта, такую как системные вызовы с помощью system(), функция sleep(), запросы к БД etc. не включается при подсчёте максимального времени работы скрипта." Выходит, что включается.

Да, и если можно, подробнее, почему нижепреведенная цитата - бессмыслена?
> при загрузке файлов на сервер, указывать ini_set ( 'max_execution_time', 500)
 

mani13

Новичок
Royal Flash, может будешь проверять сначала?
$ cat test.php
#!/usr/bin/php
<?php
set_time_limit(3);
$time_start = microtime(1);
echo "????????????".chr(10);
sleep (4);
echo "!!!!!!!!!!!!".chr(10);
echo (microtime(1)-$time_start).chr(10);
?>

$ ./test.php
????????????
!!!!!!!!!!!!
4.0008649826

$ cat test.php
#!/usr/bin/php
<?php
set_time_limit(3);
$time_start = microtime(1);
echo "????????????".chr(10);
for ($i=1;$i<=1000000;++$i) {
for ($j=1;$j<=1000000;++$j) {
}
}
echo "!!!!!!!!!!!!".chr(10);
echo (microtime(1)-$time_start).chr(10);
?>

$ ./test.php
????????????

Fatal error: Maximum execution time of 3 seconds exceeded in /home/ifl/test.php on line 7
 

Royal Flash

-=MaestrO=-
mani13
Представь, проверял. Вот только под WinXP и PHP5 - так sleep() работает 4 секунды, после чего выводится сообщение о ошибке. А вот под линухом и PHP 4.3.9. - действительно, утверждение верно...[цензура]...
Почему так все плохо?! Ведь в мане, обычно указываются, что, например, с Линухом так, а с Виндой не так..., или из-за разных версий PHP...

Вот от сюда и вытекает вопрос: загрузка файла на сервер средствами PHP поподает в это самое "время выполнения скрипта"? Исходя из предположения, что загрузка файла поподает под действие фразы: "Любое время, затраченное на деятельность ВНЕ выполнения скрипта", set_time_limit устанавливать тоже не имеет смысла? Хотя практика подсказывает, что без продления времени исполнения скрипта, попытка загрузить объемный файл, при небольшой скоростной способности какнала пользователя, завершится неудачей...

Вот и верь после этого мануалу... :(
 

SiMM

Новичок
> Да, и если можно, подробнее, почему нижепреведенная цитата - бессмыслена?
> при загрузке файлов на сервер, указывать ini_set ( 'max_execution_time', 500)
Потому что ЭТА фраза к самому процессу upoad'а не имеет никакого отношения - она выставляет время ВЫПОЛНЕНИЯ скрипта. Вполне естесственно, что время, когда скрипт ещё даже не пропарсился, в него не входит.
 
Сверху