Обучение HTML, Excel, Word. Как сделать свой сайт бесплатно

Microsoft Office

Сайтостроение

HTML

Программинг

Компьютер

Графика

Разное

· Основы Word
· Основы Excel
· Основы VBA
· Основы OpenOffice
· Как сделать сайт
· Свой сайт от А до Я
· Оптимизация сайта
· Шаблоны для сайта
· Обзор CMS
· Основы HTML
· HTML-теги
· Основы CSS
· Основы PHP
· Основы JavaScript
· Софт для сайта
· Что внутри ПК
· ПК для чайников
· Все о BIOS
· Web-графика
· САПР: AutoCAD
· Статьи
· Форум
· SEO-новости
Главная страница Карта сайта
Учебник PHP
Основы SQL
  1. Введение
  2. Инструменты
  3. Первый шаг
  4. Структура языка
  5. Массивы
  6. Глобальные массивы
  7. Cookies
  8. Сессии
  9. Загрузка файлов
  10. Работа с файлами
  11. Работа с базами данных
  12. Работа в сети
  13. Отправка почты
  14. Безопасность
  15. Автоматизация
  16. Регулярные выражения в PHP
  17. Интеграция
 



Пример управления файлами

Автор: Артемьев Сергей Игоревич
ICQ: 438856621
email: _spin_@bk.ru

В практике веб-программиста периодически возникают задачи копирования и простой синхронизации каталогов сервера. В этом примере мы создадим довольно универсальную функцию копирования данных.


<?php

/*
$srcdir		- каталог с исходными файлами
$dstdir		- конечный каталог
$forced		- принудительная синхронизация
                (перезапись файлов в конечном каталоге)
*/

setlocale(LC_ALL, 'ru-RU');

function sync_folder($srcdir, $dstdir, $forced = false)
{
  $sizetotal = 0;

  if(!is_dir($dstdir)) mkdir($dstdir);
  // открываем исходный каталог
  if($curdir = opendir($srcdir)) {

  	// последовательно считываем все
    // имена файлов и каталогов
    while($file = readdir($curdir)) {

      // пропускаем указатель на текущий и
      // предыдущий каталоги
      if($file != '.' && $file != '..') {
        $srcfile = $srcdir . '/' . $file;
        $dstfile = $dstdir . '/' . $file;

        // если текущий элемент - файл
        if(is_file($srcfile)) {

          // если конечный файл существует -
          // проверяем, надо ли его обновлять
          if(is_file($dstfile))
            $ow = filemtime($srcfile) -
                  filemtime($dstfile);
          else $ow = 1;

          // если надо обновлять
          if($ow > 0 || $forced) {

            echo "Копирую '$srcfile' в '$dstfile'...";

            // пробуем скопироваь файл
            if(copy($srcfile, $dstfile)) {

              // дополнительная обработка
              // ...

              // устанавливаем время создания конечного
              // файла такое же, как у исходного.
              touch($dstfile, filemtime($srcfile)); $num++;

              // устанавливаем права на доступ к
              // файлу "можно всё всем"
              chmod($dstfile, 0777);

              // увеличиваем счётчик скопированного
              // объема на объём последнего файла
              $sizetotal =
                ($sizetotal + filesize($dstfile));

              echo "Готово \n <br />";
            }
            else {
              echo "Ошибка: Не могу ".
                    "скопировать файл '$srcfile'! <br />\n";
            }
          }
        }
      }
    }
    // закрываем ранее открытый каталог
    closedir($curdir);
  }

  echo 'Копирование завершено!';

  return true;
}

sync_folder('./src',
            './dest',
            isset($_REQUEST['forced']));

?>

Сохраните текст примера в файле syncfolder.php в одном из каталогов веб-сервера, а так же создайте рядом со скриптом два каталога: src и dest. В первый каталог поместите несколько произвольных файлов и в браузере запустите скрипт на выполнение.

По окончании копирования в браузере отобразится список скопированных файлов и сообщение "Копирование завершено!", а содержимое каталогов src и dest будет одинаковым.

Эту функцию можно использовать везде, где надо синхронизировать два каталога или просто скопировать файлы. В коде после пометки "дополнительная обработка" можно вставить любые необходимые операции, например, наложение водяного знака на изображение, регистрация файла в базе данных или удаление.

При небольшой доработке функцию можно адаптировать для копирования каталога со всеми подкаталогами. Но следует помнить, что на большинстве серверов включен безопасный режим, а значит автоматически создать необходимые каталоги скорее всего не удастся и скрипт завешится с ошибкой.

Поэтому при разработке скриптов и сайтов надо стараться избегать решений, требующих частого создания или удаления каталогов на сервере. Это упростит процесс поддержки скрипта а также избавит вас от необходимости постоянно подключаться к серверу и вручную создавать нужные каталоги.

top




 




Спасибо, что заглянули на сайт. Надеюсь, Вам понравилось. Заходите еще. Здесь всегда рады вам :)
При копировании материалов, размещенных на сайте, ссылка на первоисточник обязательна.
Если понравился этот сайт..

© 2005-2012
Юрий Кордык All Rights Reserved

 

E-mail:
admin@on-line-teaching.com