[Apache+PHP] Хранение переменных между запросами

Corrector

Как сохранить переменную (массив, около 500 МБ) в оперативной памяти сервера между двумя запросами.
В файле хранить не годится, т.к. долго загружать
В сессиных переменных не годится, т.к. все пользователи пользуются одним и тем же массивом, и на всех юзеров не хватит памяти
По некоторым причиным в БД (mysql) хранить тоже не хочется.
Если ли другие варианты?

maggi14

когда-то в досе была такая фигня, виртуальный жесткий диск в памяти. Может, сейчас тоже что-то подобное делают?

tokuchu

Погляди memcached - возможно то, что тебе надо.

sergei1969

ramdrive или ramdisk, точно не помню

rosali

все пользователи пользуются одним и тем же массивом

В файле хранить не годится, т.к. долго загружать

Не выдумывай, "хранить в файле" это формальность. Если к этому массиву постоянно обращаться он всегда будет в памяти, а если не постоянно, то и нафик он в памяти не нужен... В конце концов если это так принципиально, размести этот файл на tmpfs.

uncle17

только не забывай, что тогда
1) для РНР надо выделить памяти в конфиге больше, чем весит этот массив (где-нить 640М)
2) Если на серваке 1 гиг и он, кроме этого скрипта, занимается еще чем-то, то всему быстродействию - ПРЕВЕД

Corrector

на серваке 2 Гига, ничем другим он не занимается

Corrector

1. Пока нашел такой выход (благо, сервер под виндой)
подгружаю com сервер
 
$myserv=new COM("MyClass.MyObject") 

а он уже висит в памяти.
2. отображение файла в память еще не пробовал, но идея хорошая.
3. еще нашел такую возможность: перейти на IIS+ASP, а в asp есть глобальный объект APPLICATION.
Теперь вот думаю, какой из трех способов проще..

NAIL

memcached надёжно

durka82

А разве нельзя хранить это в переменных приложения(application уровень)?

Corrector

я не спец в пхп, не знаю, как хранить
в переменных приложения(application уровень).

можно строчку кода?

tokuchu

Ещё есть IPC shared memory.

zamorin31

+1.
Только надо учесть, что memcache не гарантирует сохранности данных при недостатке памяти. Так что он _всегда_ должен занимать в оперативе не меньше размера этой переменной.
А так - действительно, это самое правильное решение.
Меньшего гарантированного времени ответа ты не добьешься нигде. На кэш оси полагаться нельзя по понятным причинам
//madm1ke

zamorin31

хотя при правильных настройках query_cache в MySQl тоже никто не отменял, заявленное время ответа в 150-200 раз меньше, чем для некешированного запроса. Но это все равно гораздо хуже, чем мемкеш.

Barbie29

Ещё есть IPC shared memory.
угу, идея хорошая, но можно ли это сделать на PHP так чтобы не очень сложно.

FRider

. еще нашел такую возможность: перейти на IIS+ASP, а в asp есть глобальный объект APPLICATION.
Если проект тока начинается, нет предпочтений по хостингам, лучше перейти на асп .нет 2.0.
Оставить комментарий
Имя или ник:
Комментарий: