Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Слежение за внешним фоновым процессом, как отследить завершение 
:(
    Опции темы
jsa
Дата 24.3.2009, 18:51 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 704
Регистрация: 19.1.2006
Где: Новосибирск

Репутация: нет
Всего: 20



Hi All!

есть необходимость запускать через system внешний процесс, причем в бакграунде, вопрос в том как отследить завершение процесса, причем не просто завершение, но и важен ответ, думаю создавать блокировки, можно на уровне файлов, или БД

кто че думает по этому поводу, может есть какие наработки?


--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
IZ@TOP
Дата 25.3.2009, 02:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Цитата(jsa @  24.3.2009,  19:51 Найти цитируемый пост)
есть необходимость запускать через system внешний процесс, причем в бакграунде, вопрос в том как отследить завершение процесса, причем не просто завершение, но и важен ответ, думаю создавать блокировки, можно на уровне файлов, или БД

Можно уточнить: Вы собираетесь некое приложение демонизировать, отслеживать его выполнением и получить результат его работы?

Для чего Вам в этом случае PHP не совсем понятно.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
jsa
Дата 25.3.2009, 05:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 704
Регистрация: 19.1.2006
Где: Новосибирск

Репутация: нет
Всего: 20



Цитата(IZ@TOP @  25.3.2009,  07:29 Найти цитируемый пост)
Можно уточнить: Вы собираетесь некое приложение демонизировать, отслеживать его выполнением и получить результат его работы?

да

Цитата(IZ@TOP @  25.3.2009,  07:29 Найти цитируемый пост)
Для чего Вам в этом случае PHP не совсем понятно.

ну да, немного не в тему, сорри, есть система, написанная на пхп, котороя должна передавать данные другой системе, данные могут быть большими, во время передачи, страница должна жить, это не проблема, проблема отследить демона

Добавлено через 1 минуту и 30 секунд
демон как раз и будет передавать,  и резалутаты его передачи нужно получить обратно 


--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
IZ@TOP
Дата 25.3.2009, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



1. Если это постоянная процедура - для запуска используйте крон.
2. Данные, которые передаются между системами можно писать в лог.
3. Для вывода некой статистики, как я понял, можно читать данные из лога (см. пункт 2).

Если я чего-то не понял, обрисуйте задачу яснее.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
jsa
Дата 25.3.2009, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 704
Регистрация: 19.1.2006
Где: Новосибирск

Репутация: нет
Всего: 20



Цитата(IZ@TOP @  25.3.2009,  21:17 Найти цитируемый пост)
1. Если это постоянная процедура - для запуска используйте крон.

не пойдет, процедура выполняется по запросу пользователя
Цитата(IZ@TOP @  25.3.2009,  21:17 Найти цитируемый пост)
Если я чего-то не понял, обрисуйте задачу яснее.

итак... по запросу пользователя (нажали на ссылку) запускаем демон, отдали странице отчет что дмон запушен, на странице выполняется, через некие промежутки времени, скрипт опроса состояния демона, как только демон закончил работу, отправляем на страницу отчет о работе демона

вопрос: как лучше реализовать механизм определяющий, жив ли демон или уже закончил работу?

Добавлено через 31 секунду
надеюсь понятно объяснил  smile 


--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
IZ@TOP
Дата 25.3.2009, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Цитата(jsa @  25.3.2009,  20:17 Найти цитируемый пост)
итак... по запросу пользователя (нажали на ссылку) запускаем демон, отдали странице отчет что дмон запушен, на странице выполняется, через некие промежутки времени, скрипт опроса состояния демона, как только демон закончил работу, отправляем на страницу отчет о работе демона

вопрос: как лучше реализовать механизм определяющий, жив ли демон или уже закончил работу?


1. По запросу пользователя создаем очередь в базе данных.
2. Выводим пользователю сообщение, о том, что необходимо подождать некоторое время выполнения действия.
3. По крону раз в минуту запускаем обработчик очереди, который выполняет необходимые действия. 
4. Обработчик очереди пишет лог.
5. Как только видим флаг окончания работы в логе по идентификатору очереди созданной пользователем - выводим информацию о проделанной работе.

Если данная процедура слишком часта, советую ставить лок на крон, что бы данный скрипт не забил систему своими копиями.
Поставить лок можно при помощи системной функции lock:

Код

lockf -st 0 /tmp/processname.lock /usr/local/bin/php /www/example.com/crontab/scriptname.php



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
jsa
Дата 25.3.2009, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 704
Регистрация: 19.1.2006
Где: Новосибирск

Репутация: нет
Всего: 20



Цитата(IZ@TOP @  26.3.2009,  00:23 Найти цитируемый пост)
1. По запросу пользователя создаем очередь в базе данных.

что есть понятие очередь, не понял
Цитата(IZ@TOP @  26.3.2009,  00:23 Найти цитируемый пост)
5. Как только видим флаг окончания работы в логе по идентификатору очереди созданной пользователем

кто должен увидеть флаг, обработчик?

Добавлено через 10 минут и 46 секунд
если конкретно, то задача стоит передать файл по  фтп с одного сервера на другой
т.е. мне нужно дожадаться пока демон не передаст файл, а файлы могут быть большие



--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
jsa
Дата 25.3.2009, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 704
Регистрация: 19.1.2006
Где: Новосибирск

Репутация: нет
Всего: 20



Цитата(jsa @  26.3.2009,  00:38 Найти цитируемый пост)
что есть понятие очередь, не понял

нашел в википедии


--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
IZ@TOP
Дата 26.3.2009, 03:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Если уж проще, то, создаем табличку в базе с  идентификатором пользователя, который инициировал очередь, именем файла (загруженного пользователем?) который будет залит на FTP, текущем состоянии (назначен, исполняется, завершен) очереди. Когда пользователь загружает (предполагаю) файл, скрипт заносит в базу необходимые данные и оповещает пользователя о том, что ему необходимо немного подождать. Когда по крону срабатывает скрипт (не демон - почитайте в вики, что есть демон), он идет в базу и смотрит очередь на предмет заданий со статусом "назначен", после чего берет оттуда информацию, устанавливает флаг "исполняется" и заливает файл на FTP. Когда процесс завершится, скрипт обновит данные записи в очереди и назначит заданию статус "завершен", после чего, когда пользователь обновит страничку - увидит, что его текущее задание исполнено.

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


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
jsa
Дата 26.3.2009, 05:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 704
Регистрация: 19.1.2006
Где: Новосибирск

Репутация: нет
Всего: 20



IZ@TOP, сенькс


--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0502 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.