сервер и запрос понимания - PullRequest
1 голос
/ 09 июня 2011

Я хотел бы знать, что сервер делает для запуска приложения php. Вот что я думаю:

тип клиента A www.blahblahblah.blah /

  1. Сервер разрешает URL, каталог и т. Д.
  2. Сервер иди index.php
  3. index.php содержит класс шаблонов Singleton со статической переменной, называемой instance. Теперь сервер выделяет память для этой статической переменной в своей собственной оперативной памяти, так что все запросы, следующие за этой первой, используют одну и ту же статическую переменную, ИЛИ для каждого нового сервера запросов выделяется новая память, и этой новой памяти выделяется новое пространство к этой статической переменной?

Мое замешательство: если каждый запрос выполняется в собственном пространстве памяти, то что такое постоянное соединение?

Второе, что меня интересует: могу ли я иметь настольную программу, то есть специальный браузер, который непрерывно отправляет специальный ключ в мое веб-приложение, и мое веб-приложение отправляет ключ обратно, чтобы HTTP-соединение было полным, а не соединением Меньше ? . [* без JavaScript браузер подключается к моему приложению].
Таким образом, я могу подтвердить, кто подключен к моему приложению в качестве клиента, а не кто подключен к Интернету. Я знаю сеансы, но они делают http-соединение меньше, и тогда существует вероятность подмены и перехвата сеансов. Я знаю, что вы можете сделать сеанс безопасным, но мое приложение не будет знать, мертв ли ​​клиент, поэтому удалите его данные из сеанса и скажите другим, что бла-клиент отключен.

Извините за эти тупые длинные вопросы.

1 Ответ

1 голос
/ 09 июня 2011

а) Сервер выделяет отдельное пространство памяти для каждой обработки запроса. Следовательно, синглтон является синглтоном только в пределах одного запроса. Что касается постоянной связи (не знаю, какую именно вы имеете в виду), например, Постоянное соединение MySQL обрабатывается веб-сервером (например, Apache) - он повторно использует процессы (потоки) для последующих запросов, следовательно, он может передать соединение db следующему запросу. (По сути, постоянство и синглтон происходят на разных уровнях, отсюда и разные способности).

b) HTTP - это протокол без установления соединения сам по себе, и вы можете только имитировать постоянство, предполагая что-то (например, пинг Ajax запрашивается каждые 60 секунд, и когда пользователь не проявляет активности в течение более 60 секунд, вы можете предположить, что он сейчас отключен). Если вам нужно быть полностью уверенным, когда кто-то подключен, а когда нет, вам нужно искать сокетные соединения (например, Java-апплет). И даже это не гарантирует 100% результатов, поэтому тайм-ауты в соединениях были «изобретены».

в) Если вы ТОЛЬКО беспокоитесь по поводу перехвата сеанса, вам следует использовать SSL (https), и никто не сможет выяснить, что такое идентификатор сеанса (кроме самого пользователя, который ищет cookie в браузере, но он собирается похитить его собственную сессию?)

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