Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Любой скрипт перестаёт работать! (https://forum.antichat.xyz/showthread.php?t=116825)

mailbrush 20.04.2009 14:28

Любой скрипт перестаёт работать!
 
Заметил у себя на (хорошем, платном!) хостинге такую вещь. Любой скрипт, который долго выполняется перестает работать. Конкретнее: н.п. icq бот. Он должен быть все время в онлайне, т.е. скрипт должен работать постоянно, но он выключается примерно через 10мин (set_time_limit(0)). ТПхп-брут тоже перестает работать через то же время. Если это все-таки трабла в хостере - посоветуйте хостинг, на котором скрипт будет работать столько, сколько ему надо ЛИБО скажите какой функцией действительно можно увеличить макс. время выполнение (ну т.е. как сделать, чтобы скрипт работал). Отблагодарю "зелёными".

Ponchik 20.04.2009 14:37

не хватает оперативки, по умолчанию это 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мб это мало? о_О

Ponchik 20.04.2009 15:06

Ну вот я тебе дал http://md.php.net/manual/ru/function.memory-get-usage.php выводи ней и проверяй... Если он умирает а места достаточно значит в другом проблемы

nonamez 20.04.2009 15:53

Цитата:

Сообщение от mailbrush
Код:

memory_limit        64M        64M
64мб это мало? о_О

у меня посещага 1,7 в сутки, и при 96 бывает притормаживает.

Ru}{eeZ 20.04.2009 15:57

А может можно как-нибудь по истечении времени запускать другой скрипт или оперативку чистить, или ещё что?

Kaimi 20.04.2009 16:04

А может попробовать ignore_user_abort(1);
Скрипт на хосте через браузер запускаешь?

mailbrush 20.04.2009 18:04

В цикле перебора самую последнюю функцию делаю
PHP код:

file_put_contents("memory.txt",memory_get_usage()); 

В файлике
Цитата:

2587064
Kaimi, ничего не изменяется.

GuD-ok 20.04.2009 18:06

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 и прочее - ложаться на вас.

ЗЗЫЫЖЖ Лучше юзать платного хостера, имхо. Ну и мосг по таким вопросам лучше ипсти хостеру, т.к. только хостер может обладать достоверной информацией по вопросам такого рода

d_x 20.04.2009 20:38

Может хостер просто не позволяет запускать висящие в памяти процессы, такие хостеры есть, изучи их правила.
Вообще, как вариант - можно поставить время выполнения скрипта 5 минут и раз в 5 минут перезапускать его кроном.

xssww2 21.04.2009 20:58

Цитата:

Сообщение от d_x
Может хостер просто не позволяет запускать висящие в памяти процессы, такие хостеры есть, изучи их правила.
Вообще, как вариант - можно поставить время выполнения скрипта 5 минут и раз в 5 минут перезапускать его кроном.

крон навярняка тоже запрещен
ограничение по времени может быть как в PHP так и в Apache
в PHP можно преодалеть: вызывая 2й скрипт, который вызывает в свою очередь 1й и так далее, при этом ограничение по времени налагается только на выполняющийся в данный момент скрипт
или можно второй вариант: использовать функцию sleep() и периодически проверять нужное тебе состояние, данная функция не влияет на общий лимит времени выполнения скрипта

Мож еще кто-нибудь предложит свои идеи, т.к. для мну тоже это актуально)

SQLHACK 22.04.2009 12:13

Цитата:

Сообщение от xssww2
в PHP можно преодалеть: вызывая 2й скрипт, который вызывает в свою очередь 1й и так далее, при этом ограничение по времени налагается только на выполняющийся в данный момент скрипт

Ты не прав, рекурсивный вызов других файлов или комманд на исполенение не даст эффекта, ибо когда истечет время для первого скрипта, то отвалятся все вызванные им скрипты. Проверено на PHP 5.2.6 уже давно.

xssww2 22.04.2009 14:41

Цитата:

Сообщение от SQLHACK
Ты не прав, рекурсивный вызов других файлов или комманд на исполенение не даст эффекта, ибо когда истечет время для первого скрипта, то отвалятся все вызванные им скрипты. Проверено на PHP 5.2.6 уже давно.

Если производить вызов другого скрипта асинхронно то должно работать , по-крайней мере у мну так)
про асинхронные вызовы (5 разных делал) я недавно тут создавал тему http://forum.antichat.ru/thread116486.html


Время: 17:48