За последние 24 часа нас посетили 48955 программистов и 1756 роботов. Сейчас ищут 698 программистов ...

Подскажите лучший способ хранения оперативных данных.

Тема в разделе "Прочие вопросы по PHP", создана пользователем alp, 19 сен 2007.

  1. alp

    alp Активный пользователь

    С нами с:
    15 мар 2007
    Сообщения:
    85
    Симпатии:
    0
    У меня следующая проблемма.

    Есть скрипт который который выполняет следующие действия:
    1 Открывает текстовый файл на сервере.
    2 Считывает данные из него.
    3 Делает некоторые изменения в данных
    4 Сохраняет данные в этот же файл.

    Проблема в следующем:
    К этому файлу одновременно точнее через 0,5 МИЛЛИсекунду обращается этот скрипт.
    Правильнее было бы сказать, что пользователь обращается к этому скрипту через каждые 10 миллисекунд, а пользователей одновременно выполняющих эту операцию 20.

    Вопрос:
    Можно ли как небуть сделать так чтобы данные хранились не в файле а в оперативной памяти сервера например. Или может есть другой способ. Франение в базе данных MySql я не думаю, что подойдет хотя может быть так как я имею лишь общее представление.

    Цель изменений уменьшить нагрузку на сервер потому что таких скипров очень много.

    Ограничения.
    У меня виртуальный хостин и там стоит ограничение на выполнения скрипта 30 секунд.
     
  2. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Странно, что файл ещё не обнулялся. Можно в memcached запихать. Если информация небольшая, то памяти хватит. И раз в час или типа того записывать в файл. Но база лучше.
     
  3. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    и что они все делают?
     
  4. alp

    alp Активный пользователь

    С нами с:
    15 мар 2007
    Сообщения:
    85
    Симпатии:
    0
    1 Открывает текстовый файл на сервере.
    2 Считывает данные из него.
    3 Делает некоторые изменения в данных
    4 Сохраняет данные в этот же файл.
    :)

    Где можно найти статьи как пользоваться memcached?
     
  5. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Если скрипты работают в пределах одного сервера, то лучше XCache или APC.
     
  6. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Угадай, где можно найти

    Вопрос не в принципе, а в "нафига". Нафига файлы это делают? Зачем так часто обновляются, почему и для чего. Смысл в чём?
     
  7. alp

    alp Активный пользователь

    С нами с:
    15 мар 2007
    Сообщения:
    85
    Симпатии:
    0
    Пользователи обмениваюсться данными. (в режиме реального времени)
    а лучший способ для обмена чем сохранение в файл я не нашел
     
  8. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Ещё раз - Memcache, APC, XCache - много много быстрее и ещё не возникнет проблем с чтением/записью, т.к. операции с памятью аттомарны в отличии от чтения/записи в фаиле при нескольких процессах.
     
  9. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Операции записи с файлом тоже атомарны в пределах определенных объемов. А вот операция "прочесть-изменить-записать" не атомарны и с памятью - все-равно требуется система локов. База это (локинг данных для изменения) делает за вас. Для оценок, подойдет ли база, недостаточно инфы - какие данные в файле и что изменяется за раз (весь файл, определенные участки и т.д.). В любом случае, в MySQL есть MEMORY таблицы, есть и другие быстрые in-memory базы.
     
  10. alp

    alp Активный пользователь

    С нами с:
    15 мар 2007
    Сообщения:
    85
    Симпатии:
    0
    Memcache, APC, XCache не подходят их нужно устонавливать а это никто делать не будет.
    Есть ли другой способ?
     
  11. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Попробуй писать в сессии, если обьём данных небольшой. Или, как правильно заметил MiksIr, прочитай про тип таблиц memory в мускуле.
     
  12. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    shared memory functions - их два вида есть, и какие-то из них есть в ядре PHP.