Подход без базы данных для хранения некоторых данных в PHP
Я новичок в PHP, но не программирую вообще. Я хочу сохранить некоторые данные, которые я получаю из веб-службы, но я не думаю, что мне нужна база данных для этого. Во-первых, данные будут обновляться довольно часто, и их размер всегда меньше 1 МБ. Какой самый лучший, быстрый, но эффективный подход в PHP на Apache? Примечание: Я использую хостинг-провайдера, поэтому я не предпочитаю пользовательские установки. Может быть, синглтон? Спасибо
7 ответов:
Используйте базу данных. В противном случае вы застряли сериализации файла. Но чтобы сделать это правильно, вам нужно реализовать элементы управления параллелизмом.
Сэкономьте время и энергию и используйте базу данных.
Я думаю, что возникает вопрос, как долго будут храниться данные? Если вы храните данные до тех пор, пока они не будут заменены или дольше, чем один сеанс пользователя, лично я считаю, что база данных является идеальным решением - она разработана, чтобы быть очень эффективной с быстрым изменением и извлечением данных.
Если данные хранятся только для одного сеанса пользователя, вы можете использовать сеансы PHP для хранения данных в виде массива.
Другой альтернативой является хранение данных в файле. Однако это может быть гораздо менее эффективным при извлечении небольших объемов данных.
Попробуйте использовать плоский файл. Если вам не нужно делать какие-то причудливые поиски, то есть.
Очевидной альтернативой базе данных является файловое хранилище. PHP может читать и записывать старые добрые дисковые файлы; смотрите fopen (), fread (), fwrite () и некоторые другие. Вам нужно будет назначить папку на сервере (помимо пространства public_html) для файлов и придумать схему именования и формат данных.
Вы можете использовать облачный сервис (Amazon, Google ...). Но помимо того, что вы делаете свое приложение более сложным и хрупким, а себя более бедным, я не вижу никакой выгоды от использования обычной БД или плоского файла.
Вы можете хранить данные в xml-файлах и использовать simplexml для загрузки данных и управления ими, например:
$xml = simplexml_load_file ("test.xml");
Тогда вы можете иметь список узлов, которые вы определили, и делать свое дело. Для получения дополнительной информации вы можете проверить следующее:
Массивы можно сохранить в текстовом файле с помощью функции serialize .
Что-то вроде
$fh = fopen("db.txt", "w"); fwrite($fh, serialize(array("field"=>"data")); fclose($fh);
Извлеките его снова с помощью fread и mode "r", а затем с помощью метода
unserialize
.$fh = fopen("db.txt", "r"); $data = unserialize(fread($fh)); fclose($fh);
А затем управлять данными в массиве.