powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Оптимизация работы с файловой системой
33 сообщений из 33, показаны все 2 страниц
Оптимизация работы с файловой системой
    #36995805
TWK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне нужно проинключить скриптом все найдены файлы в папках и под папках, вот сделал это так (привожу код без всяких доп. проверок но не в них проблема)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
     function  load_libs($dir) {
        $dir_handle =  opendir ($dir);
         while (($file =  readdir ($dir_handle)) !==  false  ) {
             if ($file != "." && $file != ".." ) {
                $path = $dir . "/" . $file;                
                 include_once  $dir.'/'.$file;                 
                 if ( is_dir ($path)) {
                    load_libs($path);
                }                
            }
        }
         closedir ($dir_handle);
 

папок и подпапок не так уж и много но время генерации страницы при инклуде библиотек в этих подпапках и папках увеличелось в два-три раза в отличие если бы их просто тупо руками в скрипте проинклулить. Но мне надо автоматом что бы скрипт подключал остльные скрипты-библиотеки в нужной мне папке и во всех его подпапках.

Можно как то оптимизировать это ?
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36995854
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TWK, может ты просто поставишь xcache/eacclerator/apc ?
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36995866
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TWKМожно как то оптимизировать это ?
Нет, опрос файловой системы при каждой загрузке страницы - это очень дорого. Кэшируй список файлов, если уж очень хочешь такую работу инклудов.
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36995928
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На мой взгляд, более правильным будет один файл со списком инклюдов. Именно он должен отрабатывать при выполнении скрипта. А формировать/обновлять этот файл следует каждый раз при изменении набора файлов в директории. В проверках следует исключить резервные копии вроде *.bak, ~ и т.п. Или как то ещё более строго подойти к этому вопросу.

Мне известны случаи, когда резервную копию именовали разными нестандартными способами, вроде file.php_27.09.2010, или совсем безобидным 27092010_file.php. Смеяться не надо... Как то в пятницу, летним вечером прибежали с проблемой, растущей из такого вот скрипта, который инклюдил ВСЕ файлы, находящиеся в директории. Вывод ошибок, конечно, отключен, потому незадачливому верстальщику было и невдомёк, что сайт "упал" именно из-за такой вот "резервной копии". А могли б запихнуть туда не класс, а чего другое, вроде таблицы стилей... Глупость то человеческая безгранична, проверок не напасёшся ))
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36995983
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TWK как обычно придумывает себе странные проблемы, а потом мужественно их решает))
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36996161
TWK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотел еще сказать что в моем способе есть проблема.
Я не могу собрать массив что бы потом по нему пройтись когда нужно и проинклудить.
Кто нибудь знает как такое сделать ?
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36996163
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TWK,

>Я не могу собрать массив что бы потом по нему пройтись когда нужно

А куда нужно? Рекурсивный обход каталогов из соседней темы или другое?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36996172
TWK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  function  load_libs($dir) {
        $dir_handle =  opendir ($dir);
         while (($file =  readdir ($dir_handle)) !==  false  ) {
             if ($file != "." && $file != ".." ) {
                $path = $dir . "/" . $file;                
                 include_once  $dir.'/'.$file;                 
                 if ( is_dir ($path)) {
                    load_libs($path);
                }                
            }
        }
         closedir ($dir_handle);
тут рекурсивный обход, да. хотелось бы не тут инклудить а собрать массив а про инклудить потом уже как мне захочется массив, например в другом порядке, либо только нужные на конкретной странице а не сразу все либы.
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36996177
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
моя плакает. открой для себя autoload.
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36996182
TWK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrow
причем тут ооп
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36996206
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TWK,

>тут рекурсивный обход, да.

Уже высказался, почему не следует это использовать.


>либо только нужные на конкретной странице а не сразу все либы

А вот это здравая мысль! Как узнать, какие либы нужны? autoload уже отвергнут окончательно?
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36996210
TWK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пример использования autoload. можно посмотреть ? и это же ооп да ?
есть вариант пройтись по всем папка не рекурсивно ? хм.. щас посмотрю, может и предлагали в предыдущей теме не рекурсивный обход
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36996245
TWK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если моя рекурсия плохая, то как сделать на это http://www.php.net/manual/en/class.directoryiterator.php я не пойму (
и также собрать массив всех библиотек в папках и подпапках, что бы не инклудить их всех этой рекурсивной функцией
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36996247
TWK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
круто нашел способ, так и массив можно собрать

Код: plaintext
1.
2.
3.
$it =  new  RecursiveDirectoryIterator($folder);
 foreach ( new  RecursiveIteratorIterator($it)  as  $file) {
 echo  $file . "\n";
}
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36996332
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TWK,

пробегать всё дерево файлов при каждой загрузке скриптов (не обязательно инклудить, просто узнать, какие файлы есть) - это очень дорогая операция. Кэшируй этот массив.
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36996485
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowмоя плакает. открой для себя autoload.
И чем же он тут поможет?
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36996519
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettИ чем же он тут поможет?
тем что файлы сами будут подгружаться тогда когда это нужно, а не тупо инклюдить сотню файлов при каждом запросе, не разбирая нужно это или нет.
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36996712
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а, ну так даже не известно, что там в этих файлах, если какие-то модели-классы, то да.
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36996807
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

если не классы, то можно сделать свой простой автолоад. который будет в любом случае эффективнее чем тупой инклюд ВСЕХ файлов из кучи директорий.
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36996991
TWK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть роект(можно сказать фреймвок) для которого люди пишут разные либы, а проектом они подгружаются.
Что то по типу хелперов как это в фреймворках есть, но только они могут быть в папках и подпаках.
даже с помощью RecursiveDirectoryIterator несколько библиотек в нескольких папок грузятся страницу от 2 - 4 секунд, а что будет когда их будет десятки, страшно преставить что будет... о_О
Короче время генрации страницы большое для небольшого количества уже имеющихся либ.
Каким то образом индесировать уже подключенные и по этим папка не пробегать чтоли. как это сделать досих пор не вьехал :( ведь библиотеки будут появлятся новые...
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36997073
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TWK,

кэшируй массив файлов, полученный RecursiveDirectoryIteratorом. У нас примерно такая же система подгрузки классов (не соблюдаем строгую иерархию виду Blah/BlahBlah/BlahBlahBlah.php -> class Blah_BlahBlah_BlahBlahBlah) - до кэширования могла положить сервер на полминуты при нескольких одновременных запросах; после кэширования работает как часы и держит много одновременных коннектов.

И да, ты правильно думаешь, что когда файлов будет много - дела будут хуже. Настолько хуже!!!
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36997969
Anjey aka PM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как magento до сих пор работает ( 12,5к файлов =) )
Конечно она все разом не грузит....
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36998002
TWK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделал такое вот кеширование файлов только оно чето не правильно работает мне кажется
в db.txt записывается N; а не сериализованный массив с которым потом сверять

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
	$start_time =  microtime ( true );
	
	
	$cashe =  file_get_contents ('db.txt');
	
	$c_files =  unserialize ($cashe);
	
	$folder = 'folder';
	 var_dump ($c_files);
	$it =  new  RecursiveDirectoryIterator($folder);
	 foreach ( new  RecursiveIteratorIterator($it)  as  $file) {
		 if (! in_array ($file->getPathName(),$c_files)) {
			$files[] = $file->getPathName();
		}
	}
	
	$res_files =  array_merge ($c_files,$files);
	
	 file_put_contents ('db.txt', serialize ($res_files));
	
	 var_dump ($files);		
	
	$end_time =  microtime ( true );	
	$res_time = $end_time - $start_time;	
	 printf ("Elapsed time %.3f seconds",$res_time);
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36998271
TWK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
посмотрел еще раз свой вариант, мне кажется он в корне неверный так как все равно обшаривать придется папки и под папки и не входящие в массив дописывать. но прохождения по папкам все равно то есть.
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36998307
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TWKпосмотрел еще раз свой вариант, мне кажется он в корне неверный так как все равно обшаривать придется папки и под папки и не входящие в массив дописывать. но прохождения по папкам все равно то есть.
Эмм... При каждом запросе к серверу надо обшаривать тыщу папок по стотысячному разу в надежде обнаружить, что кто-то только что добавил свежий файлик?
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36998339
TWK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragon
а разве во всех cms, фреймворках... такой штуки нету как плагины, модули, хелперы. вот пытаюсь найти решение но пока безуспешно.
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36998342
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TWKEdd.Dragon
а разве во всех cms, фреймворках... такой штуки нету как плагины, модули, хелперы. вот пытаюсь найти решение но пока безуспешно.
Ну так и посмотри как там это реализовано.

Неужели грузят все что только можно даже если этого всего на конкретной странице не нужно?
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36998397
TWK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сейчас вот вспомнил что делал же такую вещь только грузил из одного каталога файлы и бывало много, но такого замедления работы не замечал. неужели это все дело в рекурсивном прохождении по каталогам и подкаталогам ?
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #36998535
Anjey aka PM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TWKEdd.Dragon
а разве во всех cms, фреймворках... такой штуки нету как плагины, модули, хелперы. вот пытаюсь найти решение но пока безуспешно.Потому что в этих фреймворках грамотно написан автолоад и он грузит только то что реально надо на странице.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Оптимизация работы с файловой системой
    #37925299
dfediuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anjey aka PMКак magento до сих пор работает ( 12,5к файлов =) )
Конечно она все разом не грузит....
Magento содержит специальный инструмент — « компилятор » — который объединяет сотни и тысячи файлов с исходным программным кодом в единый файл (пакет). Всего в результате компиляции получается несколько таких пакетов.

Более того, Magento способна анализировать частоту загрузки тех или иных файлов с программным кодом, и на основании накапливаемой статистической информации перегруппировывать файлы между пакетами.
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #37925324
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пасиба капитан очевидность
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #37925332
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а это и не капитан. а очередное сеонизаторское чьмо.
...
Рейтинг: 0 / 0
Оптимизация работы с файловой системой
    #37927125
Anjey aka PM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dfediukAnjey aka PMКак magento до сих пор работает ( 12,5к файлов =) )
Конечно она все разом не грузит....
Magento содержит специальный инструмент — « компилятор » — который объединяет сотни и тысячи файлов с исходным программным кодом в единый файл (пакет). Всего в результате компиляции получается несколько таких пакетов.

Более того, Magento способна анализировать частоту загрузки тех или иных файлов с программным кодом, и на основании накапливаемой статистической информации перегруппировывать файлы между пакетами.то-то мы эту хрень на всех высоконагруженных серверах отключаем.
...
Рейтинг: 0 / 0
33 сообщений из 33, показаны все 2 страниц
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Оптимизация работы с файловой системой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]