[Apache+PHP] Хранение переменных между запросами
когда-то в досе была такая фигня, виртуальный жесткий диск в памяти. Может, сейчас тоже что-то подобное делают?
Погляди memcached - возможно то, что тебе надо.
ramdrive или ramdisk, точно не помню
все пользователи пользуются одним и тем же массивом
В файле хранить не годится, т.к. долго загружать
Не выдумывай, "хранить в файле" это формальность. Если к этому массиву постоянно обращаться он всегда будет в памяти, а если не постоянно, то и нафик он в памяти не нужен... В конце концов если это так принципиально, размести этот файл на tmpfs.
1) для РНР надо выделить памяти в конфиге больше, чем весит этот массив (где-нить 640М)
2) Если на серваке 1 гиг и он, кроме этого скрипта, занимается еще чем-то, то всему быстродействию - ПРЕВЕД
на серваке 2 Гига, ничем другим он не занимается
подгружаю com сервер
$myserv=new COM("MyClass.MyObject")
а он уже висит в памяти.
2. отображение файла в память еще не пробовал, но идея хорошая.
3. еще нашел такую возможность: перейти на IIS+ASP, а в asp есть глобальный объект APPLICATION.
Теперь вот думаю, какой из трех способов проще..
memcached надёжно
А разве нельзя хранить это в переменных приложения(application уровень)?
в переменных приложения(application уровень).
можно строчку кода?
Ещё есть IPC shared memory.
Только надо учесть, что memcache не гарантирует сохранности данных при недостатке памяти. Так что он _всегда_ должен занимать в оперативе не меньше размера этой переменной.
А так - действительно, это самое правильное решение.
Меньшего гарантированного времени ответа ты не добьешься нигде. На кэш оси полагаться нельзя по понятным причинам
![](/images/graemlins/wink.gif)
//madm1ke
хотя при правильных настройках query_cache в MySQl тоже никто не отменял, заявленное время ответа в 150-200 раз меньше, чем для некешированного запроса. Но это все равно гораздо хуже, чем мемкеш.
Ещё есть IPC shared memory.угу, идея хорошая, но можно ли это сделать на PHP так чтобы не очень сложно.
. еще нашел такую возможность: перейти на IIS+ASP, а в asp есть глобальный объект APPLICATION.Если проект тока начинается, нет предпочтений по хостингам, лучше перейти на асп .нет 2.0.
Оставить комментарий
Corrector
Как сохранить переменную (массив, около 500 МБ) в оперативной памяти сервера между двумя запросами.В файле хранить не годится, т.к. долго загружать
В сессиных переменных не годится, т.к. все пользователи пользуются одним и тем же массивом, и на всех юзеров не хватит памяти
По некоторым причиным в БД (mysql) хранить тоже не хочется.
Если ли другие варианты?