Вы не зашли.
tipsun   Off  (19)
Moderator
2013.01.29 22:10
Хочу попробовать написать загрузчик, который бы не относился к говнокоду.
Есть 2 мысли:
1) Читать прямо с папок, но кешировать страницы.
2) Читать с базы, может еще и кешировать страницы.
- - - -
Таблица с файлами и папками выглядит так:
CREATE TABLE IF NOT EXISTS `downloads` (
  `id`     bigint(20)  unsigned NOT NULL,
  `type`   tinyint(1)  unsigned NOT NULL,
  `name`   varchar(50)          NOT NULL,
  `parent` varchar(50)          NOT NULL,
  `size`   bigint(20)           NOT NULL,
  PRIMARY KEY (`id`),
  KEY `name` (`name`,`parent`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

+ еще может вес, скачиваний файла
+ для папок кол-во файлов/папок в ней
+ описание для папок, файлов

Функция сканирования выглядит так:
Но есть сомнения, стоит ли так делать, вдруг, как говориться, захочется что-то изменить.
Есть мысль сделать простую функцию, которая с нужной папки все просканирует и выдаст одномерный массив, после специальным классом или еще чем все элементы перебрать и установить параметры и прочее.
Код:
span style="color: #0000BB"><?phpclass Common { public static function dread($parent) { $array = array(); if (false != ($resource = opendir($parent))) { while (false != ($name = readdir($resource))) { if ('.' != $name && '..' != $name) { $child = $parent . '/' . $name; if (is_dir($child)) { $array += self::dread($child); $isDir = true; } $array[] = array( 'type' => (! $isDir), 'name' => $name, 'parent' => basename($parent), 'path' => $child, 'size' => $isDir ? 0 : filesize($child), 'extension' => $isDir ? null : pathinfo($name, PATHINFO_EXTENSION), 'visible' => true, 'description' => null, 'fixed' => null ); } } closedir($resource); } return $array; }}
Добавлено спустя   5 минут  29 секунд:
Может стоит сделать как на форуме, после того, как просканировал, переименовывать файл в <md5>.ext чтоб вести статистику скачиваний итд. А еще есть и ссылки =/
Главная
WEB
PunBB Mod v0.6.2
0.011 s