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 :: Прошу оценить скрипты

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
new01
Отправлено: 08 Июля, 2011 - 13:12:08
Post Id



Посетитель


Покинул форум
Сообщений всего: 301
Дата рег-ции: Июнь 2010  
Откуда: Челябинск


Помог: 1 раз(а)




Друзья, прошу вас оценить скрипты , которые я нашёл здесь на форуме. МОжет они не подходят для того, что мне надо.
Этот скрипт копирует все файлы из одной папки в другую.
PHP:
скопировать код в буфер обмена
  1.  
  2. /*
  3. $srcdir         - каталог с исходными файлами
  4. $dstdir         - конечный каталог
  5. $forced         - принудительная синхронизация
  6.                 (перезапись файлов в конечном каталоге)
  7. */
  8.  
  9. setlocale(LC_ALL, 'ru-RU');
  10.  
  11. function sync_folder($srcdir, $dstdir, $forced = false)
  12. {
  13.   $sizetotal = 0;
  14.  
  15.   if(!is_dir($dstdir)) mkdir($dstdir);
  16.   // открываем исходный каталог
  17.   if($curdir = opendir($srcdir)) {
  18.  
  19.         // последовательно считываем все
  20.     // имена файлов и каталогов
  21.     while($file = readdir($curdir)) {
  22.  
  23.       // пропускаем указатель на текущий и
  24.       // предыдущий каталоги
  25.       if($file != '.' && $file != '..') {
  26.         $srcfile = $srcdir . '/' . $file;
  27.         $dstfile = $dstdir . '/' . $file;
  28.  
  29.         // если текущий элемент - файл
  30.         if(is_file($srcfile)) {
  31.  
  32.           // если конечный файл существует -
  33.           // проверяем, надо ли его обновлять
  34.           if(is_file($dstfile))
  35.             $ow = filemtime($srcfile) -
  36.                   filemtime($dstfile);
  37.           else $ow = 1;
  38.  
  39.           // если надо обновлять
  40.           if($ow > 0 || $forced) {
  41.  
  42.             echo "Копирую '$srcfile' в '$dstfile'...";
  43.  
  44.             // пробуем скопироваь файл
  45.             if(copy($srcfile, $dstfile)) {
  46.  
  47.               // дополнительная обработка
  48.               // ...
  49.  
  50.               // устанавливаем время создания конечного
  51.               // файла такое же, как у исходного.
  52.               touch($dstfile, filemtime($srcfile)); $num++;
  53.  
  54.               // устанавливаем права на доступ к
  55.               // файлу "можно всё всем"
  56.               chmod($dstfile, 0777);
  57.  
  58.               // увеличиваем счётчик скопированного
  59.               // объема на объём последнего файла
  60.               $sizetotal =
  61.                 ($sizetotal + filesize($dstfile));
  62.  
  63.               echo "Готово \n <br />";
  64.             }
  65.             else {
  66.               echo "Ошибка: Не могу ".
  67.                     "скопировать файл '$srcfile'! <br />\n";
  68.             }
  69.           }
  70.         }
  71.       }
  72.     }
  73.     // закрываем ранее открытый каталог
  74.     closedir($curdir);
  75.   }
  76.  
  77.   echo 'Копирование завершено!';
  78.  
  79.   return true;
  80. }
  81.  

Этот удаляет все файлы и папки в одной папке.Соответсвенно и саму папку.
PHP:
скопировать код в буфер обмена
  1.  
  2. function RemoveDir($path){
  3. if(file_exists($path) && is_dir($path)){
  4. $dirHandle = opendir($path);
  5. while(false!==($file = readdir($dirHandle))){
  6. if($file!='.' && $file!='..'){
  7. $tmpPath = $path.'/'.$file;
  8. chmod($tmpPath, 0777);
  9. if(is_dir($tmpPath)){
  10. RemoveDir($tmpPath);
  11. } else {
  12. if(!unlink($tmpPath)) echo 'Не удалось удалить файл «'.$path.'»!';
  13. }
  14. }
  15. }
  16. closedir($dirHandle);
  17.  
  18. // удаляем текущую папку
  19. if(!rmdir($path)) echo 'error', 'Не удалось удалить папку «'.$path.'»!';
  20.  
  21. } else {
  22. echo 'error', 'Папки «'.$path.'» не существует!';
  23. }
  24. }
  25.  


-----
new01
 
 Top
White
Отправлено: 08 Июля, 2011 - 13:32:00
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




собственно оба можно сделать меньше с функцией glob()
в первом неплохо бы добавить рекурсию, чтобы копировались не только файлы а и папки


-----
if(time()>1356048000) die();
 
 Top
new01
Отправлено: 08 Июля, 2011 - 14:12:28
Post Id



Посетитель


Покинул форум
Сообщений всего: 301
Дата рег-ции: Июнь 2010  
Откуда: Челябинск


Помог: 1 раз(а)




Да обойдусь без рекурсии. Улыбка


-----
new01
 
 Top
Slavenin
Отправлено: 08 Июля, 2011 - 16:25:19
Post Id



Посетитель


Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010  
Откуда: Тверь


Помог: 4 раз(а)




new01 пишет:
МОжет они не подходят для того, что мне надо

а что надо?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB