Как парень LAMP может легко реализовать WebSockets? - PullRequest
7 голосов
/ 24 марта 2012

Я всегда работал с Apache, MySQL и PHP. Я хотел бы в конечном итоге перейти к Python / Django или Ruby / Ruby on Rails, но это другое обсуждение. Две отличные вещи, касающиеся Apache, MySQL и PHP, - все они вездесущие, и запустить веб-сайт очень просто. Просто установите виртуальный хост Apache, импортируйте базу данных в MySQL и скопируйте файлы PHP на сервер. Вот и все. Это все, что я когда-либо делал, и все, что я когда-либо знал. Пожалуйста, имейте это в виду.

В наши дни для веб-сайтов становится все более важным предоставлять пользователям возможность доставки данных в режиме реального времени. Пользователи ожидают этого тоже из-за живой природы Facebook и Gmail. Этот эффект может быть подделан с помощью опроса Ajax, но это имеет много накладных расходов, как объяснено здесь . Я хотел бы использовать WebSockets. Теперь помните, что я всегда был парнем из ЛАМПЫ. Я только когда-либо запускал сайты, используя метод, который я описал ранее. Итак, если у меня есть, скажем, сайт CakePHP, как я могу «добавить» функцию WebSockets? Нужно ли устанавливать какой-либо другой сервер или что-то еще, или я могу заставить его работать гладко с Apache? Требуется ли Apache 2.4? Пожалуйста, объясните мне этот процесс, имея в виду, что я знаю только о ЛАМПЕ. Спасибо!

1 Ответ

4 голосов
/ 26 марта 2012

Важно помнить, что сервер веб-сокетов в режиме реального времени должен быть «долгосрочным», чтобы он мог передавать данные клиентам.В классической настройке LAMP Apache порождает интерпретатор PHP при каждом запросе.Между запросами не работает интерпретатор PHP, и единственное состояние протокола, поддерживаемое между запросами, это сеансы.

Хорошим свойством LAMP является простота управления памятью.Вы просто неявно выделяете всю необходимую вам память, и она автоматически восстанавливается, когда запрос выполнен, и процесс PHP завершается.Как только вы хотите, чтобы сервер продолжал работать, вы должны рассмотреть возможность управления памятью.В некоторых языках, таких как C ++, вы управляете выделением и освобождением явно.В других языках, таких как Java или Javascript, у вас есть сборка мусора.В PHP вы все выбрасываете и начинаете с каждого нового запроса.

Я думаю, вам будет трудно создавать долго работающие серверы с чем-то вроде Cake или любой другой классической PHP-средой.Эти фреймворки работают, в основном, принимая HTTP-запрос и превращая его в HTTP-ответ.

Я советую вам взглянуть на что-то вроде Node.JS и SocketIO.Если вы знаете Javascript или не против изучения, эти технологии позволяют легко внедрять серверы и клиенты в реальном времени.При необходимости вы можете запустить обратный прокси-сервер, такой как nginx, чтобы ваш существующий стек LAMP получал некоторые запросы, а один или несколько серверов NodeJS получали бы некоторые.

Этот ответ получился немного пушистым, но я надеюсь, чтоэто немного помогает ..: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...