«толкая» код в JavaScript от php - PullRequest
1 голос
/ 14 июля 2009

В настоящее время у меня есть фрагмент кода jquery / js, который каждые несколько секунд запускает (5) запрос GET в поисках новых данных, которые могут прийти.

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

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

Любая помощь на что-то вроде этого?

Ответы [ 5 ]

6 голосов
/ 14 июля 2009

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

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

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

4 голосов
/ 14 июля 2009

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

1 голос
/ 11 января 2010

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

0 голосов
/ 14 июля 2009

Самое простое решение - жить с вашим текущим 5-секундным опросом. Это самая простая реализация, которая в целом работает хорошо.

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

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

0 голосов
/ 14 июля 2009

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

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

Комета и JQuery

...