Поддерживать связь с php? - PullRequest
3 голосов
/ 26 апреля 2009

Я работаю над проектом, заставляя меня постоянно пинговать php-скрипт для новых данных, поэтому, если я правильно понимаю, это означает, что ping-скрипт php запускается снова и снова на неопределенный срок. Это работает, но я предполагаю, что это огромная нагрузка на сервер, и, вероятно, считается уродливой и плохой практикой. Я прав насчет этого?

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

Я просто ищу разработчиков форм ввода с большим опытом.

И последнее ...

Существуют ли другие способы поддерживать постоянный поток данных (кроме технологий, таких как флэш или серебристый свет)?

Ответы [ 5 ]

4 голосов
/ 26 апреля 2009

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

Я рекомендую вам проверить методику Comet . Он в основном популярен для обратного того, что вы хотите - сервера, постоянно отправляющего информацию на страницу - но он, очевидно, может работать в обоих направлениях. Хотя ваш пробег может отличаться, я слышал хорошие вещи. Как описывает это Википедия:

В веб-разработке Comet - это неологизм для описания модели веб-приложения, в которой длительный HTTP-запрос позволяет веб-серверу передавать данные в браузер без явного запроса браузера. Комета является общим термином для нескольких методов для достижения этого взаимодействия. Все эти методы основаны на функциях, включенных по умолчанию в браузерах, таких как Javascript, а не на плагинах не по умолчанию.

0 голосов
/ 27 апреля 2009

Вы можете использовать ajax для http-потоковой передачи. Взгляните на ajaxpatterns .

0 голосов
/ 26 апреля 2009

Я бы сказал, что зависит. Если вы хотите, чтобы передача данных была запущена клиентом, вашим лучшим выбором будет ajax (например, getxmlhttpobject или просто iframes, если вы хотите обмануть: P). Если вы хотите, чтобы передачи запускались сервером, возможно, php - это не тот язык, который вы хотите использовать.

0 голосов
/ 26 апреля 2009

Вы должны научиться использовать сокеты в php.

Начните отсюда: http://php.net/manual/en/book.sockets.php

А вот еще одно полезное руководство по написанию отдельных php-приложений: Расширенное программирование на PHP

0 голосов
/ 26 апреля 2009

Кажется, что php не будет лучшим выбором языка для этого. Возможно рассмотрим что-то вроде scala или erlang, которые настроены для лучшей обработки этого типа долгоживущих сообщений.

...