За последние 24 часа нас посетили 18814 программистов и 1702 робота. Сейчас ищут 753 программиста ...

Демон на php, оно того стоит?

Тема в разделе "Прочие вопросы по PHP", создана пользователем vladikamira, 19 авг 2011.

  1. vladikamira

    vladikamira Активный пользователь

    С нами с:
    11 авг 2011
    Сообщения:
    13
    Симпатии:
    0
    Есть задача, нужно из таблицы брать некоторые задания для выполнения, их может быть и не быть в момент времени Х, а может быть много, по этим "задачам" нужно выполнять некоторое действия (обращения к внешней системе через xmlrpc запись в БД), данные должны обрабатываться довольно быстро, что бы задачи в БД не копились. Есть несколько решений(придумал на вскидку), первое это crond, второе это while(1){погнали чекать и обрабатывать задания; sleep(X)} и третье более заманчивое решение (которое я бы реализовал лучше на perl, но надо именно на PHP!), это сделать демона который бы запускал в "потоках" под процессы, контролировал их выполнения (в зависимости от кода завершения потомка решал бы что делать с заданиями и так далее). Демон еще хорош тем, что если заданий будет много (а на одно задание может уйти от 2 до 60 секунд, это можно понять от типа задания), можно действительно быстро разгребать все задания довольно быстро, за счет множества процессов потомков, которые по сути выполняют одинаковую операцию но с разным кол-ом данных.
    Собственно вопрос, кто-нибудь делал па php деманы? Можно ли на этом языке реализовать полноценный демон со всеми свойствами которые присущи деманам в POSIX системах?
     
  2. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    сам не делал, но по отзывам сделать демон на php особого гемора не составляет.

    Вроде бы http://phpdaemon.net/ - этот фреймворк облегчает задачу.

    http://habrahabr.ru/blogs/php/79377/ - о нем на Хабре.
     
  3. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    http://ru2.php.net/manual/en/refs.filep ... rocess.php
    Все, что хотите.

    phpDaemon - это фреймворк для асинхронной обработки входящих запросов, т.е. не совсем то.

    Тут все банально - бесконечный цикл с проверкой базы и форки. Не понимаю, в чем проблема, особо если "сделал бы на перле".
     
  4. vladikamira

    vladikamira Активный пользователь

    С нами с:
    11 авг 2011
    Сообщения:
    13
    Симпатии:
    0
    проблема в том, что я не знаю на сколько он стабильно себя ведет, сейчас почитал в интерентах, и пришел к выводу, что достаточно надежные решения можно делать.
     
  5. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Ну посадите в крон скриптик на проверку - жив ли мастер-процесс, и запуск его, если помер.
    Этот демон все-равно перезапускать бы переодически, дабы исключить большие утечки памяти.
     
  6. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    думал я както осилить этот фреймворк. Перечитал все статьи на хабре о нем (там штук 5), прочитал мануал на гитхабе, прочитал вопросы от юзеров на том же гитхабе. Начал ставить себе. Трахался два дня, с трудом удалось запустить 1 example из .. пяти, или сколько их там. Решил спросить автора. Нарыл его имейл, написал ему лично - там вопросов на 5 минут было. Он мне написал, что мол "пиши в группы". Я вообще ниипу, что за группы. Начал копаться в его контактах и смотреть куда там вообще можно написать. Нашел раздел на гитхабе, где спрашивали люди. Задал вопрос туда. Он мне там отвечает, что это не группы, то есть я опять не туда написал. Я его мысленно нафиг послал с такой поддержкой и забил на тот пхпдемон, тем более что там сплошной косяк с сессиями был, что юзеру могла достаться чужая сессия. Потому ну его в пень
    Лучше 440-го спросить по обычным демонам, он их писал и делал доклад на devconf, если не ошибаюсь. Там гемороя тоже хватает, но написать простое с использованием цикла и форков - вполне возможно.
     
  7. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Апельсин
    жуть)))
     
  8. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    tommyangelo
    Не рекомендуйте то, чего не пробовали сами

    нет, не облегчает. Он лишь делает только то что должен делать... теоретически


    Апельсин
    +2

    vladikamira
    Да, есть инструменты, только проверьте, что они доступны на хостинге
    http://www.php.net/manual/en/book.pcntl.php