MySQL триггер + уведомляет долгосрочное соединение Apache / PHP - PullRequest
7 голосов
/ 15 сентября 2010

Я знаю, что есть серверные технологии Comet, которые делают это, но я хочу написать что-то простое и домашнее.

Когда запись вставляется в таблицу MySQL, я хочу, чтобы она каким-то образом передавала эти данные в серию соединений Apache с длинным опросом с использованием PHP (или чего-либо еще).Таким образом, несколько человек «слушают» через свой браузер, и в тот момент, когда происходит вставка MySQL, он отправляется в свой браузер и выполняется.

Самый простой способ - сделать так, чтобы скрипт PHP опрашивал базу данных MySQL, но на самом деле это не происходит с сервера и вводит некоторый неприемлемый порядок ненужных запросов к базе данных.Я хочу передать эти данные из MySQL в соединение с длительным опросом, по существу, без запросов слушателей.

Есть идеи, как это реализовать?

Ответы [ 3 ]

2 голосов
/ 16 декабря 2010

Я пробовал всевозможные идеи для решения этой проблемы, и единственный способ выполнить опрос SQL-запросов - это опрос файла.Если заливка равна 0, продолжайте цикл.Если файл равен 1, запустите цикл sql запросов и отправьте его пользователям.Это добавляет еще один уровень сложности, но я думаю, что это означает меньшую работу mysql, но то же самое для apache или любого другого зацикливающегося демона.Вы также можете послать команду в стиле «кометы» демона, но она также будет разбивать и зацикливаться на каждом запросе из того, что я видел по работе сокетов, так что, надеюсь, кто-нибудь найдет решение этой проблемы.

0 голосов
/ 23 августа 2011

MySQL, вероятно, не подходит для этой проблемы.Regilero предложил переключить вашу БД, но более простым решением может быть использование чего-то вроде redis, который имеет функцию pub / sub.

http://redis.io/topics/pubsub

0 голосов
/ 02 декабря 2010

Это то, что я искал много лет.Я не нашел никакой функциональности, когда SQL-сервер выдавал сообщение об INSERTS, DELETE и UPDATES.

TRIGGERS может запускать SQL для этих событий, но это здесь бесполезно.

Iдумаю, вы должны построить свою собственную систему.Вы можете легко транслировать UDP из PHP ( Пример в первом комментарии ), проблема в том, что PHP работает на стороне сервера, а клиенты статичны.

Я думаю, вымог бы запустить Java-апплет на клиенте, прослушивая UDP-сообщение и затем запустить обновление страницы.

Это были лишь некоторые мысли в момент написания ...

...