![]() |
|
Модераторы: 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 |
|
|||
|
||||
| ShurikA |
|
|||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: нет Всего: 3 |
||||
|
||||
| youri |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: нет Всего: 16 |
возможности запускать и продолжать нет, по-крайней мере я не нашел. Стандартные функции либо дожидаются завершения процесса либо не дают его оставить (правда есть еще pcntl, который по умолчанию отключен) У меня была идея запустить bash-скрипт, который в фоне запускает процесс и говорит bash не завершать его при выходе из скрипта, но она не заработала лучше всего, если есть возможность запуска команд, запустить скрипт через at
еще есть set_time_limit, но он, как и запуск программ скорее всего отключен на хостинге
Это сообщение отредактировал(а) youri - 30.11.2008, 16:58 |
||||||||
|
|||||||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
|
|||
|
||||
| dark_religion |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 8.9.2006 Репутация: нет Всего: -3 |
Кароче написанно много! Но я прочитав не понял как все же пользователь может скачивать файлы размер которых достаточной большой что бы скачивание длилось больше 10 минут например , как прописано в настройках хостера!
Cron решение, плохое решение! Существует ли решение лучше? Или если это единственное решение, то каким образом это должно происходить! Пользователь начинает скачивание и через 10 минут запускается крон по моему это бред или же пользователь ждет 10 минут пока запустится крон это тоже бред, не верю что бы это было решением! |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
dark_religion, при чем тут пользователь? речь шла об управлении закачкой с одного сервера на другой по желанию администратора системы.
|
|||
|
||||
| dark_religion |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 8.9.2006 Репутация: нет Всего: -3 |
skyboy,
Как я понял, люди хотят update сайт и из-за лимита на выполнение скрипта ищут уже и другие решения, исходя из собственного опыта... независимо от http итд. но вопрос по прежнему заключается в том как передать данные, и решения типо крона искать не стоит, так как на другом форуме я видел, что есть стандартное решение, как передать файлы которые передаются дольше 10 минут! И CRON туда явно никак не вписывается. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Для профи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |