Forum Webscript.Ru

Программирование => PHP => Тема начата: clever от 03 Февраля 2004, 05:27:23

Название: Скрипт, работающий сутками
Отправлено: clever от 03 Февраля 2004, 05:27:23
Я пишу скрипт, который работает сутками на виртуальном хосте. Как мне его запустить или что написать в код, чтобы он беспрерывно работал даже при закрытии окна браузера?
А я мог потом в браузере заходить на страницу управления и отключать его или снова включать.
Название: Скрипт, работающий сутками
Отправлено: FreeSpace от 03 Февраля 2004, 06:25:34
Вообще, PHP не предназначен для работы постоянно. Он проектировался так, чтобы поработать - отдохнуть, поработать - отдохнуть. И так до нескольких десятков раз в секунду :)
А вот выносливости не хватает - долго работать не хочет.
Самое приемлемое решение - это периодически запускать скрипт по крону. Если же такое решение тебе не подходит, советую отказатся от реализации своей затеи на PHP - он для этого не предназначен.

Если не переубедил, лови пару функций, с которыми можно поиграться:
[p]set_time_limit[/p]
[p]ignore_user_abort[/p]
Не забудь почитать комментарии пользователей.
Название: Скрипт, работающий сутками
Отправлено: clever от 03 Февраля 2004, 07:10:54
Я так понял, что достаточно запустить скрипт в браузере и он будет работать "вечно", пока max_execution_time не выйдет.

А почему он не может работать месяцами, допустим? Командой sleep периодически ему можно давать отдохнуть, моё мнение.
Название: Скрипт, работающий сутками
Отправлено: FreeSpace от 03 Февраля 2004, 09:15:39
clever
Понимаешь, в идеале всё должно быть именно так, как ты описал.
Но дело в том, что пхп изначально разрабатывался не для этих целей!
Может где в экстеншене разработчики маленькую утечку памяти оставили, может где ещё какая ошибка мелкая.
"Одна бабка сказала", что Апач сам убивает подобные "потоки-зомби" через три часа работы, но я не проверял.
А под "отдыхом для скрипта" я понимал завершение работы и полную очистку памяти. Тут слипы не помогут.

Может опишешь свою задачу?
Название: Скрипт, работающий сутками
Отправлено: clever от 03 Февраля 2004, 10:16:16
Задача - чтение страниц и хождение по ссылкам пока страницы в нете не закончяаться.

Да и вллбще, хочу опробовать написания скрипта такой разновидности.
Название: Скрипт, работающий сутками
Отправлено: Макс от 03 Февраля 2004, 12:20:18
Цитировать
FreeSpace:
Вообще, PHP не предназначен для работы постоянно. Он проектировался так, чтобы поработать - отдохнуть, поработать - отдохнуть. И так до нескольких десятков раз в секунду

mod_php не предназначен, а вот php_cli должен с подобными задачами справляться (правда на практике не проверял)
Название: Скрипт, работающий сутками
Отправлено: Меняздесьдавнонет от 03 Февраля 2004, 12:20:21
clever
мое мнение, которое, конечно, ничуть тебя не поколеблет.
Тебе еще рано писать скрипты "такой разновидности".

Учитывая же, что во-первых, на РНР такие скриптов не пишут и он для них не предназначен,а во-вторых, то, что хостер его прибьет через минуну, примерно, независимо от твоих ухищрений, то задача твоястанет и вовсе бесполезной.

а так - дерзай.
Надо же чем-то руки занять.
Название: Скрипт, работающий сутками
Отправлено: FreeSpace от 03 Февраля 2004, 19:10:41
Макс
Да, видать Ромик прав, рано я взялся другим советы давать. Всё время что-то из виду упускаю...
Про CLI - имхо ты полностью прав, хотя я тоже не проверял.
Название: Скрипт, работающий сутками
Отправлено: КшЫуфксрук от 03 Февраля 2004, 19:35:00
Ты упустил один важный момент - хранение списка посещенных страниц и очереди на индексацию. Уже через пару часов работы в очереди скопится сотня тысяч урлов (или больше) и хранить их в виде массива в самом скрипте глупо, и памяти много надо и потерять обидно, если скрипт остановится. Значит нужно хранить этот список в каком-то внешнем хранилище - база или что-то еще. А как только ты решишь эту проблему, окажется, что скрипту незачем работать вечно. Его можно остановить и потом запустить снова, очередь адресов то у нас хранится независимо от скрипта.

P.S. А вообще для таких вещей нужен либо свой сервер, либо выделенная линия дома, независимо от языка реализации.
Название: Скрипт, работающий сутками
Отправлено: Меняздесьдавнонет от 03 Февраля 2004, 21:23:42
кросспостинг.