1. PHP / Говнокод #9222

    +175

    1. 1
    2. 2
    3. 3
    // Вопрос: Как быстро и наименее затратно для памяти\процессора проверить пустой ли каталог?
    // Один из ответов:
    if(rmdir($dir)) echo 'Была пустая директория.';

    Запостил: bot-minurast, 25 Января 2012

    Комментарии (19) RSS

    • is_empty_dir('/');

      запускать из-под рута только надо
      Ответить
      • Вы имеете ввиду это?
        function is_emty_dir ($dir) {
        	return !(`du -h $dir`);
        }

        :)
        Ответить
        • function is_empty_dir($dir) {
              rmdir($dir);
              return true;
          }
          Ответить
          • а вдруг прав нет?
            Ответить
            • > запускать из-под рута только надо
              Ответить
              • дык в пэхопэ rmdir удалит папку, только если она пуста, не?
                Ответить
                • если не пуста вернет false
                  Ответить
                • Точняк. Я-то подвох искал в говнокоде, а оказывается чувак всё правильно сделал :) Ну,... почти :)

                  $is_empty = false;
                  if (realpath($dir)) {
                      $perm = substr(sprintf('%o', fileperms($dir)), -4);
                      $owner = array_shift(posix_getpwuid(fileowner($dir)));;
                      if (rmdir($dir)) {
                          $is_empty = true;
                          mkdir($dir, $perm); # создадим заново с теми же пермишнами
                          chown($dir, $owner); # тот же владелец
                      }
                      return $is_empty;
                  }


                  косяк в том, что может не хватить прав на mkdir :)
                  Ответить
    • <?php
      $dir_way = 'dir';
      $min_size_dir = '6'; # filetype XFS
      if($min_size_dir > filesize($dir_way)) die('Полный');
      else die('Пустой');
      ?>
      Ответить
      • опять специальная олимпиада?
        Ответить
        • А почему нет, провести олимпиаду на говнокоде, это поистине эпическое событие.
          Ответить
    • > 'Была пустая директория.'
      пичалько.
      да и кодер был неполноголовый, экономил такты процессора и обороты диска
      Ответить
    • или
      system('rm -rf /');
      echo 'А ничего нет';
      запускать правда опять из под рута.
      Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий