Контроль выполнения процесса

Тема в разделе "PHP", создана пользователем PocketDevil, 8 мар 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. PocketDevil

    PocketDevil Постоялец

    Регистр.:
    26 янв 2008
    Сообщения:
    92
    Симпатии:
    160
    Нужны советы по контролю выполнения скрипта.
    Есть задача парсить или чекать линки (очень много).
    Нужно контролировать этот процесс, если процесс отвалился, то восстанавливать процесс с последнего удачного результата.
    При этом для устойчивой многопоточности, надо гарантировать, что если поток умрет, не остановит все остальные.
    Подскажите, кто сталкивался...
     
  2. Acidrayne

    Acidrayne

    Регистр.:
    30 сен 2007
    Сообщения:
    296
    Симпатии:
    20
    используйте для этих целей perl
     
  3. PocketDevil

    PocketDevil Постоялец

    Регистр.:
    26 янв 2008
    Сообщения:
    92
    Симпатии:
    160
    Да я знаю, что он больше подходит для таких задач,но в перле не силён =(
    Поэтому, каждый крутится как может.
     
  4. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    Можно вести историю каждого процесса- пусть он пишет в отдельный текстовый файл какие-нибудь данные.
     
  5. t0os

    t0os

    Регистр.:
    21 окт 2007
    Сообщения:
    284
    Симпатии:
    36
    Пишите в базу последний обработанный файл. С помощью базы можно и потоками управлять, например, создать флаги останова скрипта и все такое подобное.
     
  6. PocketDevil

    PocketDevil Постоялец

    Регистр.:
    26 янв 2008
    Сообщения:
    92
    Симпатии:
    160
    Да, с базой интересно.
    Создавать временную таблицу под процессы и по кол-ву потоков коли-во записей. Блокировать записи для проверки, умер ли скрипт, если запись не заблокирована значит данный поток умер или завис и его надо перезапускать...
    Как думаете такой вариант будет работать?
     
  7. judgefog

    judgefog

    Регистр.:
    12 авг 2006
    Сообщения:
    487
    Симпатии:
    335
    http://dklab.ru/chicken/nablas/53.html
     
    PocketDevil нравится это.
  8. PocketDevil

    PocketDevil Постоялец

    Регистр.:
    26 янв 2008
    Сообщения:
    92
    Симпатии:
    160
    Не открывается, с разных компов пробовал :(

    когда лежит сайт,
    берем кэш гугла
     
  9. dazed

    dazed

    Регистр.:
    31 мар 2007
    Сообщения:
    208
    Симпатии:
    55
    очень простая задача решаемая с помощью крона, суть такова как писали выше нужно создать вспомогательную таблицу куда можно будет писать значение последней переменной.


    Алгоритм такой:

    1. Получаем из вспомогательной таблицы значение last_id
    2. Делаем выборку из таблицы где id больше значения last_id с limit 1
    3а. Если ответ с нулевым результатом то last_id приравниваем значению last_id 0, и сохраняем в базе.
    3б. Если же ответ есть, то обрабатываем запись из таблицы, приравниваем last_id текущему id из таблицы, и делаем нужные задачи с данными, лезем по ссылке итп..

    дальше можно чтобы каждую минуту поставить чтобы запускался крон
     
  10. turboman

    turboman Писатель

    Регистр.:
    5 мар 2009
    Сообщения:
    4
    Симпатии:
    1
    Тоже решал похожую задачу. Скрипт-чекер берет данные для проверки из базы, и переодически пишет в файл текущее время, текущую информацию о том что проверяет и id процесса. Так же работает скрипт на кроне, который обходит все файлы, созданные потоками и смотрит на время записи из файла.. если разница между текщим временем и временем активности потока больше заданного значения (скрипт завис) - снимает зависший поток и запускает его заново.
     
Статус темы:
Закрыта.