Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Плоские файлы
 
 автор: cheops   (22.10.2004 в 18:41)   письмо автору
 
 

Продолжение темы http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=541&id_post=4285.

Как известно файловая работа с файловой системой осуществляется быстрее работы с иерархической базой данных и, конечно, быстрее работы с реляционной базой данных. Под работой здесь понимаются операции записи и чтения.
Поэтому там где нужна скрость (например, поисковые системы) прибегают к плоским файлам - это API (набор функций) к драйверу, обеспечивающий простейшие операции помещения записи в файл и извлечения их от туда - т.е. подобие примитивной базы данных, обеспечивающей работы с файлами как с набор строк. Примером может служить dbm, dba-фукнции.

   
 
 автор: Axxil   (23.10.2004 в 11:34)   письмо автору
 
   для: cheops   (22.10.2004 в 18:41)
 

Интересная штука. А можно подробнее. Или ссылочку хотя бы...

   
 
 автор: cheops   (23.10.2004 в 11:52)   письмо автору
 
   для: Axxil   (23.10.2004 в 11:34)
 

Что-то на ум ничего кроме 16 главы мануала не приходит :)
Работать с ними можно примерно следующим образом
<?php
  
// Открываем файл test.db
  
$id dba_open("test.db""wd""flatfile");

  if (!
$id)
  {
    echo 
"Невозомжно открыть файл\n";
    exit;
  }
  
// Функция dba_insert принимает три параметра
  // первый - ключ, второй - значение, третий дескриптор
  
dba_insert ("1""Hello world!"$id);
  
dba_insert ("2""Hello world!"$id);

  
// Проверяем существует ли в файле запись
  // с ключом 1
  
if (dba_exists("1"$id))
  {
    
// Извлекаем данную запись и выводим
    
echo dba_fetch("1"$id);
    
// Удаляем запись с ключом 2
    
dba_delete("2"$id);
  }
  
// Закрываем соединение
  
dba_close($id);
?>

Для успешной работы в php.ini должно быть включено расширение
extension=php_dba.dll


Недостатком является то, что оперировать приходится только одной строкой, но это легко обходится при помощи функций serialize() и unserialize(), позволяющих запаковать массив в строку и потом извлечь его от туда, соответственно.

http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=535&page=1

   
 
 автор: Axxil   (23.10.2004 в 13:03)   письмо автору
 
   для: cheops   (23.10.2004 в 11:52)
 

А чё, вроде несложно. Этакая смесь БД с файлами. А чё она реально быстрее чем БД работает?
$id = dba_open("test.db", "wd", "flatfile");

что несут в себе два последних параметра?
И ещё вопрос сколько на данный момент весит база этого форума.
(Для оценки ресурсов своего будущего форума)

   
 
 автор: cheops   (23.10.2004 в 13:54)   письмо автору
 
   для: Axxil   (23.10.2004 в 13:03)
 

Ну быстрее на добавление удаление и полное сканирование, разумеется в операциях поиска и сравнения (особенно по ключам) полноценная база данных файлы делает, так как она для этого и создана.
Второй параметр определяет режим доступа к файлу, перая букава может принимать три варианта
r - чтение
w - запись
c - создание
литера d - несёт отвественность за лочение файла.
Третий аргумент позволяет задать тип файла, типов может быть достаточно много, но практически все являются тем или иным вариантом Berkeley DB: dbm, ndbm, db2, db3, db4, flatfile и т.п.

PS Именно этот форум весит чуть больше 2 Мб.

   
 
 автор: broker   (24.10.2004 в 12:42)   письмо автору
 
   для: cheops   (23.10.2004 в 13:54)
 

А можна ли создать вашу Powercounter 2.1.0 с помощью плоских файлов ?

   
 
 автор: cheops   (24.10.2004 в 12:52)   письмо автору
 
   для: broker   (24.10.2004 в 12:42)
 

Теоретически да... но в системе администрирования используется большое число операторов SELECT - их придётся реализовывать самостоятельно, сканируя весь файл. Реализовать это можно, но это большая работа и раза в 3 больше кода (скорее всего в конечном итоге всё работать будет медленее при меньшей функциональности).

   
 
 автор: broker   (24.10.2004 в 13:04)   письмо автору
 
   для: cheops   (24.10.2004 в 12:52)
 

ну тогда можна ли создать скрипт голосования встроенном функцией защиты от повторных голосований одного посетителя (защита от накруток). Без MySql или с помощью плоских файлов

   
 
 автор: cheops   (24.10.2004 в 13:07)   письмо автору
 
   для: broker   (24.10.2004 в 13:04)
 

/*задумчиво*/ Да, голосование пожалуй идеальная задача для плоских файлов...

   
 
 автор: broker   (24.10.2004 в 13:12)   письмо автору
 
   для: cheops   (24.10.2004 в 13:07)
 

Да тогда это хорошо =)

   
 
 автор: broker   (25.10.2004 в 23:25)   письмо автору
 
   для: cheops   (24.10.2004 в 13:07)
 

Я посмотрел на голосовалку она кажется больше чем ваш Powercounter2.1.0 )
Что вы посоветовали мне я хочу вместо MySql connect подключиться к плоскому файлу

   
 
 автор: cheops   (25.10.2004 в 23:45)   письмо автору
 
   для: broker   (25.10.2004 в 23:25)
 

А что вы хотите сделать, после того как подключитесь к плоскому файлу? :)

   
 
 автор: broker   (26.10.2004 в 12:17)   письмо автору
 
   для: cheops   (25.10.2004 в 23:45)
 

ну открыть файл как вы показали на пример, записать данные на одну строку через запятой. Как с массивами ) . Хм... можно создать для каждого вопроса новый файл.
Идеи много , Но вот лучший способ не могу найти ...

   
 
 автор: cheops   (26.10.2004 в 14:05)   письмо автору
 
   для: broker   (26.10.2004 в 12:17)
 

Новый файл пожалуй будет лишний - имеет смысл использовать несколько файлов когда идёт большая нагрузка на запись от разных источников - например, разные разделы форума или гостевой книги лучше помещать в разных файлах. Так же имеет смысл использовать разные файлы, когда очень много записей, так как при увеличении размера файла операции с ними замедляются.

   
 
 автор: broker   (26.10.2004 в 14:47)   письмо автору
 
   для: cheops   (26.10.2004 в 14:05)
 

Дело в том что мне с хостом дали только 1 базу mysql и эту базу я хочу использовать для powercounter . И мне еще надо голосовалку поставить а базы нет ( Вот поетому мне надо с файловым записем

   
 
 автор: cheops   (26.10.2004 в 14:56)   письмо автору
 
   для: broker   (26.10.2004 в 14:47)
 

Одной базы вам будет вполне достаточно. У нас справочник функций, PowerCounter, голосование и ещё уйма всякой всячены (всего около 30 таблиц) висит в одной базе данных. Вы вполне можете использовать одну базу данных для нескольких Web-приложений с условием, что имена используемых таблиц будут различаться.

   
 
 автор: broker   (26.10.2004 в 15:08)   письмо автору
 
   для: cheops   (26.10.2004 в 14:56)
 

Аххх да вот не дадумался ))). Значить config.php file для них будет одинокого.

   
 
 автор: broker   (26.10.2004 в 15:08)   письмо автору
 
   для: cheops   (26.10.2004 в 14:56)
 

Аххх да вот не дадумался ))). Значить config.php file для них будет одинокого.
Спасибо )))

   
 
 автор: broker   (26.10.2004 в 12:46)   письмо автору
 
   для: cheops   (25.10.2004 в 23:45)
 

кажется спутал с обычным файлом )

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования