Подход без базы данных для хранения некоторых данных в PHP


Я новичок в PHP, но не программирую вообще. Я хочу сохранить некоторые данные, которые я получаю из веб-службы, но я не думаю, что мне нужна база данных для этого. Во-первых, данные будут обновляться довольно часто, и их размер всегда меньше 1 МБ. Какой самый лучший, быстрый, но эффективный подход в PHP на Apache? Примечание: Я использую хостинг-провайдера, поэтому я не предпочитаю пользовательские установки. Может быть, синглтон? Спасибо

7 4

7 ответов:

Используйте базу данных. В противном случае вы застряли сериализации файла. Но чтобы сделать это правильно, вам нужно реализовать элементы управления параллелизмом.

Сэкономьте время и энергию и используйте базу данных.

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

Если данные хранятся только для одного сеанса пользователя, вы можете использовать сеансы PHP для хранения данных в виде массива.

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

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

Очевидной альтернативой базе данных является файловое хранилище. PHP может читать и записывать старые добрые дисковые файлы; смотрите fopen (), fread (), fwrite () и некоторые другие. Вам нужно будет назначить папку на сервере (помимо пространства public_html) для файлов и придумать схему именования и формат данных.

Вы можете использовать облачный сервис (Amazon, Google ...). Но помимо того, что вы делаете свое приложение более сложным и хрупким, а себя более бедным, я не вижу никакой выгоды от использования обычной БД или плоского файла.

Вы можете хранить данные в xml-файлах и использовать simplexml для загрузки данных и управления ими, например:

$xml = simplexml_load_file ("test.xml");

Тогда вы можете иметь список узлов, которые вы определили, и делать свое дело. Для получения дополнительной информации вы можете проверить следующее:

SimpleXML учебник

Массивы можно сохранить в текстовом файле с помощью функции 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);

А затем управлять данными в массиве.