2009-08-19 2 views
1

Я изучаю высокопроизводительное кодирование веб-сайтов на PHP, и эта идея возникла у меня в голове:Возможно ли сохранить переменную в памяти (ОЗУ) в PHP?

Мы знаем, что доступ к базе данных требует значительного количества использования ЦП, поэтому мы кэшируем такие данные, сохраняя их на жесткий диск. Но мне было интересно, не может ли он отдохнуть в ОЗУ сервера, так что я могу получить к нему доступ еще больше быстрее?

+1

Имейте в виду, что операционные системы также кэшируют файлы в ram для вас. – leeeroy

ответ

1

PHP обычно поставляется с APC в качестве кэш-памяти байт-кода. Вы также можете использовать его в качестве локального кеша. Если вам нужно что-то в распределенной/кластерной среде, то memcached (плюс, возможно, beanstalkd) - это путь.

0

XCache, eaccelerator, apc и memcache позволяют сохранять элементы в полупостоянной памяти (вы не всегда знаете, когда элемент истечет в большинстве случаев). Это не то же самое, что и база данных, больше похоже на список ключевых/значений. Недостатком является то, что для этого требуется библиотека сторонних разработчиков, поэтому вы можете быть немного ограничены в зависимости от вашей среды.

Я думаю, что вы можете получить тот же эффект, используя общую память (через функции php shmop_). Но я никогда не использовал их или не знал, включены ли они в библиотеку php, чтобы кто-то не захотел наброситься на меня или изменить это упоминание.

0

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

И если к вам подано несколько тысяч других, то вероятность только выше, чем у тех тысяч людей, которые делают то, чего он действительно не должен делать, что сервер не был запрограммирован на обнаружение, а не был запрограммирован на остановку, а просто запрограммирован, чтобы попытаться сделать все возможное, за счет наличия ресурсов для «ответственных» пользователей x999.

Смежные вопросы