| |
|
|
| | Есть массив данных, состоящий вот из таких фрагментов:
$a[7720071026] = "данные";
$b[7720071026] = "данные";
$c[7720071026] = "данные";
$d[7720071026] = "данные";
$e[7720071026] = "данные";
|
В каждом фрагменте пять переменных, а всего таких фрагментов почти 100.000. При этом один фрагмент отличается от другого содержимым индекса (это зашифрованные город и дата) и данными переменных.
Можно сформировать один рнр-файл и разместить там все эти переменные, а потом этот файл подключать к скрипту. Но при одном вызове скрипта понадобится прочесть всего лишь один фрагмент, а "ворочить" придется полмиллиона записей!
А можно сделать 100.000 рнр-файлов, дав каждому из них имя индекса, и разместив в нем пять переменных. Например, файл 7720071026.рнр будет содержать:
$a = "данные";
$b = "данные";
$c = "данные";
$d = "данные";
$e = "данные";
|
Тода посредством file_get_contents("7720071026.рнр") можно будет прочитать эти данные, и для этого придется обратиться лишь к короткому файлу.
Как мне кажется, во втором варианте быстродействие будет намного выше.
Единственное, что меня смущает, так это довольно большое количество файлов - 100.000. Не снижает ли быстродействие столь большое число файлов и не тянет ли это за собой какие-то иные проблемы? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(26.10.2007 в 16:02)
| | | Для решения подобных задач существуют СУБД. | |
| |
|
|
| |
|
|
| |
для: Thrasher
(26.10.2007 в 16:14)
| | | СУБД здесь при чем?
Что, там информация хранится как-то иначе?
В СУБД точно такое же взаимодействие с винчестером, как и при чтении обычного файла, плюс обилие служебных записей, так что СУБД заведомо будет самым медленным решением. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(26.10.2007 в 16:27)
| | | [поправлено модератором] | |
| |
|
|
| |
|
|
| |
для: Unkind
(26.10.2007 в 16:31)
| | | Да пробовал, пробовал. Все помешались на этих базах! Одна из них с записями PowerCounter у меня открывается 18 минут!
Лично я считаю чушью легенды об их преимуществе относительно быстродействия. Все, что можно сделать с базой, можно сделать и без нее. И будет работать намного быстрее.
Согласен только с одним - с базой многое делается проще. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(26.10.2007 в 16:40)
| | | [поправлено модератором] | |
| |
|
|
| |
|
|
| |
для: Unkind
(26.10.2007 в 16:47)
| | | PowerCounter версии 2.9, который я взял с этого сайта, через два месяца работы замедлился настолько, что для вывода таблицы Реферер требует 18 минут. Вероятно, можно заняться оптимизацией, или еще чем - не знаю, но лично я сделал проще: написал его статический аналог. И он открывается мгновенно. Да и что ему не открываться, если это эквивалентно открытию двух крохотных htm-файлов! И его быстродействие сохранится таким же и через сто лет, причем без всякой оптимизации.
Согласен, что в каких-то случаях удобнее всего использовать базы. Некоторые люди предпочитают решать с их помощью почти любые задачи, стоящие перед ними. Можно и так - это их выбор. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(26.10.2007 в 16:59)
| | | Действительно, зачем тратить какое-то время на оптимизацию. Лучше до конца жизни позиться с сотнями тысяч файлов... | |
| |
|
|
| |
|
|
| |
для: Unkind
(26.10.2007 в 17:05)
| | | Unkind, а чего с ними возиться? Настроил, и пусть работает!
Первый (и единственный, если не последний) динамический сайт с БД я сделал на СМС Joomla. Я приводил на него ссылку на этом форме - он даже изначально, с небольшим количеством страниц открывался заметно медленней статического.
Поэтому следующий сайт я сделал статическим с использованием рнр. Это новостной автонаполняемый сайт, и сейчас в нем почти 4000 страниц. Это довольно много, ну и что? Лежат они все в отдельной папочке, прекрасно проиндексированы, нагрузка на хостинг ничтожная, а открываются мгновенно.
Что же в этом плохого?
Какие тут недостатки?
А мой основной сайт насчитывает 12000 страниц. Все статические htm файлы, управляемые написанной мною СМС. Для лучшей индексации поисковиками ВСЕ страницы периодически обновляются, ежедневно размещаются уникальные новости.
И что конкретно потеряли (недополучили) посетители из-за того, что эти сайты работают без БД? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(26.10.2007 в 17:46)
| | | >> Первый (и единственный, если не последний) динамический сайт с БД я сделал на СМС Joomla. Я приводил на него ссылку на этом форме - он даже изначально, с небольшим количеством страниц открывался заметно медленней статического
Честно говоря, слабо верится... Генерация обычной странички с использованием БД - сотые доли секунды. Как тут разницу заметить? *пожимает_плечами*
Не знаю, что и сказать. На разработку всяких БД уходят миллионы долларов.. А мужики-то и не знают, что гораздо быстрее все работает на файлах.
>> Что же в этом плохого? Какие тут недостатки?
На кучу мелких файлов уходит больше места :)
>> И что конкретно потеряли (недополучили) посетители из-за того, что эти сайты работают без БД?
Да ничего не потеряли.. им-то какое дело. И вообще, если уж на то пошло, раньше как-то и без PHP справлялись.
____
А если по теме, то между Вашими двумя способами, наверное лучше второй. | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(26.10.2007 в 18:47)
| | | СПАСИБО! | |
| |
|
|
| |
|
|
| |
для: Владимир55
(26.10.2007 в 19:32)
| | | Основная сила БД не в скорости записи/чтения информации,а в скорости ее анализа,поиска и обработки.При простом чтении файла есссно файловая система сервера впереди (хотя некоторых так и тянет писать в базу статическую информацию типа картинок),но когда вам понадобится не элементарное чтение данных,а обработка,тогда вы и оцените всю прелесть баз :) | |
| |
|
|
| |
|
|
| |
для: Ralph
(26.10.2007 в 21:52)
| | | *** когда вам понадобится не элементарное чтение данных,а обработка,тогда вы и оцените всю прелесть баз***
Это да. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(26.10.2007 в 17:46)
| | | Что плохого? А сделайте поиск по этим 4000 файлам. Сколько это займет?
Если Вы храните даже в *.htm, то что Вы будете делать при смене дизайна? Опять попросите написать паттерн для замены информации в тысячах файлов?
А что будете делать, если потребуется более сложная выборка (диапазон дат) для тех же новостей. Будете тратить время процессора на работу с каталогом с 4000 файлов? | |
| |
|
|
| |
|
|
| |
для: Unkind
(26.10.2007 в 20:15)
| | | По части гибкости настроек базы завсегда лучше. А когда ничего перестраивать не надо, когда дизайн остается как есть, тогда зачем?
А в этой теме я вообще спрашивал про хранение статических данных, с этого вопроса и начался разговор. Теперь и Вы видите, что базы нужны не всегда, а в моем случае тем более.
Кстати, есть такая СМС "ВЭБДиректор". Она довольно известна среди тех, кто интересуется системами управления сайтом. Так вот, она работает на статический html-файлах. И считается самой быстрой. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(26.10.2007 в 23:10)
| | | Если вернуться к началу,то я считаю,что одна интерпретируемая команда будет исполняться быстрее,чем 100.000 интерпретируемых команд ( в смысле одна команда,но в цикле).Насчет быстродействия... Однажды в этом форуме нашел тему насчет торможения механизма сессий при их большом количестве и сам провел эксперимент-создал директорию с 10.000 уникальными файлами.Результат-поиск файла через file_exists-0.01 сек.,чтение его-0.2 сек.Так что лично я склоняюсь к Вашему второму варианту... | |
| |
|
|
| |
|
|
| |
для: Ralph
(26.10.2007 в 23:40)
| | | Спасибо! | |
| |
|
|
| |
|
|
| |
для: Владимир55
(26.10.2007 в 16:27)
| | | Учтите, что в БД файлы открываются методами C++, а вы - PHP, а поскольку PHP - компилируемый язык, то то, что сделано на C++ в этих же целях, летает быстрее, даже несмотря на эти "служебные махинации" | |
| |
|
|
| |
|
|
| |
для: bronenos
(26.10.2007 в 16:55)
| | | Да, это очень важное обстоятельство. | |
| |
|
|
| |
|
|
| |
для: bronenos
(26.10.2007 в 16:55)
| | | >PHP - компилируемый язык
какой-какой? | |
| |
|
|
| |
|
|
| |
для: jiraff
(26.10.2007 в 18:56)
| | | >>PHP - компилируемый язык
>какой-какой?
*Интерпретируемый | |
| |
|
|
| |
|
|
| |
для: Drago
(26.10.2007 в 19:17)
| | | ой, заговорился, интерпретируемый конечно =))) | |
| |
|
|