Как удержать файл в оперативной памяти?

12
Sower
На сайте с 30.12.2009
Offline
647
1860

На сервере лежит 200мб текстовый файл. Скрипт читает его по нескольку раз в минуту. Каждый раз перед прочтением открывает его заново, на что уходит достаточно много времени. Как сделать, чтоб этот файл всегда находился в оперативной памяти сервера?

__________________Бесплатная накрутка ПФ: посещаемость, просмотры, переходы с поисковиков по ключевикам, итд.
__________________Все посетители живые, не боты. (http://livesurf.ru/promo/80271)
AU
На сайте с 03.09.2009
Offline
88
#1

Насколько я понимаю, у вас Linux / Unix система? Вы можете переместить файл в оперативную память, создав memory drive - диск в оперативной памяти. В Linux это делается так:

 mount -t ramfs -omaxsize=256M none /ramdisk 

Как несложно понять, 256M - размер диска в мегабайтах, /ramdisk - точка монтирования. Т.е. в этом случае вам нужно выполнить указанную команду и скопировать ваш файл в /ramdisk

Unix в вопросах и ответах https://unixhow.com (https://unixhow.com)
Sower
На сайте с 30.12.2009
Offline
647
#2

При перезагрузке сервера этот диск в оперативной памяти не исчезнет?

Сам файл должен оставаться на жёстком диске в том же месте, откуда его скопировал в виртуальный диск, и при обращении скриптом к файлу по старому адресу он не будет открывать его а автоматически станет читать его с оперативки?

Joker-jar
На сайте с 26.08.2010
Offline
154
#3

При перезагрузке содержимое рамдиска изчезнет. Чтобы не изчез сам рамдиск, можно прописать его в fstab. Можно сделать следующее: скрипт обращается к файлу, расположенному в рамдиске. Другой скрипт по крону этот файл копирует с рамдиска на жесткий диск, скажем, раз в час.

SI
На сайте с 03.12.2007
Offline
130
#4

Если нет дефицита RAM, то файл к которому постоянно обращаются и так должен оставаться в памяти, в дисковом кеше. Но при обычном открытии он ещё раз копируется в память скрипта. Нужно копать в сторону "memory mapping", чтобы использовалась только одна копия.

-= Онлайн сервисы =-
iHead
На сайте с 25.04.2008
Offline
137
#5

не завершайте работу скрипта, если это возможно.

Рекомендуемый хостинг партнер 1С-Битрикс (https://www.ihead.ru/bitrix/), PHP-хостинг (https://www.ihead.ru/php/), доверенный партнер RU-CENTER (https://www.ihead.ru/news/573.html), официальный представитель REG.RU в Кирове (https://www.ihead.ru/news/851.html)
vandamme
На сайте с 30.11.2008
Offline
675
#6

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

Andreyka
На сайте с 19.02.2005
Offline
822
#7
Sower:
На сервере лежит 200мб текстовый файл. Скрипт читает его по нескольку раз в минуту. Каждый раз перед прочтением открывает его заново, на что уходит достаточно много времени. Как сделать, чтоб этот файл всегда находился в оперативной памяти сервера?

Например так: http://bolknote.ru/files/shared/

Не стоит плодить сущности без необходимости
retexica
На сайте с 28.07.2011
Offline
9
#8

Как вариант - возможно столь толстый файл имеет смысл переместить в mysql, если он конечно содержит некие структурированные данные, а mysql уже есть у вас на сервере и настроен.

babnicks
На сайте с 23.10.2009
Offline
47
#9
Sower:
На сервере лежит 200мб текстовый файл.

Товарищ выше правильно говорит, нельзя чтобы скрипты читали данные из таких файлов, очень дурно это, тем более на регулярной основе.

Делайте БД и будет вам счастье.

100% защита от спам-ботов (https://www.keycaptcha.com)
AX
На сайте с 20.09.2008
Offline
133
#10

Угу, а БД из воздуха читает, да?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий