Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Как быстро и наименее затратно для памяти\процессора проверить пустой ли каталог?
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
ZeiZ пишет:
Есть ли быстрее вариант?
В вашем случае происходит считывание всех элементов из папки - что при большом их количетсве приводит к достаточному замедлению работы и заполнению памяти - то есть пакетную проверку директорий на пустоту таким образом делать не стоит
Вероятно можно ускорить процесс если считывать не все файлы сразу - а по очереди с помощью readdir и если их число ненулевое то возвращать false Минусом в таком случае является только то что требуется открытие дополнительного дескриптора директории
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Uchkuma
Отправлено: 30 Июня, 2010 - 18:28:51
Участник
Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010 Откуда: Киров
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Uchkuma пишет:
if(rmdir($dir)) echo 'Была пустая директория.';
Данная конструкция является встроенной функцией удаления директории которая проверяет ее пустоту перед соответствующей операцией - однако это делается не ради сохранения возможных файлов и подкаталогов в ней - а сохранения целостноти индеса файловой системы то есть древесной структуры всех папок и файлов По этой причине работы этой функции не является особенно быстрой - ведь ей также приходится проверять на пустоту папку и еще выполнять дополнительные операции с файловой системой В то же время вариант scandir будет работать несколько быстрее и не затрагивать файловую систему - и кроме того если у пользователя не было соответствующих прав на запись но были права на чтение то вышеуказанный вариает также не будет работать Поэтому вероятно имеет смысл использовать функцию сканирования папки с выбором из нее одного элемента - если он существует то папка не пуста и помимо того в память не копируется список всего ее содержимого
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.