Главная страница О Web-студии Разработка сайтов Интернет-реклама CD-презентации 3D-графика Программное обеспечение
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создание сайтов. Авторы: Кузнецов М.В., Симдянов И.В. Головоломки на PHP для хакера (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры . Авторы: Кузнецов М.В., Симдянов И.В. PHP. Народные советы. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование: ступени карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Security & Cracking Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
Консультации от известных специалистов и авторов многих книг

Информационный портал
«SoftTime-INFO»


Примеры скриптов на PHP

Вернуться в примеры скриптов

Резервное копирование на PHP


Наверняка многие имеют в хояйстве внешний жёсткий диск (стоит удовольствие около 100$) или Flash-ку внушительных размеров (дороже, но компактнее), однако до резервного копирования критически важных данных руки не доходят, так как их занимают критически важные задачи :))). При помощи PHP можно осуществлять резервное копирование при помощи нажатии одной клавиши мыши или кнопки Enter. Допустим производится копирование всей информации с диска D: на диск H:, причём таким образом, чтобы все данные, предварительно записанные на диск H: уничтожались. Решить эту задачу можно при помощи рекурсивного спуска по дереву каталогов, так как это описывается ниже.

<?php
  // Устанавливаем не ограниченное время выполнения скрипта
  @set_time_limit(0);
  //////////////////////////////////////////////////////////
  // Удаляем все файлы с диска H:
  //////////////////////////////////////////////////////////
  delTemporaryFiles("H:");
  function delTemporaryFiles($directory)
  {
    $dir opendir($directory);
    while(($file readdir($dir)))
    {
      // Если это файл - удаляем его
      if(is_file($directory."/".$file)) unlink($directory."/".$file);
      // Если это директория - осуществляем рекурсивный вызов
      if(is_dir($directory."/".$file) &&
              ($file != ".") &&
              ($file != ".."))
      {
        delTemporaryFiles($directory."/".$file);
        rmdir($directory."/".$file);
      }
    }
    closedir($dir);
  }
  //////////////////////////////////////////////////////////
  // Рекурсивная функция по копированию файлов
  //////////////////////////////////////////////////////////
  lowering("E:","H:");
  function lowering($dirname,$dirdestination)
  {
    // Открываем директорию
    $dir opendir($dirname);
    // В цикле выводим её содержимое
    while (($file readdir($dir)) !== false)
    {
      // Вырезаем диск
      $dir_name substr($dirname,3);
      // Если это файл копируем его
      if(is_file($dirname."/".$file))
      {
        copy($dirname."/".$file$dirdestination."/".$dir_name."/".$file);
      }
      // Если это директория - создаём её
      if(is_dir($dirname."/".$file) &&
         $file != "." &&
         $file != "..")
      {
        // Создаём директорию
        if(!mkdir($dirdestination."/".$dir_name."/".$file))
        {
          echo "Не возможно создать ".$dirdestination."/".$dir_name."/".$file."\n";
        }
        // Вызываем рекурсивно функцию lowering
        lowering("$dirname/$file",$dirdestination);
      }
    }
    // Закрываем директорию
    closedir($dir);
  }
?>

Можно, конечно запускать этот скрипт через локальный Apache, но боюсь, что вам это надоест через неделю - хорошо бы организовать что-то попроще. Для того чтобы в Windows скрипты воспринимались как исполняемые программы, необходимо привязать обработчик PHP к расширению *.php. Для этого выделите любой PHP-файл и в контекстном меню выберите пункт Свойства. После чего, нажмите кнопку Изменить. В открывшемся окне выберите кнопку Найти. В открывшемся диалоговом окне выберите файл C:\PHP\php.exe

В корневой директории PHP находится три исполняемых модуля: php.exe, php-cgi.exe и php-win.exe. php-cgi.exe предназначен для совместной работы с Web-сервером, именно он обрабатывает запросы к PHP-скриптам, если PHP установлен не модулем. php.exe предназначен для консольной обработки скриптов, при его запуске появляется чёрное окно консоли, в которую выводится весь внешний вывод скрипта. php-win.exe позволяет запускать PHP-скрипты без открытия окна консоли в качестве процесса со скрытым окном. Если вы не хотите, чтобы при запуске PHP-скриптов открывались окна, можно выбрать именно этот обработчик.

Теперь можно и иконку скрипта на рабочий стол вытащить - по крайней мере перед глазами будет. Однако лень человеческая не знает границ, иначе бы не появились компьютеры. Хорошо бы заставить это чудо инженерной мысли самостоятельно запускать процесс резеврного копирования. Обычно для этого применяют cron.

Классическую реализацию cron для Windows можно загрузить по адресу http://www.nncron.ru/download.shtml. На странице представлено две версии cron - nnCron, условно бесплатная программа с Windows-интерфейсом и nnCron LITE - бесплатная программа, с классическим интерфейсом через конфигурационный файл crontab. Рекомендуется использовать именно nnCron LITE, так как знание синтаксиса конфигурационного файла cron.tab позволит без труда работать с UNIX-версией cron на сервере хост-провайдера. На странице http://www.nncron.ru/download.shtml можно также обнаружить русскую документацию по синтаксису cron.tab и различные плагины к nnCron.

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

 
  Rambler's Top100 Яндекс.Метрика Яндекс цитирования