Синхронизация веб каталогов на PHP
При регулярном обновлении сайта нередко возникает ситуация , когда при обновлении связь обрывается и приходиться начинать сначала обновление. При обновлении же сайта состоящего из множества каталогов , вполне вероятно что некоторые файлы не будут обновлены или закачаны вообще.
При наличии на вашем сайте PHP существует достаточно простое решение проблеммы : на вашем сайте (не имеет значения на какой платформе он размещен) и на вашем «рабочем» (локальном) компьютере размещается скрипт, который дает возможность получить информацию о размещенных файлах и их размерах.
После получения информации от скриптов сбора информации на локальном месте также запускается анализа результатов выполнения «локального» и «удаленного» скриптов и появляется возможность точно синхронизировать веб-каталоги.
Итак рассмотрим требования к , программе, позволяющей делать подобную синхронизацию :
Эти минимальные требования , успешно выполняет программа , написанная на PHP. Благодаря наличию версий как для UNIX так и для Windows , достигается универсальность работы — и при этом потенциально исключается возможность возникновения ошибок , связанных с различной работой , собирающих информацию, программ на различных платформах.
Рассмотрим часть программы (которая полностью доступна для скачивания в разделе «
Как видим , программа состоит из класса , реализующего нужную нам функциональность.
Функция класса function find($in_dir) реализует сбор информации о веб каталоге и помещает ее в ассоциативные массивы. Ключом массива является путь в конкретному файлу , благодаря этому достигается одинаковое представление информации на различных платформах и отпадает необходимость в явной сортировке.
Функция класса function prnt() выводит, собранную в массивах информацию в лог-файл $db_fname = «sync.zip» ;
Итак для синхронизации удаленного веб-каталога с локальным — необходимо , в удаленном веб-каталоге поместить скрипт , сбора информации в каталог удаленного веб-сайта и вызвать его через браузер. При запуске скрипта в окне браузера вы увидите ссылку на файл который необходимо скачать в локальный веб-каталог и назвать sync_vov.zip .
После чего необходимо запустить локальный скрипт , только уже анализа информации,(из веб каталога в котором вы только что разместили лог-файл с удаленного сервера). Этот скрипт создаст локальный лог-файл sync.zip и сравнит его содержимое с содержимым лог файла с удаленного сервера. Результат сравнения будет выдан на экран в виде списка отсутствующих файлов (красным цветом) и списка файлов у которых отличаеться размер.
Вот фрагмент программы , реализующей сравнение удаленного и локального лог-файлов:
Как вы видите принцип работы анализатора логов состоит в заполнении двух ассоциативных массивов, информацией из лог файлов и их сравнении. Как дальнейшее развитие идеи синхронизации каталогов на PHP, видится использование подсчета контрольной суммы в каждом файле на удаленной и локальной машине. |
||||
Источник: woweb.ru |