2009-07-14 1 views
1

Я в настоящее время часть JQuery кода/JS, который работает через каждые несколько секунд запрос (5) GET, ищет новые данные, которые могут ПРИДИ в.«толкая» код JavaScript из PHP

Есть некоторые Кстати, я мог бы заставить PHP «нажимать» или сигнализировать код javascript, когда новые сообщения доступны, а не проверять каждые несколько секунд, если что-нибудь новое появилось?

Другой пример: Я изменяю размер изображения для пользователя. Я хотел бы отображать в режиме реального времени данные о происходящем в режиме реального времени - отображать такие сообщения, как «Загрузка на сервер», «Изменение размера изображения», «Хранение изображения».

Любая помощь в этом отношении?

ответ

4

Это то, что вы не хотите делать. Будьте довольны 5-секундным опросом javascript. Это действительно лучший способ сделать это.

+0

+1 полностью согласен –

+3

Не очень информативно. Причина, по которой вы не хотите делать «push», заключается в том, что она чрезвычайно ресурсоемкая, она стоит на сервере, и это может стоить клиентским ресурсам подключения.Если 5-секундный опрос работает, то используйте его, только переключитесь, если вам нужно что-то быстрее, чем такое, как веб-приложение для интрасети, имеющее большое значение для внутреннего брокера. – Karl

+0

любые причины? хотя бы ненадолго? – 2009-07-14 16:56:15

6

Comet может быть именно то, что вам нужно.

Это в основном работает сразу, не давая ответ сервера, сохраняя возможность открытой для передачи данных на данный момент он получает в.

Проблема заключается в том, что Apache и IIS в настоящее время не очень хорошо в обращении, что многое открытые соединения. Посмотрите на usobans ответ.

+1

Есть много минусов, чтобы использовать Comet или Comet-подобные системы, IMO. Если у вас нет почти неограниченных ресурсов, таких как Google, то поддерживайте это соединение неограниченным образом. В большинстве ситуаций реального мира сервер будет перетаскиваться. Тем не менее, +1 – Randolpho

+1

Следует заметить, что кометы не так просто реализовать, кроме того, вы не можете использовать Apache или ISS, а специализированное серверное программное обеспечение, такое как Meteor. – usoban

+0

Правда, я знаю эти недостатки. Но опрос каждые пять секунд также может быть хитом для производительности, так как новое соединение должно быть настроено и все время. – Dykam

0

Вы можете использовать технику Comet, но это может потребовать особых соображений в зависимости от вашей нагрузки. Например, если вы ожидаете большой нагрузки, вам может потребоваться настроить веб-сервер так, чтобы он мог обрабатывать все параллельные соединения. Если у вас нет такого контроля над вашим веб-сервером, но вы ожидаете большого количества трафика, тогда лучше всего придерживаться техники опроса.

, но если вы просто собираетесь показывать страницу небольшой группе ... затем попробуйте одну из тех техник Comet. есть JQuery плагинов, которые могут помочь:

Comet and jQuery

0

Самое простое решение жить с реализованного в настоящее время 5sec опроса. Это самая простая реализация и хорошо работает.

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

Наконец, есть «кометы», подобные решениям, которые позволят вам надавить на клиента на стороне сервера. Я не знаю о внедрении кометы на основе php ...

1

Я бы рекомендовал решение SaaS, такое как WebSync On-Demand; бесплатно для ограниченных пользователей, работает с любым языком сервера, без проблем с настройкой собственного сервера и т. д.

Смежные вопросы