Даже сказать в ответ на такое заключение нечего.
Ну наверное в свете топика и начального уровня вопросах, можно понять о каких CMS и DB речь. Можно конечно и NoSQL в пример привести, но сомневаюсь, что ТС интересуется обработкой терабайтов информации в кластерах :)
там только предложение "хранить уже выбранную (должным образом отсортированную) информацию в файле". Так я и с базой так же могу хранить уже готовую выборку. Только эта выборка должна изначально откуда то взяться. И если с нормальной базой я сделаю это за 1 селект , то в самописных файловых движках, это рекурсивные циклы и чтения кучи файлов. Пример в этом топике есть :)
А так сложно понять, что понимается под бд а что нет ?
БД - SqLite, MySQL, Postgres, MSSQL, Oracle и подобное.
Файловая БД - хранение, получение, обработка данных осуществляется с использованием php функций fread, fopen и подобного набора. Тут же XML хранение данных.
Думаю через панель будет в любом случае быстрее, чем по фтп сотню сайтов с разных хостингов выкачивать :)
А что не так ? Смущает, что без демона работает ? Думаю достаточно ознакомиться с сайтом, что бы понять что это.
"SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. "
Это включая стоимость земли и помещений, или только комплектация инфраструктуры ?
sqlite - это и есть база данных, а не файловая реализация.
Чуть назад полистайте, я привел примеры из реализаций файловых цмс, с их хранением данных в виде сериализованного массива или же поиском информации в десяток вложенных циклов и полнейшим отсутствием лока файлов. Конечно же, такой подход быстрее , удобнее и надежнее, чем решение на базе данных :)
Файловые цмс - это пережиток прошлого, когда 5-10 лет назад доступ к mysql был дорогой, а некоторые хостеры еще и брали денюжку за каждый запрос в базу. Все надуманные преимущества в виде скорости, надежности, легкости бакапов - просто от неумения работать с базами.
"mysqldump -uUSER -pPASS DB_NAME > db.dump.sql" и у меня бакап базы.
"mysql -uUSER -pPASS DB_NAME < db.dump.sql" и я поднял базу из бакапа.
Это очень сложно ?
Файлы - это прослойка, в них удобно хранить кеш, различные счетчики, логи и подобное. Не более.
Вон awilum, вовсю защищает файловые движки, аж с целым списком преимуществ. А свой сайт держит на MySQL, парадокс :)
http://www.hotscripts.com/ - не совсем то, но вот примеров и исходников там действительно много :)
>Страница сгенерирована за 1.05 сек. и 15 запросов к базе данных ( PHP: 12% БД: 88% )
>Желательно: MySQL любой версии, GD, MbString, Iconv.
Таки да, работает и без базы, но лучше всего с базой :)
Три других ссылки - это форумы, с жесткой структурой и функциональностью. Не назвал бы их CMS. Да и представляют они собой всего лишь альтернативу другим движкам форумов, которые встречаются гораздо чаще.
* performance slowdown with a huge number of records
* no storage gain for binary fields (for example, numbers)
* non-validating SQL parser (an SQL query that works with Gladius may not be syntactically correct)
* all strings are considered binary and should always be Unicode safe
* no specific collation or character set support
* cannot SELECT calculated or immediate values
* no specific date/time functions (as of Gladius DB v0.6.2)
Последний релиз 2 года назад, на форуме поддержки аж 3 сообщения. В списке багов ни одного исправленного за эти же 2 года.
И это при том, что PHP движок за 2 года достаточно сильно изменился и в какой то степени на его новой версии, старый код может работать не корректно или вообще не работать.
Ок, скачиваем, запускаем пример, смотрим. Таблица - это файл где данные хранятся в виде сериализованного массива. После первой же тысячи записей, хостинг выпрет вас за превышение нагрузки на cpu .
А я давно изучил, поэтому и утверждаю подобное.
Вы же, ехидно хихикая, не можете ответить даже на элементарный вопрос, пытаясь уйти от ответа, подсовывая мне зачем то каталог с файловыми движками.
Ок, ладно, проехали :) Давайте дальше, по вашей ссылке берем первую же цмс "Simple PHP Blog v.0.7" , смотрим как она сохраняет данные:
function write_file( $filename, $str ) { if ( strtolower( strrchr( $filename, '.' ) ) == '.gz' && extension_loaded( 'zlib' ) ) { $str = gzencode( $str, 9 ); } fileio::make_dir(dirname($filename)); @umask(0); $length = strlen($str); $bytes_written = file_put_contents( $filename, $str ); if ( $length == $bytes_written ) { @chmod($filename, 0777); return $bytes_written; } else { return false; } } function make_dir( $dir, $mode=0777 ) { @umask(0); if (is_dir($dir) || @mkdir($dir,$mode)) { return true; } if (!fileio::make_dir(dirname($dir),$mode)) { return false; } if (@mkdir($dir,$mode)) { return true; } else { return false; } }
Очень классный вариант сохранения данных, без единой проверки на открыт ли файл, может в него уже пишут или из него читают. Пофигу, стрельнули данными и все. Нет, это конечно гораздо надежнее чем базы данных :)
Ах, да, вот нашел в этой CMS функцию чтения контента :
$basedir = CONTENT_DIR; // YEAR directories $entry_array = array(); $dir = $basedir; if ( @is_dir( $dir ) ) { if ( $year_dir_handle = @opendir( $dir ) ) { while ( ( $year_dir = readdir( $year_dir_handle ) ) !== false ) { if ( is_dir( $dir . $year_dir ) ) { if ( $year_dir != '.' && $year_dir != '..' && $year_dir != 'static' ) { // MONTH directories if ( $month_dir_handle = @opendir( $dir . $year_dir . '/' ) ) { while ( ( $month_dir = readdir( $month_dir_handle ) ) !== false ) { if ( is_dir( $dir . $year_dir . '/' . $month_dir ) ) { if ( $month_dir != '.' && $month_dir != '..' ) { // ENTRIES if ( $entry_dir_handle = @opendir( $dir . $year_dir . '/' . $month_dir . '/' ) ) { while ( ( $entry_filename = readdir( $entry_dir_handle ) ) !== false ) { if ( is_file( $dir . $year_dir . '/' . $month_dir . '/' . $entry_filename ) ) { $ext = strtolower( strrchr( $entry_filename, '.' ) ); if ( $ext == '.txt' || $ext == '.gz' ) { // Store Blog Entry Information $value = blog_entry_to_array($dir . $year_dir . '/' . $month_dir . '/' . $entry_filename); array_push( $entry_array, implode( '|', array( $entry_filename, $year_dir, $month_dir, $value['SUBJECT'] ) ) ); } } } } // END of ENTRIES } } } } // END of MONTH directories } } } } }
и конечно же, что бы все это не загнуло файловую систему нафиг, решение сперто у индусов:
// To avoid server overload sleep(1); $output_str = ''; $entry_file_array = blog_entry_listing(); $results = 0;
Поистине CMS на файлах проще, быстрее и надежнее :)