Представьте, что у нас есть система сообщений для пользователей нашего сайта, что я хочу сделать, так это то, что если новое сообщение отправляется члену, тогда как целевой участник находится в своем почтовом ящике, он может видеть сообщение с уведомлением сразу после его получения новое сообщение.
Для этого у нас может быть div «new_messages», который будет обновляться с помощью jQuery с помощью setInterval () и отправляет запрос, чтобы узнать, есть ли новое сообщение или нет, но если у нас есть 10.000 членов, мы не можем отправить 10.000 запросов , это может просто убить сервер !!! Я хочу, чтобы уведомление было показано для целевого участника только тогда, когда привет получил новое сообщение. что-то вроде того, что у нас может быть «прослушивание» div на нашей странице, он запускается, когда срабатывает новое сообщение.
Я также читал о триггере MySQL, но, похоже, это не будет решением для этого, поскольку это может привести к запуску другого оператора SQL в БД и не помогать показывать уведомление пользователю.
Итак, каково решение для такого сценария?
заранее спасибо
Вы можете взглянуть на системный вопрос PHP Comet на идеи о том, как переносить живые события с сервера на браузер. Или попробуйте изучить детали использования Websockets. Но они не очень хорошо подходят для PHP.
Но если вы хотите реализовать какой-то чат, попробуйте посмотреть http://www.phpfreechat.net/
Или вы можете использовать Long-Polling , но PHP – это не лучшее решение для всей этой проблемы, я думаю.
Лучше всего объяснить цитату, найденную здесь.
Я бы не стал делать это по многим причинам:
PHP создан для быстрого выполнения (не для ожидания). PHP заставит вас делать какой-то опрос на стороне сервера и полагаться на sleep () PHP будет потреблять вашу RAM, а также создавать нереста для каждого запроса (Apache сделает это)
Но вы можете сделать это, используя сон, опросив базу данных (или, лучше, кеш APC / Memcache).
Если вы хотите сделать что-то подобное, перейдите в некоторые технологии, которые могут обрабатывать события: Python (Tornado, gevent, eventlet, Twisted, …), Ruby (Eventmachine, …), Erlang, Scala, JavaScript на стороне сервера (node.js, …), …
Извините, если это не прямой ответ на ваш вопрос, я все же рекомендую вам попробовать сделать это в чистом PHP, чтобы посмотреть, как он себя ведет (особенно веб-сервер).