2012-04-19 2 views
8

Я помню, как читал php.net (хотя, к сожалению, не может найти страницу), что интерпретатор PHP может работать по-разному - чаще всего, каждый раз, когда запрашивается страница, экземпляр PHP-интерпретатор создается, запускается его курс, а затем уничтожается вместе со всей памятью, связанной с этим конкретным вызовом страницы. По-видимому, также возможно разрешить всю память задерживаться, чтобы ее можно было использовать снова в будущих вызовах страницы; как я понял, по сути, позволяя нескольким различным скриптам PHP получать и изменять одни и те же объекты, не теряя их после завершения скрипта.Объекты PHP, которые остаются в памяти

По крайней мере, так что я помню. Есть ли правда в этом? Если да, то как мне настроить его?

+3

Что вы пытаетесь решить? Какова первоначальная проблема? – zerkms

+8

Возможно, переменная $ _SESSION - это все, что вам нужно :) – jantimon

+0

Если вы хотите сохранить объекты в памяти, то кешируйте их в APC или Memcached. Но да, возможно, вы просто ищете функциональность сеанса. – halfer

ответ

5

php не работает таким образом. его о беге и забыть.

вы можете сохранять данные между запросами с помощью пользовательского пространства совместно расширения памяти, например: АРС, XCache, Memcached и т.д.

или с помощью массива данных сеанса после вызова session_start

$ _SESSION

Не думайте о скриптах php, таких как java-приложение, например Кот. стандартный php не был предназначен для этого случая использования. Компилятор php работает «на лету».

+0

Я нашел [session_name] (http://php.net/manual/en/function.session-name.php), чтобы быть очень полезным с этим. Каждый файл может совместно использовать одно имя session_name, и все соответствующие данные могут быть сохранены в объекте сеанса. Таким образом, я могу запустить файл инициализации, который устанавливает объект сеанса, а затем все связанные файлы сценариев могут использовать его соответствующим образом. – Monchoman45

+0

@ Monchoman45 хорошо, по моему мнению, сеансы не заменяют $ GLOBALS или кеширование страниц, если это то, что вы делаете;) – Hajo

0

оставляейте сервера между запросами, поэтому будут делать объекты:

  • appserver-in-php - Generic HTTP приложения подход к PHP5.3 + (вдохновленный Rack и WSGI)

С хорошо написанных приложений что дает вам больше скорости, чем APC, однако он не масштабируется между пользователями, если вам нужно наложить несколько полей (вы все равно можете использовать липкие сеансы).

1

Вы можете использовать shared memory для некоторых из того, что вы хотите, но Redis/Memcache, вероятно, лучшие ставки.

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