![]() |
Межскриптовая синхронизация (PHP/Perl/SQL)
Есть такая ситуация: Запускается первый скрипт и говорит "Я Вася", через некоторое время запускается второй и говорит "Я Петя", потом запускается третий и говорит, "Я Гриша, кстати Вася, тебе что-то пришло", а Вася проверяет что ему пришло. Все скрипты должны находится в режиме ожидания и их может быть очень много.
Кто-нибудь знает как такое реализовать не запуская свой демон? С демоном через сокеты я и так уже сделал, но это не слишком универсально, может есть более удобный метод? |
А может просто запускать скрипты один из другого с нужными параметрами?
Если неправильно понял - не ругай... |
hidden, если ты это мутишь на юникс платформе в консоли, то почему бы тебе не воспользоваться системой сигналов? Заведи юзерские сигналы, повесь на них обработчики и пускай нужный скрипт реагирует на сигнал что-то проверяя...
|
2biophreak неправильно понял...
Цитата:
Цитата:
|
совсем не ясна задача
|
Цитата:
Есть таблица в SQL, пользовательский скрипт устанавливает ожидание на определённую запись в этой таблице, а когда другой скрипт изменяет эту запись, он уведомляет тех, кто ожидает эту запись. PS Такой вариант не катит. :) Код:
for(;check_sql();sleep(100)){} |
ну пусть когда какойто скрипт обновит, то он запустит тот скринт который ожидает
|
>>Есть таблица в SQL, пользовательский скрипт устанавливает ожидание на
>>определённую запись в этой таблице, а когда другой скрипт изменяет эту запись, он >>уведомляет тех, кто ожидает эту запись. ну пусть пользовательский скрипт добавляет запись в отдельную таблицу `ocheredi` с указанием типа ожидаемой записи и rand_id, затем создает у себя файл rand_id с правами записи от пользователя apache (тут нужно уточнить рамки безопасности поставленной задачи) и синхронно read ожидает поступления новых байт. соответсвенно скрипт добавляющий очередную запись в таблицу проверяет одновременно `ocheredi` на наличие записей того же типа и пишет во все rand_id о поступлении новой записи, при этом удаляя обработанные записи. |
Нее, пока-что перл-демон с блокирующими сокетами остаётся оптимальным вариантом.
Я просто подумал, может есть что-то типа CreateEvent, WaitForSingleObject (Виндовые функции) или в SQL так составить запрос, чтоб он ожидал изменения указанной записи... Anyway, thanks for the tries... :) |
>>Нее, пока-что перл-демон с блокирующими сокетами остаётся оптимальным вариантом.
только, я надеюсь, реализовано это все через unix-сокеты (af_unix)? а то на такие частые обращения портов не хватит) >>Я просто подумал, может есть что-то типа CreateEvent, WaitForSingleObject а зачем есть все на блокирующих сокетах? пусть ставит recv и ждет своего "события". >>или в SQL так составить запрос, чтоб он ожидал изменения указанной записи... не знаю как где, но mysql с его элементарным запрос-ответом этого сделать не позволит. |
| Время: 04:33 |