PHP-эквивалент объектов ASP.NET Application / Cache - PullRequest
8 голосов
/ 16 ноября 2009

Мой Google-фу не раскрыл то, что я ищу, поэтому я выкладываю это в толпу.

Исходя из опыта разработки ASP.NET, я привык иметь в наличии коллекции Application и Cache, чтобы я мог хранить редко модифицированные, но часто используемые ресурсы (например, строки поиска из базы данных или содержимое статических XML-документов) в памяти веб-сервера, поэтому мне не нужно перезагружать эти часто используемые элементы при каждом запросе.

Есть ли у PHP эквивалент? Я кратко прочитал о расширении memcache, но это не сработает для меня (так как я не могу контролировать конфигурацию сервера.) У меня возникает желание реализовать что-то, что позволило бы мне выполнить предварительный анализ или предварительный анализ. -выберите ресурсы и сгенерируйте своего рода PHP-файл «кеша», который бы создавал кешированный объект из литералов, хранящихся в файле, но мне это кажется очень хакерским решением.

Есть ли что-то в PHP (или, альтернативно, какая-то вспомогательная библиотека), которая позволит мне сделать это, используя лучшие практики?

Ответы [ 2 ]

5 голосов
/ 16 ноября 2009

Короче говоря, нет, такая вещь изначально недоступна в PHP.Чтобы понять почему, вы должны понимать, что в PHP есть вся среда, созданная для каждого запроса, и впоследствии она разрушается в конце запроса.PHP дает , что дает вам $ _SESSION для хранения переменных сеанса, но после просмотра документов вы увидите, что эта переменная также создается во время каждого запроса.PHP (или мод php, если быть более конкретным) принципиально отличается от других «серверов приложений».По сути, это не сервер приложений.Это запускаемый скрипт по запросу.

Теперь, не поймите меня неправильно, PHP позволяет вам делать хранилище данных на уровне приложений, но вам нужно будет зайти в базу данных или на диск, чтобы получить ее.Однако помните об этом, не беспокойтесь об оптимизации производительности до тех пор, пока не покажется, что предварительная производительность является проблемой.И я предполагаю, что в 99 случаях из 100 к тому времени производительность будет проблемой, которая связана не с плохим кодом, который вы написали, у вас будут ресурсы для создания своего собственного довольно маленького сервера memcached.

0 голосов
/ 16 ноября 2009

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

...