Короче говоря, я ищу лучший способ для быстрого и эффективного хранения, в основном, логических переменных, таких как:
- Текущий пользователь просматривал эту страницу? (Boolean)
- Текущий пользователь проголосовал за эту страницу? (Снова логическое значение)
- Сколько раз сегодня этот пользователь получил очки за голосование? (Целое число)
Эти переменные будут храниться только в течение ОДНОГО дня, то есть в полночь каждый день, когда они будут удалены.
Я могу придумать пять способов сделать это, но я не знаю, как правильно их протестировать, поэтому я, безусловно, мог бы помочь с этим.
1. Один файл - одна переменная
Первая идея - сохранить некоторую переменную в файле, подобном этому <?php $___XYZ = true;
, затем включить его и вернуть $___XYZ
. Проблема в том, что, скорее всего, будут сотни таких переменных, и это может занять потенциально много места (поскольку, поправьте меня, если я ошибаюсь, каждый файл занимает минимум ~ 4 КБ пространства, в зависимости от формата раздела). Большим плюсом является простота доступа, простота работы и простота очистки всего в начале дня (просто удалите всю папку с содержимым). Есть проблемы со скоростью доступа?
2. Один файл - много переменных
Я могу хранить группы переменных в одном файле, таким образом:
0:1
1:1
14:0
154:0
Затем используйте fgets, чтобы найти и прочитать переменную, но как насчет записи промежуточного файла? Можно ли эффективно использовать fwrite? Я не совсем уверен, что этот способ намного лучше, чем 1., но как вы думаете?
3. APC
Используйте apc_store и другие для хранения, изменения и доступа к данным. У меня есть три проблемы: я где-то читал, что включение APC может серьезно замедлить работу вашего сайта, что иногда возникают странные проблемы с кэшированием, и мне интересно узнать, как эффективно удалить только «ежедневный» кэш и оставить все, что у меня может быть кэшируются? И как хорошо с сотнями тысяч переменных, хранящихся в нем?
4. База данных MySQL
Я мог бы создать таблицу с двумя строками (имя и переменная), но ... У меня такое ощущение, что это будет мучительно медленно по сравнению с любым из вышеперечисленных вариантов.
Подводя итог - какой из этих способов хранения переменных в PHP является лучшим? А может, есть что-то еще лучше?