Мои мысли и проекты

Справка по программе Shasoft Synh

Навигация
Счетчики
Cпoнcоры

Справка по программе Shasoft Synh


Введение

Данная программа была создана для обновления сайта с локального жесткого диска на FTP хостинг-провайдера. Также она будет полезна для создания резервной копии ваших файлов на удаленном FTP-сервере.

Настройки

Для выполнения синхронизации необходимо указать:

  1. Указать исходную локальную папку
  2. Адрес FTP сервера
  3. Удаленную папку
  4. Логин и пароль для доступа к FTP

Дополнительно имеется возможность настроить маски для исключения файлов.

При установке галочки "История изменений" файлы на FTP сервере не будут удаляться, а будет создана папка по названию файла и в ней будут создаваться версии файлов с именами файлов дата/время. При указании архиватора указанные файлы будут упакованы для экономии места.

В папке scripts можно определить скрипт, функции в котором будут вызываться на определенном этапе синхронизации.

Демонстрационный пример scripts/demo.vbs
'-----------------------------------------------------------------------------
' Вызывается перед началом синхронизации
Function OnBefore(pcPath,ftpUrl,ftpPath)
        ' pcPath - исходная локальная папка
        ' ftpUrl - ссылка на FTP (с логином и паролем)
        ' ftpPath - папка на FTP сервере
        MsgBox("OnBefore: " & pcPath & "=>" & ftpUrl & ftpPath)
        ' Установить код возврата = ИСТИНА
        ' Если код возврата не будет ИСТИНА, то дальнейшая обработка прервется
        OnBefore = True
End Function
'-----------------------------------------------------------------------------
' Вызывается после окончания синхронизации
Function OnAfter(pcPath,ftpUrl,ftpPath)
        ' pcPath - исходная локальная папка
        ' ftpUrl - ссылка на FTP (с логином и паролем)
        ' ftpPath - папка на FTP сервере
        MsgBox("OnAfter: " & pcPath & "=>" & ftpUrl & ftpPath)
End Function
'-----------------------------------------------------------------------------
' Вызывается в случае ошибки: связь с FTP преравалась во время синхронизации
Function OnCancel(pcPath,ftpUrl,ftpPath)
        ' pcPath - исходная локальная папка
        ' ftpUrl - ссылка на FTP (с логином и паролем)
        ' ftpPath - папка на FTP сервере
        MsgBox("OnCancel: " & pcPath & "=>" & ftpUrl & ftpPath)
End Function
 

В скрипте можно использовать объект для работы по протоколу HTTP. В примере ниже перед тем как выполнять синхронизацию происходит запрос главной страницы поисковой сисстемы Yandex http://ya.ru. Синхронизация начинается только в случае, если указанная страница доступна.

Демонстрационный пример scripts/demoHttp.vbs
' Создать объект для работы с HTTP
Set oHTTP = CreateObject("Shasoft.HTTP")
'--------------------------------------
Function OnBefore(pcPath,ftpUrl,ftpPath)
        ' pcPath - исходная локальная папка
        ' ftpUrl - ссылка на FTP (с логином и паролем)
        ' ftpPath - папка на FTP сервере
        ' Сбросить настройки в стандартные
        oHTTP.Reset()
        ' Запросить страницу по HTTP
        If oHTTP.Request("http://ya.ru") then
                ' Проверить, что код ответа = 200
                If oHTTP.GetLastCode() = 200 then
                        ' Установить код возврата = ИСТИНА
                        OnBefore = True
                End If
        End If
        ' Установить код возврата = ЛОЖЬ
   OnBefore = False
End Function
 

Также в ваших скриптах вы можете использовать любые другие объекты ActiveX.

В программе имеется штатный ActiveX компонент для работы по протоколу FTP. Однако долгое время использования программы привели меня к мысли, что его наличие особо не требуется, поэтому описание его функций не и примеры работы пока отсутствуют. Возможно в дальнейшем я это исправлю.

Как это работает у меня

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

Перед обновлением я запускаю локалюную копию http-сервера. При синхронизации в функции обратного вызова OnBefore я вызываю скрипт на локальном http-сервере, который сохраняет структуру локальной БД в файл. После чего происходит синхронизация файлов на FTP. При этом файл со структурой БД также отправляется на удаленный FTP. После выполнения синхронизации я в функции OnAfter вызываю скрипт на сайте в Internet-е. Этот скрипт получает текущую структуру БД, сравнивает её со структурой локальной БД (которая была закачена на FTP сервер при синхронизации) и если имеютсся различия в структуре, то происходит модификация структуры на хостинге со структурой на локальной версии.

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