Извините за неинформативное название, не был уверен, как это назвать :-)
Я написал API, который загружает необходимые библиотеки javascript из каталога на моем сервере. Каталоги имеют определенный формат, единственное, что может отличаться, это формат имени файла в каталоге каждой библиотеки.
Формат каталога
_js/_источник/_имя_библиотеки_здесь/имя_файла_здесь.js
e.g.
/_js/_source/_fancybox/jQuery.lightbox-0.5.js
Массив (в настоящее время жестко запрограммирован)
На данный момент у меня есть отдельные библиотеки, хранящиеся в массиве (жестко запрограммированные), например:
$js_libraries = array(
'fancybox' => '/_js/_source/_fancybox/jQuery.lightbox-0.5.js',
'something_else' => '/_js/_source/_something_else/jQuery.something.js'
);
Потенциальная альтернатива
Этот API был бы намного более динамичным, если бы массив $js_libraries
создавался автоматически путем сканирования каталога '_source' и заполнения массива подобным образом. Я бы сделал это с помощью что-то вроде (не проверено, просто пример!):
function gather_files($directory){
$files_and_folders = scandir($directory);
foreach($files_and_folders as $value){
if($value != '.' && $value != '..'){
if(is_dir($directory.'/'.$value)){
listFolderFiles($dir.'/'.$ff);
}
}
}
}
$js_libraries = gather_files(dirname(__FILE__));
Вышеупомянутое не завершено, просто хотел продемонстрировать, что я имею в виду под автоматическим построением массива на основе содержимого каталога
Мой вопрос
Проще говоря, ключом этого API является скорость, поскольку он возвращает упакованные/минимизированные (с помощью PHP на лету) файлы javascript на HTML-страницу и, следовательно, не может иметь никаких задержек, поскольку это задержит запуск страницы. Я хотел бы знать, будет ли автоматический метод заметно медленнее, если в этом каталоге много библиотек? Должен ли я просто придерживаться жестко заданного массива?
glob()
. Я просто хочу знать, будет ли это заметно медленнее :-) - person Ben Carey   schedule 25.10.2012glob()
, в файл и прочитайте его оттуда. - person KingCrunch   schedule 25.10.2012scandir()
не является рекурсивным, поэтому ваши тесты должны прекрасно представлять реальный случай. - person user428517   schedule 25.10.2012scandir()
не является рекурсивным. - person user428517   schedule 25.10.2012