|
|
|
| Снова про плоские файлы.
Перечитал все темы, которые смог найти, про плоские файлы. Все равно, если честно, непонятно.
У меня в PHP, в /ext, есть следующие dll-ки: php_dba.dll, php_dbase.dll, php_dbx.dll. Какие форматы плоских файлов я могу использовать (или правильно сказать - типы файлов? Что такое формат и что такое тип?)
Какой формат наиболее удобный и эффективный? | |
|
|
|
|
|
|
|
для: WebTech
(01.06.2006 в 17:54)
| | Вы можете определить доступные вам форматы при помощи фукнции dba_handlers(). | |
|
|
|
|
|
|
|
для: cheops
(02.06.2006 в 00:02)
| | Функция выдает
Array
(
[0] => cdb
[1] => cdb_make
[2] => db3
[3] => inifile
[4] => flatfile
)
|
Что это значит? Формат и тип - это одно и то же? И что, в итоге, лучше использовать? | |
|
|
|
|
|
|
|
для: WebTech
(02.06.2006 в 11:29)
| | Да собственно всё равно - всех проще использовать flatfile... А вы dbf-файлы не хотите использовать http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=5081 - они поинтереснее и позволяют гораздо больше, чем обычные плоские файлы. | |
|
|
|
|
|
|
|
для: cheops
(02.06.2006 в 12:30)
| | Почитал мануалы по dBase на php.net
Появилось несколько вопросов
1. Какая может быть максимальная длина строкового типа и числового типа?
2. dbase_get_header_info выдает информацию заголовка. Что содержится в offset и format? | |
|
|
|
|
|
|
|
для: WebTech
(03.06.2006 в 12:06)
| | 1. Если честно на вскидку не скажу, вероятно что-то в районе 65536 символов
2. format содержит формат в столбца используя спец-символы семейства функций printf(). offset - указывает число байт от начала записи, с которых начинается текущее поле. | |
|
|
|
|
|
|
|
для: cheops
(02.06.2006 в 12:30)
| | Еще вопросы возникли...
В мануале сказано, что блокировка не поддерживается. Блокировка файла базы данных, как я думаю. Можно ли как-нибудь все-таки заблокировать файл? Может быть это можно сделать с помощью flock()? | |
|
|
|
|
|
|
|
для: WebTech
(03.06.2006 в 12:35)
| | С помощью flock() наверное не получиться... так как этой функции необходим дескриптор открытого при помощи fopen() файла. | |
|
|
|
|
|
|
|
для: cheops
(03.06.2006 в 14:37)
| | Спасибо за Ваши ответы :-)
А что, если открыть файл базы данных с помощью fopen() для получения дескриптора?
Я так понимаю, что все эти функции используют одни и те же системные вызовы, а с точки зрения операционной системы файл базы данных - это такой же файл, как и все остальные. Если заблокировать файл, каким бы способом он ни был открыт, то он будет заблокирован для записи и для всех функций PHP ?
Я, на самом деле, не очень хорошо понимаю, как происходит доступ к файлам на уровне операционки и файловой системы. Может быть я и ошибаюсь :-( | |
|
|
|
|
|
|
|
для: WebTech
(03.06.2006 в 16:54)
| | Можно попробовать, но я если честно не уверен сработате ли... | |
|
|
|
|
|
|
|
для: cheops
(03.06.2006 в 22:31)
| | Не работает :-(
Я, тем не менее, попробовал написать маленькую гостевуху с помощью dBase. Однозначно, это лучше, чем просто файлы :-) Конечно, отсутствие блокировки не есть гуд. Но, можно использовать dBase для небольших проектов, где нет доступа к настоящему серверу SQL и СУБД, и где количество обращений к БД не очень велико и стало быть вероятность одномоментного обращения к базе мала :-)
На скорость не тестировал. | |
|
|
|