Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
Межскриптовая синхронизация (PHP/Perl/SQL) |

31.10.2007, 12:58
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
Межскриптовая синхронизация (PHP/Perl/SQL)
Есть такая ситуация: Запускается первый скрипт и говорит "Я Вася", через некоторое время запускается второй и говорит "Я Петя", потом запускается третий и говорит, "Я Гриша, кстати Вася, тебе что-то пришло", а Вася проверяет что ему пришло. Все скрипты должны находится в режиме ожидания и их может быть очень много.
Кто-нибудь знает как такое реализовать не запуская свой демон? С демоном через сокеты я и так уже сделал, но это не слишком универсально, может есть более удобный метод?
|
|
|

31.10.2007, 13:10
|
|
Постоянный
Регистрация: 03.08.2007
Сообщений: 367
Провел на форуме: 876216
Репутация:
209
|
|
А может просто запускать скрипты один из другого с нужными параметрами?
Если неправильно понял - не ругай...
|
|
|

31.10.2007, 13:16
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
hidden, если ты это мутишь на юникс платформе в консоли, то почему бы тебе не воспользоваться системой сигналов? Заведи юзерские сигналы, повесь на них обработчики и пускай нужный скрипт реагирует на сигнал что-то проверяя...
|
|
|

31.10.2007, 21:18
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
2biophreak неправильно понял...
Сообщение от groundhog
hidden, если ты это мутишь на юникс платформе в консоли, то почему бы тебе не воспользоваться системой сигналов?
Это вообще то на юниксовом серсере подразумевается, но не в консоли, а на аппаче и желательно в PHP
Сообщение от groundhog
Заведи юзерские сигналы, повесь на них обработчики и пускай нужный скрипт реагирует на сигнал что-то проверяя...
Представь, если сотня скриптов будут реагировать на сигнал, который поступает каждую десятую секунды, что это получится, а ведь их может быть и больше, тем-более всё-равно надо что-то проверять, тогда нужно будет обеспечить синхронизированный доступ к этому ресурсу(как-то его сбрасывать), вариант сложнее и менее эффективен чем с демоном.
|
|
|

31.10.2007, 22:16
|
|
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме: 4610226
Репутация:
1332
|
|
совсем не ясна задача
|
|
|

31.10.2007, 22:45
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
Сообщение от ZaCo
совсем не ясна задача
Поясняю...
Есть таблица в SQL, пользовательский скрипт устанавливает ожидание на определённую запись в этой таблице, а когда другой скрипт изменяет эту запись, он уведомляет тех, кто ожидает эту запись.
PS Такой вариант не катит.
Код:
for(;check_sql();sleep(100)){}
Последний раз редактировалось hidden; 31.10.2007 в 23:49..
|
|
|

31.10.2007, 23:04
|
|
Members of Antichat - Level 5
Регистрация: 05.04.2006
Сообщений: 1,066
Провел на форуме: 3493315
Репутация:
1228
|
|
ну пусть когда какойто скрипт обновит, то он запустит тот скринт который ожидает
|
|
|

01.11.2007, 00:15
|
|
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме: 4610226
Репутация:
1332
|
|
>>Есть таблица в SQL, пользовательский скрипт устанавливает ожидание на
>>определённую запись в этой таблице, а когда другой скрипт изменяет эту запись, он
>>уведомляет тех, кто ожидает эту запись.
ну пусть пользовательский скрипт добавляет запись в отдельную таблицу `ocheredi` с указанием типа ожидаемой записи и rand_id, затем создает у себя файл rand_id с правами записи от пользователя apache (тут нужно уточнить рамки безопасности поставленной задачи) и синхронно read ожидает поступления новых байт. соответсвенно скрипт добавляющий очередную запись в таблицу проверяет одновременно `ocheredi` на наличие записей того же типа и пишет во все rand_id о поступлении новой записи, при этом удаляя обработанные записи.
|
|
|

01.11.2007, 02:45
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
Нее, пока-что перл-демон с блокирующими сокетами остаётся оптимальным вариантом.
Я просто подумал, может есть что-то типа CreateEvent, WaitForSingleObject (Виндовые функции) или в SQL так составить запрос, чтоб он ожидал изменения указанной записи...
Anyway, thanks for the tries... 
|
|
|

01.11.2007, 10:58
|
|
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме: 4610226
Репутация:
1332
|
|
>>Нее, пока-что перл-демон с блокирующими сокетами остаётся оптимальным вариантом.
только, я надеюсь, реализовано это все через unix-сокеты (af_unix)? а то на такие частые обращения портов не хватит)
>>Я просто подумал, может есть что-то типа CreateEvent, WaitForSingleObject
а зачем есть все на блокирующих сокетах? пусть ставит recv и ждет своего "события".
>>или в SQL так составить запрос, чтоб он ожидал изменения указанной записи...
не знаю как где, но mysql с его элементарным запрос-ответом этого сделать не позволит.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|