Функциональность пула PHP (не только соединения с базой данных) - PullRequest
4 голосов
/ 09 июня 2011

Возможно ли объединение данных или функций в PHP?

Я пишу PHP-код любителя, который я пишу, просыпается для обработки ответа, загружает функции, открывает соединения с базой данных, создает объекты, инициализирует их изатем - умирает через 0,01 секунды после обработки ответа, оставляя следующий запрос на перезагрузку, анализ и повторное выполнение, в основном, одной и той же вещи.

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

И так: как я могу написать PHP для объединения данных и функциональности?

Ответы [ 3 ]

4 голосов
/ 09 июня 2011

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

  • Создать постоянные соединения с базами данных (т. Е. Они будут использоваться повторно, если вы вызываете их с одинаковыми параметрами, они не будут магически существовать, но вы можете избежать накладных расходов фактическогоconnect).
  • Хранение объектов в сеансах для сохранения вычисленного состояния (они будут сериализованы и не сериализованы при следующем запросе).
  • Маршрутная работа, требующая значительной, но единовременной инициализациидемону, работающему независимо от веб-сервера (на ум приходят сервер и работники Gearman).
  • Но, в конце концов, если вашему приложению требуется глобальное состояние, возможно, PHP просто не является правильным решением.
3 голосов
/ 10 июня 2011

PHP едва ли когда-нибудь является узким местом. Наши серверы обрабатывают сотни запросов в секунду в пиковые моменты. И это тоже не крошечные запросы. Это кажется нелогичным, но PHP на самом деле очень быстрый. И вы можете использовать кэш APC для кэширования предварительно скомпилированных файлов PHP, чтобы сделать его еще быстрее Затем вы можете использовать MemCache для хранения данных, поэтому любые результаты запросов и подобные данные можно легко кэшировать, не полагаясь на неоптимальный кэш запросов MySQL.

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

У меня такие же проблемы, как и у вас;но странно PHP невероятно быстр.Помимо запросов к базе данных, которые должны кэшироваться сервером, остается только проблема с подключением.Которые можно легко объединить.

Моим системам даже приходится анализировать XML-файл размером несколько килобайт для ответов.Однако бутылочное горлышко всегда является сервером базы данных.

Это временное состояние PHP имеет и хорошую сторону.Проблемный запрос, сбой системы не окажет никакого отрицательного влияния на следующее соединение.Мне кажется более стабильным.

...