У меня вопрос к знающим людям, проблема такая, у меня на сервере должен отработать скрипт, скрипт этот жмет картинки, т.е. создает новую картинку из той что уже есть на сервере, но маленького размера. Фоток скопилось очень много где-то 2500. В общем, скрипт работает нормально без ошибок, но выполняется долго. В итоге выдает мне такую ошибку: Fatal error: Maximum execution time of 30 seconds exceeded in c:\myproject\cat.timeseller.ru\admin\admin\watch_catalog\generate_prev.php on line 130. Знает кто-нибудь как его можно выполнить обойдя таймаут?
Спустя 25 минут, 14 секунд (1.06.2009 - 23:05) kirik написал(а):
Попробуй вначале скрипта поставить
PHP |
set_time_limit(0); |
Спустя 4 минуты, 10 секунд (1.06.2009 - 23:09) twin написал(а):
Может не помочь... У меня сервер упрямо это игнорирует. Все от хостера зависит. Если это разовый скрипт и не поможет, то лучше перетащить на локалку, отресайзить там и обратно. Или в саппорт.
Спустя 8 минут, 33 секунды (1.06.2009 - 23:17) jetistyum написал(а):
а ты картинки не в цикле жмешь?
Спустя 8 минут, 3 секунды (1.06.2009 - 23:25) vedmed написал(а):
В цикле. Вот так приблизительно:
PHP |
foreach ($dat as $arr) { |
Спустя 7 минут, 6 секунд (1.06.2009 - 23:33) vedmed написал(а):
set_time_limit(0); - помогло выполниться на локальном компе. А можно как-то узнать, сработает ли это на сервере, кроме как запустить скрипт?
Спустя 1 минута, 35 секунд (1.06.2009 - 23:34) twin написал(а):
У тебя 2500 запросов... Караул конечно. Частями надо. А что мешает запустить?
Спустя 6 минут, 54 секунды (1.06.2009 - 23:41) vedmed написал(а):
Боюсь половинчатого действия в случае если сбросит по таймауту.
Спустя 4 минуты, 34 секунды (1.06.2009 - 23:46) twin написал(а):
Запусти пустой цикл со слипом к примеру и посмотри.
Спустя 4 минуты, 58 секунд (1.06.2009 - 23:51) vedmed написал(а):
Ок.Спасибо всем.Попробую.
Спустя 7 секунд (1.06.2009 - 23:51) twin написал(а):
Можно вообще без цикла
PHP |
set_time_limit(0); |
Спустя 6 часов, 58 минут, 26 секунд (2.06.2009 - 06:49) kirik написал(а):
Цитата (twin @ 1.06.2009 - 15:51) | ||
Можно вообще без цикла
|
Только нужно брать во внимание, что этот пример сработает только под Win сервером, а под Unix функция sleep не считается как время выполнения скрипта (наравне с запросами в БД, system(), exec()..)
Спустя 2 часа, 28 минут, 24 секунды (2.06.2009 - 09:18) vedmed написал(а):
А есть идеи как можно проверить на *inux сервере?
Спустя 3 минуты (2.06.2009 - 09:21) kirik написал(а):
Цитата (vedmed @ 2.06.2009 - 01:18) |
А есть идеи как можно проверить на *inux сервере? |
Ну дык phpinfo() глянь
Спустя 7 минут, 15 секунд (2.06.2009 - 09:28) sergeiss написал(а):
Еще вариант, про который я уже много раз тут говорил - это чтобы скрипт вызывал сам себя. Например, сделать так, чтобы скрипт обрабатывал одну картинку, после чего (через ДжаваСкрипт) вызывал сам себя, с указанием в параметрах на загрузку следующего файла.
Надо только создать список файлов в каком-то файле, и брать оттуда имя текущего файла для обработки. Как только файл-список опустел, то обработка заканчивается.
И обрабатывай хоть десятки тысяч фоток, до лимита времени никогда не дойдешь. Потому что таймер при каждом новом вызове обнуляется.
Надо только создать список файлов в каком-то файле, и брать оттуда имя текущего файла для обработки. Как только файл-список опустел, то обработка заканчивается.
И обрабатывай хоть десятки тысяч фоток, до лимита времени никогда не дойдешь. Потому что таймер при каждом новом вызове обнуляется.
Спустя 14 минут, 12 секунд (2.06.2009 - 09:42) twin написал(а):
Это не обязательно на js делать. можно просто. ну остановится скрипт, запусти еще раз. Или если лениво просто рефрешь на минуту поставить и курить бамбук.
Проверить лимит можно так:
Проверить лимит можно так:
PHP |
set_time_limit(31); |
А вообще sergeiss дело говорит.
Спустя 24 минуты, 16 секунд (2.06.2009 - 10:06) twin написал(а):
Вот это попробуй, я не проверял правда
Сначала список файлов
Сначала список файлов
PHP |
$result = mysql_query("SELECT `ph6` FROM `watch_records`"); |
А потом примерно так:
PHP |
header("Refresh: 60; url=".$_SERVER['PHP_SELF'] ); |
и пускай молотит.
Спустя 1 день, 19 минут, 37 секунд (3.06.2009 - 10:26) vedmed написал(а):
Спасиб,уже решил. Выполнил все у себя на машине, а потом обновил на сервере.
set_time_limit(0) - сервер проигнорил
set_time_limit(0) - сервер проигнорил
Спустя 9 минут, 49 секунд (3.06.2009 - 10:36) stepan написал(а):
У меня с jommla была такая ошибка я пробывал в скрипт кидал set_time_limit(0) но на сервере игнорирует, а через .htaccess все съел.