У меня следующая проблемма. Есть скрипт который который выполняет следующие действия: 1 Открывает текстовый файл на сервере. 2 Считывает данные из него. 3 Делает некоторые изменения в данных 4 Сохраняет данные в этот же файл. Проблема в следующем: К этому файлу одновременно точнее через 0,5 МИЛЛИсекунду обращается этот скрипт. Правильнее было бы сказать, что пользователь обращается к этому скрипту через каждые 10 миллисекунд, а пользователей одновременно выполняющих эту операцию 20. Вопрос: Можно ли как небуть сделать так чтобы данные хранились не в файле а в оперативной памяти сервера например. Или может есть другой способ. Франение в базе данных MySql я не думаю, что подойдет хотя может быть так как я имею лишь общее представление. Цель изменений уменьшить нагрузку на сервер потому что таких скипров очень много. Ограничения. У меня виртуальный хостин и там стоит ограничение на выполнения скрипта 30 секунд.
Странно, что файл ещё не обнулялся. Можно в memcached запихать. Если информация небольшая, то памяти хватит. И раз в час или типа того записывать в файл. Но база лучше.
1 Открывает текстовый файл на сервере. 2 Считывает данные из него. 3 Делает некоторые изменения в данных 4 Сохраняет данные в этот же файл. Где можно найти статьи как пользоваться memcached?
Угадай, где можно найти Вопрос не в принципе, а в "нафига". Нафига файлы это делают? Зачем так часто обновляются, почему и для чего. Смысл в чём?
Пользователи обмениваюсться данными. (в режиме реального времени) а лучший способ для обмена чем сохранение в файл я не нашел
Ещё раз - Memcache, APC, XCache - много много быстрее и ещё не возникнет проблем с чтением/записью, т.к. операции с памятью аттомарны в отличии от чтения/записи в фаиле при нескольких процессах.
Операции записи с файлом тоже атомарны в пределах определенных объемов. А вот операция "прочесть-изменить-записать" не атомарны и с памятью - все-равно требуется система локов. База это (локинг данных для изменения) делает за вас. Для оценок, подойдет ли база, недостаточно инфы - какие данные в файле и что изменяется за раз (весь файл, определенные участки и т.д.). В любом случае, в MySQL есть MEMORY таблицы, есть и другие быстрые in-memory базы.
Memcache, APC, XCache не подходят их нужно устонавливать а это никто делать не будет. Есть ли другой способ?
Попробуй писать в сессии, если обьём данных небольшой. Или, как правильно заметил MiksIr, прочитай про тип таблиц memory в мускуле.