PHP Delphi CSS HTML JavaScript Perl API ASP MySQL XML С++ VBasic WEB разработка *NIX CouchDB Hack Python
Главная Статьи PHP Синхронизация веб-каталогов на PHP
Главная
 Главная  Контакты
 
Программинг
Статьи Книги ЧаВО
 
xBOOKi
Fresh Books Операционки Сети
 
Поиск
-------
 
Counters
Яндекс цитирования
Rambler's Top100
-------
 
CryptDisk.4h
Программа которая позволяет создать виртуальный шифрованный логический диск.

cryptdisk.4hack.com

-------
 
 

Синхронизация веб-каталогов на PHP

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

При наличии на вашем сайте PHP существует достаточно простое решение проблемы: на вашем сайте (не имеет значения на какой платформе он размещен) и на вашем "рабочем" (локальном) компьютере размещается скрипт, который дает возможность получить информацию о размещенных файлах и их размерах.

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

Итак, рассмотрим требования к программе, позволяющей делать подобную синхронизацию:

  • Программа должна давать однотипную информацию о размещенных файлах и каталогах на различных платформах. Как минимум, я рассматривал запуск скрипта сбора информации на FreeBSD и Windows.
  • В эталонном веб-каталоге программа должна давать статистику о несоответствии веб-каталогов и о типе несоответствия.
  • Результаты выполнения программы на удаленной машине должны быть доступны для получения в виде файла.

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

Рассмотрим часть программы (которая полностью доступна для скачивания в разделе "Загрузка/PHP" сайта "Программы для бизнеса"), которая ответственна за сбор информации о веб-каталоге.

Скрипт для сбора информации о веб-каталоге (sh.php):

Как видим, программа состоит из класса, реализующего нужную нам функциональность.

Функция класса function find($in_dir) реализует сбор информации о веб-каталоге и помещает ее в ассоциативные массивы. Ключом массива является путь к конкретному файлу; благодаря этому достигается одинаковое представление информации на различных платформах и отпадает необходимость в явной сортировке.

Функция класса function prnt() выводит собранную в массивах информацию в лог-файл $db_fname = "sync.zip";

Итак, для синхронизации удаленного веб-каталога с локальным необходимо в удаленном веб-каталоге поместить скрипт сбора информации в каталог удаленного веб-сайта и вызвать его через браузер. При запуске скрипта в окне браузера вы увидите ссылку на файл, который необходимо скачать в локальный веб-каталог и назвать sync_vov.zip.

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

Вот фрагмент программы, реализующей сравнение удаленного и локального лог-файлов:

Скрипт для анализа информации о веб-каталогах (analis.php):

Как видите, принцип работы анализатора логов состоит в заполнении двух ассоциативных массивов информацией из лог-файлов и их сравнении.

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

Ссылки по теме:

  1. Исходные тексты программы "Синхронизация веб-каталогов". Перейти >>>
  2. FAQ по PHP. Перейти >>>
  3. Статьи на сайте "Программы для бизнеса" Перейти>>>

 

Кириллов А.В., softm@ukr.net.



Свежее
Резервное копирование rsync-ом
DNS Amplification (DNS усиление)
Алгоритм Шинглов — поиск нечетких дубликатов текста
Metasploit Framework. Обзор
Использование CouchDB
-------



 
Copyright © 2003-2009   Frikazoid.
Rambler's Top100