tipsun
                     
                            Off
            
                                         (19)
                                            
                Moderator
                2013.01.29 18:06
    
 
        Хочу попробовать написать загрузчик, который бы не относился к говнокоду.
Есть 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 чтоб вести статистику скачиваний итд. А еще есть и ссылки =/