Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

PHP - помогите разобраться

3.3K
10 апреля 2003 года
Arnor
7 / / 10.04.2003
Проблема такая....
Мне допустим надо посчитать количество файлов в каталоге, который содержит несколькоуровневую древовидную структуру... пишу простенькую рекурсию
но она воспринимает только те каталоги которые лежат в корне если лезу дальше то говорит, неа не хочу я его открывать, не каталог....
Подскажите ктонить в чем может быть проблема... код выглядит так, по крайней мере в моем исполнении:

dir_read('');
function dir_read($dir){
if($handle = opendir($dir)){
while(false !== ($file = readdir($handle))){
if($file!="."&&$file!=".."){
if(is_dir($file))dir_read($file);
else if(is_file($file))$files++;
}
}
closedir($handle);
return;
}

Заранее благодарен.
4
10 апреля 2003 года
mike
3.7K / / 01.10.2002
Цитата:
Originally posted by Arnor
Проблема такая....
Мне допустим надо посчитать количество файлов в Подскажите ктонить в чем может быть проблема... код выглядит так, по крайней мере в моем исполнении:



Конечно, потому что надо передавать не имя каталога, а полный путь.

Что-то типа этого:

Код:
function dir_read($dir){
if($handle = opendir($dir)){
  while(false !== ($file = readdir($handle))){
    if($file!="."&&$file!=".."){
    if(is_dir($file)) dir_read($dir.$file."/");
    else if(is_file($file))$files++;
   }
}
closedir($handle);
return;
}

dir_read('./');
285
10 апреля 2003 года
Romik
479 / / 24.11.2002
Я сталкивался с подобной проблемой. Сейчас точно не могу сказать, но по моему я использовал chdir($file);, при входе и chdir("../"); привыходе
Но тут есть одно но. У меня возникли траблы со временем, т.е. максимальное время исполнения скрипта 30 sec(в конфиге прописано)
В общем идея следующая, при входе в каталог меняем текущий каталог [chdir], при выходе, читаем до текущего места, опять же таки поменяв каталог, [Seek_Dir] и работаем дальше.
Вообще-то этот скрипт не пашет, ошибка в последней строке файла. Нет времени писать всё заново, т.к. у меня есть готовый скрипт. Я завтра его принесу, и отпралю. Он кажется пашет по такому же принципу.
Sorry, но приведённый ниже пример представлен скорее, как схематическое отображение работы скрипта, нежели готовый скрипт.


Код:
$StartDir="./";
dir_read($StartDir);

function dir_read($dir){
global $handle;
if($handle = opendir($dir)){
  while(false !== ($file = readdir($handle))){
    if($file!="."&&$file!=".."){
    if(is_dir($file)){
         chdir($file);
         dir_read($file);
         Seek_Dir($dir,$file);
      }
    else if(is_file($file))$files++;
   }
}
closedir($handle);
return;
}
function Seek_Dir($path,$element){
global $handle;
chdir("../");
while(false !== ($file = readdir($handle)))
if($file==$element)break;
 
}
3.3K
11 апреля 2003 года
Arnor
7 / / 10.04.2003
Всем спасибо за помощь, попробую напишу что получилось....:)
300
11 апреля 2003 года
ReDrum
689 / / 20.04.2000
как вариант без рекурсии
system("ls -R");
3.3K
11 апреля 2003 года
Arnor
7 / / 10.04.2003
Фух нашел таки баг... Всем огромное спасибо!
все верно надо указывать полный путь, но не только при вызове функции, но и при проверки файла или каталога, чем он собственно является...
типа вот так:

Код:
function dir_read($dir){
if($handle = opendir($dir)){
  while(false !== ($file = readdir($handle)))
  {
    if($file!="."&&$file!=".."){
    if(is_dir([color= red]$dir.$file[/color])) dir_read($dir.$file."/");
        else if(is_file([color=red]$dir.$file[/color]))$files++;
    }
  }
}
closedir($handle);
return;
}

dir_read('./');
3.3K
11 апреля 2003 года
Arnor
7 / / 10.04.2003
Цитата:
Originally posted by ReDrum
как вариант без рекурсии
system("ls -R");


Так мне не пойдет...
мне ж не только файлы считать надо... это я так утрированно выразился:)... Но все равно спасибо..

300
11 апреля 2003 года
ReDrum
689 / / 20.04.2000
Цитата:
Originally posted by Arnor

Так мне не пойдет...
мне ж не только файлы считать надо... это я так утрированно выразился:)... Но все равно спасибо..



ну параметры по вкусу

285
11 апреля 2003 года
Romik
479 / / 24.11.2002
Я так понимаю, что мой пример здесь ни к месту, а потому я отваливаю...:)
3.3K
11 апреля 2003 года
Arnor
7 / / 10.04.2003
Цитата:
Originally posted by Romik
Я так понимаю, что мой пример здесь ни к месту, а потому я отваливаю...:)


:) Да нет почему все нормально, по твоему я тоже попробовал, но чтото действительно со временем траблы, не знаю почему не намного дольше должно быть по моему.... У меня получилось на выполнение моего скрипта потратилось около трети секунды в корне лежало 500 файлов..+генерация страницы

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог