|
|
|
|
|
для: Gemorroj
(21.08.2007 в 20:09)
| |
function dir_file($d)
{
exec('ls -R '.$d, $out);
return sizeof($out)-1;
}
|
вот, где $d это директория в которой нужно посчитать файлы | |
|
|
|
|
|
|
|
для: Trianon
(21.08.2007 в 14:07)
| | та же проблема и у меня
быстрее всего кажись это
exec('ls -R', $out);
foreach($out as $i)
{
print $i."\n";
}
|
| |
|
|
|
|
|
|
|
для: Саня
(21.08.2007 в 11:57)
| | Естественно, что размер дерева заранее неизвестен.
Напомню алгоритм обхода.
Queue q[2];
int flop = 0;
q[0].empty(); q[1].empty();
q[flop].add(""); // добавляем корневой элемент;
do
{
flip = flop; flop ^= 1;
while(!q[flip].is_empty())
{
path = q[flip].remove() . '/'; .// изымаем родительский элемент
for(dir = scandir(path); // пробегаем по дочерним узлам элемента
name = nextdir(dir);
show(path.name)) // выводя полные имена узлов
if(is_dir(path.name))
q[flop].add(path.name); // добавляем дочерний элемент
}
}while(!q[flop].is_empty);
|
| |
|
|
|
|
|
|
|
для: Trianon
(21.08.2007 в 07:18)
| | А если размер дерева заранее неизвестен? | |
|
|
|
|
|
|
|
для: Саня
(21.08.2007 в 01:49)
| | ой, да ладно! Так уж и никак.
Примитивный обход дерева в ширину - чисто итеративный алгоритм.
Я бы написал, да только автора вопроса он не спасет - скорость у него не из-за самой рекурсии страдает.
Автору можно посоветовать отделить поиск элементов каталога от их рекурсивной обработки.
Если не поможет - надо менять всю структуру хранения данных.... возможно, с переходом на БД. | |
|
|
|
|
|
|
|
для: Саня
(21.08.2007 в 01:49)
| | . | |
|
|
|
|
|
|
|
для: ruwap
(21.08.2007 в 00:57)
| | Если сканировать и вложенные директории, то без рекурсии никак. Но можно попробовать вызвать утилиту ls с параметром -R и пропарсить полученные данные. | |
|
|
|
|
|
|
|
для: ruwap
(21.08.2007 в 00:57)
| | вложенных? тогда никак вроде без нее | |
|
|
|
|
|
|
| Здраствуйте.
Нужна такая функция,а то раньше работал с рекурсиями.
А сейчас,когда файлов стало много,с этой функцией работать невозможно.
странички грузятся очень долго.
Если кто знает такую,подскажите.
Я даже готов заплатить,а то очень надо.А сам не сделаю :( | |
|
|
|
|