![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| ShurikA |
|
|||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: нет Всего: 3 |
Такая проблемма:
У нас в процессе update-а скачиваются фаилы через FTP. Время от времени эта процедура занимает много времени и мы соответственно вылетаем по timeout-у. Каким обазом можно запустить этот процесс независимо от HTTP запроса? (естественно потом нужно будет мониторить когда он закончится, но это уже другая задача)? Или же есть другие предложения... |
|||
|
||||
| solenko |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 2 Всего: 67 |
ShurikA, cron.
По приходу http запроса ставим статус "в очереди", по старту cron скрипта выбираем поочередно все что в очереди, выставляем статус "в обработке" и запускаем обработку. По завершению обработки итема -- статус "готово" -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
| ShurikA |
|
|||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: нет Всего: 3 |
solenko,
Элегантно Имеется в виду каждий раз создавать и убивать cron или просто запускать тотже самый? (я, если честно, никгда с cron-ом не работал) Если не сложно, можно короткий пример? Добавлено через 8 минут и 57 секунд А не стоит ли просто прогнать PHP скрипт с командной строки? (кодом конечно) |
|||
|
||||
| solenko |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 2 Всего: 67 |
ShurikA, cron -- системный демон, который просто выполняет команда по расписанию. В вашем случае это просто php cronscript.php, который запускается, например, раз в 10 минут.
Ну а в cornscript.php мы просто выбираем опреации из очереди (база, файл -- по вкусу) и, те которые еще не выполнены выполняем. Пример кода приводить бессмысленно. -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
| ShurikA |
|
|||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: нет Всего: 3 |
solenko,
Но его не нужно запускать раз в 10 минут, а только тогда когда нужно. То есть сам cron нужно созадавать из PHP кода. Каким образом это делается? Такой подход прекрасен для массовой рассылки, на пример. Но никак не для перегона фаилов с одного сервера на другой при этом показывая статус пользователю. Может я просто не правильно объяснился... |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 1 Всего: 386 |
solenko, Осталось только убедить хостера что крон есть и скрипты , запускаемые кроном имеют право жить больше 30 секунд
Впрочем для крона и перекачки по ftp можно обойтись и без php. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| ShurikA |
|
|||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: нет Всего: 3 |
Ну вот этого не хотелось бы. Добавлено через 1 минуту и 17 секунд Так у этих сцриптов, вроде как, нету timeout-a by default. |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 1 Всего: 386 |
ShurikA,
А зачем для передачи по ftp обязательно php? cron'у вообще говоря без разницы, запускать скрипт или wget/wput... В шеле тоже можно неслабую логику наворотить
Все зависит от настроения хостера. Редкому хостеру приходится вычищать машину от висящих php-демонов более 3-х раз Проверять надо. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| ShurikA |
|
|||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: нет Всего: 3 |
Так в этом всё и дело, не для себя пишу же Как запустить скрипт в шеле и не дожидаясь ответа продолжить дальже? |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 1 Всего: 386 |
ShurikA, Дык этта... Про Крон-же говорим
Для крона нужно состряпать шеловский скрипт со следующей сутью - если есть файл exec.me - запускаем его на выполнение, результат складываем в лог. после выполнения - убиваем файл. Вот этот скриптик можно в кроне запускать хоть даже раз в минуту. exec.me можно сочинить php'ой. Навставлять туда команд прекачки туда-сюда по ftp, а потом - запуск скрипта обработки всего этого добра. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| ShurikA |
|
|||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: нет Всего: 3 |
ksnk,
Так если есть возможность запускать и продолжать, зачем cron создавать? Запустили:
и поехали дальше... Добавлено через 5 минут и 23 секунды или наверное правильнее будет через proc_open. |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
|
|||
|
||||
| ShurikA |
|
|||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: нет Всего: 3 |
||||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 1 Всего: 386 |
ShurikA, На многих хостерах закрыты функции popen, system и т.д. Так что cron может быть спасением...
Это сообщение отредактировал(а) ksnk - 28.11.2008, 14:27 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Для профи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |