Вверх ↑
Этот топик читают: Гость
Ответов: 327
Рейтинг: 5
#1: 2014-07-15 09:04:56 ЛС | профиль | цитата
На сайте предложен большой выбор (чтобы в подробности не вдаваться, назовем это просто "файлы") файлов, лежат эти файлы в разных директориях в кол-ве от 10 до 100 и более шт. Естественно эти файлы нужно вывести для просмотра/скачивания.
Теперь сам вопрос.
Как будет более эффективно и менее затратно(с точки зрения нагрузки на сайт) вывести эту информацию :
1.Каждый раз выводить при помощи php скрипта, который "анализирует" страницу с файлами, сортирует и выводит html код.
2.Поставить Cron задачу на выполнение раз в неделю, записывать в html файлы и потом подключать их при необходимости.

Чисто логически, первый вариант гораздо более затратный, но при этом пользователь всегда сможет увидеть новые файлы, даже загруженные минуту назад.
Как быть Кто подскажет

Станет ли золотой серединой второй вариант, если выполняться он будет не раз в неделю, а предположим 2 раза в день?
карма: 0

0
Ответов: 198
Рейтинг: 2
#2: 2014-07-16 04:12:43 ЛС | профиль | цитата
Если на серваке стоит хотя бы Intel Pentium I, я бы не парился и делал первый вариант, тем более файлов, как я понял не много.

Ну а если вы извращенец, то можно и второй вариант и экономичность такого способа зависит напрямую от посещаемости сайта. Если посещаемость 50 человек в минуту, то установка Cron задачи даже раз в 10 секунду уже будет экономнее.

А вообще делается что-то типа так:
1. Заливается файл и сразу заносится в базу данных, типа MySQL;
2. Из базы данных пользователи PHP скриптом получают список файлов и ссылки на них.
И никаких лишних нагрузок
карма: 0

0
Ответов: 327
Рейтинг: 5
#3: 2014-07-16 14:53:44 ЛС | профиль | цитата
На данный момент список файлов получается следующим образом...
При помощи команды "file_get_contents" я получаю html код страницы где все файлы упакованы в список.
Идет сортировка, получаю содержимое между тегов "<a" и "</a>"
Получаю ссылку указанную в параметре href, данные заносятся в массив.
Перебирая массив проверяю на какой файл ссылается тег, если .тхт, то вывожу его содержимое между тегов "<p>" и "</p>", далее ищу по маске ("Имя тхт файла"*.zip).
При нахождении проверяю наличие версии (версия обозначается символом "-"), если файл имеет версию(содержит в названии символ "-"), то выводится ссылка с одним текстом, если не имеет версии, с другим.

В моем понимании такая процедура неплохо нагружает сервер.
Чем плох вариант с генерированием html файла с готовыми данными?
карма: 0

0
Ответов: 4630
Рейтинг: 749
#4: 2014-07-16 15:03:05 ЛС | профиль | цитата
То-есть, для получения списка ты парсишь какую-то заранее заготовленную страницу? А что, просто перебирать содержимое папки не подходит?
карма: 26

0
Ответов: 327
Рейтинг: 5
#5: 2014-07-16 15:13:30 ЛС | профиль | цитата
Готовой страницы не существует, результат который я разбираю выдает сервер, он выдает список файлов в папке.
карма: 0

0
Ответов: 4630
Рейтинг: 749
#6: 2014-07-16 15:20:13 ЛС | профиль | цитата
Тогда это какой-то костыль. Попробуй это: dirlist.7z
Скорость, думаю, вполне приемлемая даже для нескольких сотен файлов.
В файле пример получения массива файлов - вставляй в свою страницу. Не нужно сначала генерить список, а потом парсить.
карма: 26

0
файлы: 1dirlist.7z [607B] [315]
Ответов: 327
Рейтинг: 5
#7: 2014-07-16 15:36:15 ЛС | профиль | цитата
Предлагаете вставить этот файл как index.php в папки где хранятся файлы?
карма: 0

0
Ответов: 4630
Рейтинг: 749
#8: 2014-07-16 15:42:20 ЛС | профиль | цитата
Да. Естественно, оформить, чтобы выдавало названия, линки, и другую информацию, фильтровало по нужным тебе критериям.
Можно положить только в корень папки с файлами. А в листинге выдавать ссылки на подкаталоги. При щелчке на такой ссылке она направляет на тот же единственный файл php, только с параметром типа "index.php?dir=mysubdir". А в index.php показывать содержимое этого mysubdir. В общем может получиться "файловый менеджер".

А если запретить прямой доступ к файлам, а отдачу реализовать через PHP, то можно прикрутить авторизацию с правами на скачивание. Но это уже требует БД, тогда и список файлов там же хранить (можно сделать админку, тогда там же будет аплоад, управление доступностью файла, правами и т.п.)
карма: 26

0
Ответов: 327
Рейтинг: 5
#9: 2014-07-16 15:52:41 ЛС | профиль | цитата
Про напоминание об "opendir" и "readdir" спасибо, но в целом будет проще перестроить мой код, но уже используя "opendir" и "readdir".

Но все же... Неужели такой скрипт почти не нагружает сервер?
------------ Дoбавленo в 15.52:
Netspirit писал(а):
можно прикрутить авторизацию с правами на скачивание

Смысла думаю нет, я считаю что более приятно когда можно скачать файл без всякой капчи и регистрации.
карма: 0

0
Ответов: 4630
Рейтинг: 749
#10: 2014-07-16 16:03:41 ЛС | профиль | цитата
knoot0279 писал(а):
Неужели такой скрипт почти не нагружает сервер?

А какая разница, строит ли список файлов модуль mod_autoindex или скрипт PHP? Тем более, что в первом случае тебе все равно нужно выполнить скрипт PHP.

Единственное, если так хочешь оптимизации, можешь весь этот код вынести в отдельную страницу, которая по запросу генерирует список файлов и сохраняет его в index.php. Пользователи смотрят только index.php, а генерирующую страницу ты запускаешь самостоятельно только после добавления файлов.
карма: 26

0
Ответов: 1328
Рейтинг: 69
#11: 2014-07-17 09:34:46 ЛС | профиль | цитата
knoot0279, нарисуй прожку, которая будет заливать файлы и после заливки генерировать и заменять html - вообще никаких скриптов, в hiasm для этого все есть.
карма: 2

0
11
Сообщение
...
Прикрепленные файлы
(файлы не залиты)