php супер супер глобалы - PullRequest
5 голосов
/ 31 мая 2011

Мне было интересно, у меня есть этот большой массив, возможно ли иметь его только один раз в памяти, а не один раз на поток? Возьмите теги здесь в stackoverflow в качестве примера. Они почти никогда не меняются, почему бы не выделить для них одно место? А может, даже сохранить этот массив постоянно в памяти?

Ответы [ 4 ]

4 голосов
/ 31 мая 2011

Взгляните на apc_store

В отличие от многих других механизмов в PHP, переменные, хранящиеся с помощью apc_store (), будут сохраняться между запросами (до тех пор, пока значение не будет удалено из кэша).

2 голосов
/ 31 мая 2011

Для этого вы можете использовать shmop функции или выделенный кэш памяти, например memcached .

1 голос
/ 31 мая 2011

каждый процесс php работает изолированно от других. Это отличается от Java, например, когда у вас есть один объект, который вы можете запустить до тех пор, пока JVM не будет перезапущен.

к сожалению, если у вас есть объект (маленький или большой), он будет загружаться каждый раз, когда запускается скрипт php, НО, если вы хотите разделить что-то в памяти между запусками, вы можете использовать APC , memcache или общая память

Между этими вариантами я настоятельно рекомендую вам БТР.

0 голосов
/ 31 мая 2011

Нет - проблемы синхронизации, свойственные разделению одной переменной напрямую между интерпретаторами PHP, делают это невозможным. Скорее всего, переполнение стека просто избегает «думать» обо всем массиве тегов сразу.

Вы можете использовать функции хранения переменных в APC ( apc_store и apc_fetch ) для хранения сериализованных данных в общей памяти.

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