Просмотр полной версии : Любой скрипт перестаёт работать!
mailbrush
20.04.2009, 14:28
Заметил у себя на (хорошем, платном!) хостинге такую вещь. Любой скрипт, который долго выполняется перестает работать. Конкретнее: н.п. icq бот. Он должен быть все время в онлайне, т.е. скрипт должен работать постоянно, но он выключается примерно через 10мин (set_time_limit(0)). ТПхп-брут тоже перестает работать через то же время. Если это все-таки трабла в хостере - посоветуйте хостинг, на котором скрипт будет работать столько, сколько ему надо ЛИБО скажите какой функцией действительно можно увеличить макс. время выполнение (ну т.е. как сделать, чтобы скрипт работал). Отблагодарю "зелёными".
не хватает оперативки, по умолчанию это 2 метра
Пиши хостеру чтоб увеличил
http://md.php.net/manual/ru/function.memory-get-usage.php
Также в phpinfo(); пасмари скоко у тя разрешено юзать оперативки
Название memory_limit кажись
mailbrush
20.04.2009, 14:51
memory_limit 64M 64M
64мб это мало? о_О
Ну вот я тебе дал http://md.php.net/manual/ru/function.memory-get-usage.php выводи ней и проверяй... Если он умирает а места достаточно значит в другом проблемы
memory_limit 64M 64M
64мб это мало? о_О
у меня посещага 1,7 в сутки, и при 96 бывает притормаживает.
А может можно как-нибудь по истечении времени запускать другой скрипт или оперативку чистить, или ещё что?
А может попробовать ignore_user_abort(1);
Скрипт на хосте через браузер запускаешь?
mailbrush
20.04.2009, 18:04
В цикле перебора самую последнюю функцию делаюfile_put_contents("memory.txt",memory_get_usage()); В файлике 2587064
Kaimi, ничего не изменяется.
max_execution_time ???
Timeout ???
Если это все-таки трабла в хостере - посоветуйте хостинг, на котором скрипт будет работать столько, сколько ему надо ЛИБО скажите какой функцией действительно можно увеличить макс. время выполнение (ну т.е. как сделать, чтобы скрипт работал).
Если хостинг виртуальный, то такие вряд-ли найдутся(((
На VDS такое вполне реально сделать...
Проще скрипт переписать с учетом хостинга.
Pashkela
20.04.2009, 18:19
set_time_limit()
ignore_user_abort(1)
ini_alter()
ini_set()
_____________.htaccess:
php_value max_execution_time 0
php_flag ignore_user_abort true
php_value set_time_limit 0
не поможет всё вместе или по отдельности - менять хостера
ЗЫЖ Кстати, подсказка, у многих хостеров есть возомжность создавать Ваш собственный, на ваш страх и риск, php.ini, в вашей виртуальной директории. Т.е. возможность есть, но о ней мало кто знает, порой достаточно его просто саздать, правда:
1. Придется настраивать самому и полностью с нуля
2. Все риски и неудачи по падению и неработоспособности всех остальных php-скриптов - форумы, CMS и прочее - ложаться на вас.
ЗЗЫЫЖЖ Лучше юзать платного хостера, имхо. Ну и мосг по таким вопросам лучше ипсти хостеру, т.к. только хостер может обладать достоверной информацией по вопросам такого рода
Может хостер просто не позволяет запускать висящие в памяти процессы, такие хостеры есть, изучи их правила.
Вообще, как вариант - можно поставить время выполнения скрипта 5 минут и раз в 5 минут перезапускать его кроном.
Может хостер просто не позволяет запускать висящие в памяти процессы, такие хостеры есть, изучи их правила.
Вообще, как вариант - можно поставить время выполнения скрипта 5 минут и раз в 5 минут перезапускать его кроном.
крон навярняка тоже запрещен
ограничение по времени может быть как в PHP так и в Apache
в PHP можно преодалеть: вызывая 2й скрипт, который вызывает в свою очередь 1й и так далее, при этом ограничение по времени налагается только на выполняющийся в данный момент скрипт
или можно второй вариант: использовать функцию sleep() и периодически проверять нужное тебе состояние, данная функция не влияет на общий лимит времени выполнения скрипта
Мож еще кто-нибудь предложит свои идеи, т.к. для мну тоже это актуально)
в PHP можно преодалеть: вызывая 2й скрипт, который вызывает в свою очередь 1й и так далее, при этом ограничение по времени налагается только на выполняющийся в данный момент скрипт
Ты не прав, рекурсивный вызов других файлов или комманд на исполенение не даст эффекта, ибо когда истечет время для первого скрипта, то отвалятся все вызванные им скрипты. Проверено на PHP 5.2.6 уже давно.
Ты не прав, рекурсивный вызов других файлов или комманд на исполенение не даст эффекта, ибо когда истечет время для первого скрипта, то отвалятся все вызванные им скрипты. Проверено на PHP 5.2.6 уже давно.
Если производить вызов другого скрипта асинхронно то должно работать , по-крайней мере у мну так)
про асинхронные вызовы (5 разных делал) я недавно тут создавал тему http://forum.antichat.ru/thread116486.html
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot