[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP демон и mysql
Страницы: 1, 2
vetatto
Привет Всем. Столкнулся с такой проблемой. На сервере должен работать демон, который с определенной периодичностью получает данные из mysql и обрабатывает их. Демон имеет три дочерних процесса. И вот эти три процесса и производят выборку из таблицы и обрабатывают данные.

В Mysql не силен, но если делать стандартный селект, то каждая строчка БД обрабатывается 3 раза. А нужно, чтоб один раз.

Подскажите как реализовать.

Спасибо!
Игорь_Vasinsky
а чем крон не подходит? ну не суть.

Цитата
три процесса и производят выборку из таблицы и обрабатывают данные.


не совсем понятно.

1 таблица - но 3 разных алгоритма?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Guest
Крон не подходит так как его приходиться запускать ежесекундно.

Да уж описал странно. Есть три дочерних процесса каждый берет данные из базы, дак вот нужно сделать так, чтоб данные не повторялись.
Игорь_Vasinsky
ещё страннее описал)

данные не повторялись...

ты объясни нормально - этот процесс должен выбрать то из это таблице
второй - это из той и т.д.

в итоге мне нужно получить данные в виде или и т.д. и т.п.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
vetatto
Не заметил, что сессия закончилась, написал от имени гостя. Суть демона взять новую запись из базы и обработать ее , обработка может занимать до 1 минуты. Но для ускорения есть три процесса выполняющих эту задачу, но вот они одновременно делают селект из таблицы и получают например id 1,1,1 а нужно 1,2,3, подключение к mysql идёт в цикле дочернего процесса после fork.
Игорь_Vasinsky
1 минута? видимо много данных...

даже если делать вложенные запросы - то время навряд ли сократиться.

а зачем тебе одновременно получать запись тремя запросами? получил одним - использовал для других

всё равно смутно понимаю - что пытаешься добиться



_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
vetatto
Обработка заключается в curl запросе на другие сервера, таймаут до 1минуты, потом идёт обработка ответа сервера, дак вот запросы нужно делать раз в час, а их может быть и 100, а может быть и 1000 и вот нужно в любом случае их обработать (чем больше будет запросов, тем больше дочерних процессов)


vetatto
А как можно передать данные в дочерний процесс из другого дочернего процесса?
Игорь_Vasinsky
наверно, не приходилось ни с демонами, ни с форками работать..

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
vetatto
Это точно. Спасибо за направление хоть, буду разбираться
killer8080
Цитата (vetatto @ 5.04.2013 - 18:54)
А как можно передать данные в дочерний процесс из другого дочернего процесса?
vetatto
Благодарю!
killer8080
vetatto
погугли IPC в PHP
sergeiss
Я вот тоже не понял: зачем плодить какие-то дочерние процессы? Почему бы не брать за один заход по одному процессу? Всё можно красиво организовать.
А обмен данных между последовательными процессами организовать не проблема.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
killer8080
Цитата (sergeiss @ 5.04.2013 - 19:26)
Я вот тоже не понял: зачем плодить какие-то дочерние процессы?

например чтоб ускорить процесс, распараллеливание задач имеет смысл.
Но архитектуру нужно пересматривать, многопроцессовые демоны нужно строить по принципу мастер-слейв. Главный процесс должен распределять задания по слейвам, и следить за их состоянием, при необходимости перезапускать форки (на случай утечки памяти например)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.