На сайте предложен большой выбор (чтобы в подробности не вдаваться, назовем это просто "файлы") файлов, лежат эти файлы в разных директориях в кол-ве от 10 до 100 и более шт. Естественно эти файлы нужно вывести для просмотра/скачивания.
Теперь сам вопрос.
Как будет более эффективно и менее затратно(с точки зрения нагрузки на сайт) вывести эту информацию :
1.Каждый раз выводить при помощи php скрипта, который "анализирует" страницу с файлами, сортирует и выводит html код.
2.Поставить Cron задачу на выполнение раз в неделю, записывать в html файлы и потом подключать их при необходимости.
Чисто логически, первый вариант гораздо более затратный, но при этом пользователь всегда сможет увидеть новые файлы, даже загруженные минуту назад.
Как быть Кто подскажет
Станет ли золотой серединой второй вариант, если выполняться он будет не раз в неделю, а предположим 2 раза в день?
Этот топик читают: Гость
Ответов: 327
Рейтинг: 5
|
|||
карма: 0 |
|
Ответов: 198
Рейтинг: 2
|
|||
Если на серваке стоит хотя бы Intel Pentium I, я бы не парился и делал первый вариант, тем более файлов, как я понял не много.
Ну а если вы извращенец, то можно и второй вариант и экономичность такого способа зависит напрямую от посещаемости сайта. Если посещаемость 50 человек в минуту, то установка Cron задачи даже раз в 10 секунду уже будет экономнее. А вообще делается что-то типа так: 1. Заливается файл и сразу заносится в базу данных, типа MySQL; 2. Из базы данных пользователи PHP скриптом получают список файлов и ссылки на них. И никаких лишних нагрузок |
|||
карма: 0 |
|
Ответов: 327
Рейтинг: 5
|
|||
На данный момент список файлов получается следующим образом...
При помощи команды "file_get_contents" я получаю html код страницы где все файлы упакованы в список. Идет сортировка, получаю содержимое между тегов "<a" и "</a>" Получаю ссылку указанную в параметре href, данные заносятся в массив. Перебирая массив проверяю на какой файл ссылается тег, если .тхт, то вывожу его содержимое между тегов "<p>" и "</p>", далее ищу по маске ("Имя тхт файла"*.zip). При нахождении проверяю наличие версии (версия обозначается символом "-"), если файл имеет версию(содержит в названии символ "-"), то выводится ссылка с одним текстом, если не имеет версии, с другим. В моем понимании такая процедура неплохо нагружает сервер. Чем плох вариант с генерированием html файла с готовыми данными? |
|||
карма: 0 |
|
Ответов: 4630
Рейтинг: 749
|
|||
То-есть, для получения списка ты парсишь какую-то заранее заготовленную страницу? А что, просто перебирать содержимое папки не подходит?
|
|||
карма: 26 |
|
Ответов: 327
Рейтинг: 5
|
|||
Готовой страницы не существует, результат который я разбираю выдает сервер, он выдает список файлов в папке.
|
|||
карма: 0 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Тогда это какой-то костыль. Попробуй это: dirlist.7z
Скорость, думаю, вполне приемлемая даже для нескольких сотен файлов. В файле пример получения массива файлов - вставляй в свою страницу. Не нужно сначала генерить список, а потом парсить. |
|||
карма: 26 |
| ||
файлы: 1 | dirlist.7z [607B] [315] |
Ответов: 327
Рейтинг: 5
|
|||
Предлагаете вставить этот файл как index.php в папки где хранятся файлы?
|
|||
карма: 0 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Да. Естественно, оформить, чтобы выдавало названия, линки, и другую информацию, фильтровало по нужным тебе критериям.
Можно положить только в корень папки с файлами. А в листинге выдавать ссылки на подкаталоги. При щелчке на такой ссылке она направляет на тот же единственный файл php, только с параметром типа "index.php?dir=mysubdir". А в index.php показывать содержимое этого mysubdir. В общем может получиться "файловый менеджер". А если запретить прямой доступ к файлам, а отдачу реализовать через PHP, то можно прикрутить авторизацию с правами на скачивание. Но это уже требует БД, тогда и список файлов там же хранить (можно сделать админку, тогда там же будет аплоад, управление доступностью файла, правами и т.п.) |
|||
карма: 26 |
|
Ответов: 327
Рейтинг: 5
|
|||
Про напоминание об "opendir" и "readdir" спасибо, но в целом будет проще перестроить мой код, но уже используя "opendir" и "readdir".
Но все же... Неужели такой скрипт почти не нагружает сервер? ------------ Дoбавленo в 15.52: Netspirit писал(а): можно прикрутить авторизацию с правами на скачиваниеСмысла думаю нет, я считаю что более приятно когда можно скачать файл без всякой капчи и регистрации. |
|||
карма: 0 |
|
Ответов: 4630
Рейтинг: 749
|
|||
knoot0279 писал(а): Неужели такой скрипт почти не нагружает сервер?А какая разница, строит ли список файлов модуль mod_autoindex или скрипт PHP? Тем более, что в первом случае тебе все равно нужно выполнить скрипт PHP. Единственное, если так хочешь оптимизации, можешь весь этот код вынести в отдельную страницу, которая по запросу генерирует список файлов и сохраняет его в index.php. Пользователи смотрят только index.php, а генерирующую страницу ты запускаешь самостоятельно только после добавления файлов. |
|||
карма: 26 |
|
Ответов: 1328
Рейтинг: 69
|
|||
knoot0279, нарисуй прожку, которая будет заливать файлы и после заливки генерировать и заменять html - вообще никаких скриптов, в hiasm для этого все есть.
|
|||
карма: 2 |
|
11