Синхронизация:Настройка PHP-скриптов — различия между версиями
Материал из wiki.standart-n.ru
Vlasova (обсуждение | вклад) (Новая страница: «==Используемые сокращения== ГБ - Глобальная база КБ - Клиентская база В скриптах настраи…») |
Vlasova (обсуждение | вклад) |
||
Строка 6: | Строка 6: | ||
'''ВНИМАНИЕ!!!!'' Перед исправлением любого из скрипта, необходимо сделать резервную копию. | '''ВНИМАНИЕ!!!!'' Перед исправлением любого из скрипта, необходимо сделать резервную копию. | ||
− | ==DECLARE.PHP ( | + | ==DECLARE.PHP (настройка параметров синхронизации)== |
''$GLOBALS["DB_USER"]="LOGIN"; | ''$GLOBALS["DB_USER"]="LOGIN"; | ||
$GLOBALS["DB_PASSWD"]="PASSOWRD"; | $GLOBALS["DB_PASSWD"]="PASSOWRD"; | ||
Строка 42: | Строка 42: | ||
NODELETE – Запрет удаления данных при синхронизации. На данный момент параметр не работает. | NODELETE – Запрет удаления данных при синхронизации. На данный момент параметр не работает. | ||
− | ==CHECKUPD.PHP ( | + | ==CHECKUPD.PHP (форсированное обновление)== |
''<?php | ''<?php | ||
//<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> | //<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> | ||
Строка 91: | Строка 91: | ||
Новый Distributeclient.exe архивируем в корневой каталог синхронизации (смотри declare.php) папка shellupd и называем файл data.zip. Версию нового обновления указываем в папке shellupd в файле exe.ver. | Новый Distributeclient.exe архивируем в корневой каталог синхронизации (смотри declare.php) папка shellupd и называем файл data.zip. Версию нового обновления указываем в папке shellupd в файле exe.ver. | ||
− | ==GETRELATIONTYPE.PHP ( | + | ==GETRELATIONTYPE.PHP (настройка частичной синхронизации)== |
''<?php | ''<?php | ||
function getrelationtype($tablename, $uuid, $profile_id, $fieldvals) | function getrelationtype($tablename, $uuid, $profile_id, $fieldvals) |
Версия 11:33, 6 апреля 2015
Содержание
Используемые сокращения
ГБ - Глобальная база КБ - Клиентская база
В скриптах настраиваются только файлы: declare.php, checkupd.php, getrelationtype.php. 'ВНИМАНИЕ!!!! Перед исправлением любого из скрипта, необходимо сделать резервную копию.
DECLARE.PHP (настройка параметров синхронизации)
$GLOBALS["DB_USER"]="LOGIN"; $GLOBALS["DB_PASSWD"]="PASSOWRD"; $GLOBALS["CODEKEY"]="njHtdlf146s8mkGFrejhsw875HJgf~sfkksheu69js"; $GLOBALS["PATH_ROOT"]="C:\\wamp\\www\\sinhro\\engine\\"; $GLOBALS["PATH_USERS"]="C:\\wamp\\www\\sinhro\\engine\\users\\"; $GLOBALS["PACKETSIZELIMIT"]=10000000; $GLOBALS["CLEARDIR"]=true; $GLOBALS["XFIELDS0"]=" AGENTS.GLOBAL_AGENT_ID "; $GLOBALS["XFIELDS1"]=" WARES.SNAME CASH_DOCS.GLOBAL_ID CASH_DOC_TYPES.GLOBAL_ID DEPS.GLOBAL_ID "; $GLOBALS["USEQUEUE"]=true; $GLOBALS["QUEUEDIR"]="C:\\wamp\\www\\sinhro\\engine\\queue\\"; $GLOBALS["QUEUELIMIT"]=100; $GLOBALS["NODELETE"]=false; ?> Скрипт установки параметров синхронизации. Описание параметров. DB_USER – Логин для подключения к ГБ DB_PASSWD – Пароль для подключения к ГБ PATH_ROOT – Корневой каталог синхронизации PATH_USERS – Каталог для сохранения пакетов с клиентов PACKETSIZELIMIT – Ограничение размера пакета в байтах CLEARDIR – Признак удаления пакета после успешной загрузки XFIELDS0 – Список полей таблиц для исключения из синхронизации для профилей с relationtype=0 (Частичная синхронизация). (Как правило, при двухсторонней синхронизации структура таблиц должна быть идентична, но при необходимости мы можем добавлять необходимые колонки к таблицам, которые не будут участвовать в синхронизации. Как правило. Это специфические поля ГБ, но могут быть и в КБ) (Для удобства просмотра списка полей в скрипте, можно сделать перенос строки следующим образом $GLOBALS["XFIELDS0"]=" AGENTS.GLOBAL_AGENT_ ID "; $GLOBALS["XFIELDS0"].=" AGENTS.GLOBAL_ ID "; В таком случае в параметр XFIELDS0 будет содержать значение «AGENTS.GLOBAL_AGENT_ ID AGENTS.GLOBAL_ ID») XFIELDS1 – Список полей таблиц для исключения из синхронизации для профилей с relationtype=1 (Полная синхронизация). USEQUEUE – Признак наличия очереди загрузки в схеме синхронизации QUEUEDIR – Каталог для хранения пакетов, обрабатываемых очередью загрузки QUEUELIMIT – Максимальное количество незагруженных пакетов состоящих в очереди к загрузке Если данный размер превышен, то очередной пакет синхронизации уже не будет поставлен в очередь. NODELETE – Запрет удаления данных при синхронизации. На данный момент параметр не работает.
CHECKUPD.PHP (форсированное обновление)
<?php //<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> function checkupd(&$params, &$zipfilename, $userfolder, $it) { $reltype=0; $profile_id=getprofile_id($it,$params["profile_id"],$reltype); if (!$profile_id){die(" error : профиль клиента не найден");} if ($profile_id==0){die(" error : профиль клиента равен нулю");} $fn=$GLOBALS["PATH_ROOT"]."shellupd/exe.ver"; $f=fopen($fn,"r"); $s_ver=fread($f,filesize($fn)); fclose($f); $c_ver=$params["exever"]; if (!is_num($s_ver,false)){die("error Ошибка в определении версии обновления (server)");} if (!is_num($c_ver,false)){die("error Ошибка в определении версии обновления (client)");} if ($c_ver>=$s_ver) {die("infoВерсия клиента актуальна! (".$s_ver.")");} $fn=$GLOBALS["PATH_ROOT"]."shellupd/data.zip"; if (!file_exists($fn)) {die("error Не найдено обновление!");} readfile($fn); } function CheckForceUpd(&$params, &$zipfilename, $userfolder, $it) { // return false; $reltype=0; $profile_id=getprofile_id($it,$params["profile_id"],$reltype); if (!$profile_id){die(" error : профиль клиента не найден");} if ($profile_id==0){die(" error : профиль клиента равен нулю");} $fn=$GLOBALS["PATH_ROOT"]."shellupd/exe.ver"; $f=fopen($fn,"r"); $s_ver=fread($f,filesize($fn)); fclose($f); $c_ver=$params["exever"]; if (!is_num($s_ver,false)){return false;}//{die("error Ошибка в определении версии обновления (server)");} if (!is_num($c_ver,false)){return false;}//{die("error Ошибка в определении версии обновления (client)");} if ($c_ver>=$s_ver) {return false;}//{die("infoВерсия клиента актуальна! (".$s_ver.")");} $fn=$GLOBALS["PATH_ROOT"]."shellupd/data.zip"; if (!file_exists($fn)) {die("error Не найдено обновление!");} readfile($fn); $GLOBALS["echo"].="1DF57BEEBA2C163BC206E002D74E1B5B"; $params["cmd"]="forceupd"; } ?> В данном скрипте исправляем только одну выделенную строку. Если эта строка закомментирована, то обновление DtClient будет по требованию пользователя. Правой кнопкой мыши по значку с DtClient в области уведомлений – «проверить обновления», в случае расхождения версий, DtClient загрузит свежую версию, обновится и перезапустится. Если строка раскомментирована, то автоматического обновления не будет, и не важно что будет указано после return.
Новый Distributeclient.exe архивируем в корневой каталог синхронизации (смотри declare.php) папка shellupd и называем файл data.zip. Версию нового обновления указываем в папке shellupd в файле exe.ver.
GETRELATIONTYPE.PHP (настройка частичной синхронизации)
<?php function getrelationtype($tablename, $uuid, $profile_id, $fieldvals) { if (strpos(" WAREBASE_D SP\$ANALITICS SP\$WDICTS SP\$GROUPS SP\$FRREPORTS G\$PROFILES RECEPTS RECEPT_CLIENTS RECEPT_DOCTORS_FIO RECEPT_LPU RECEPT_MO RECEPT_SICK RECEPT_VIDUD "," ".$tablename." ")>0) { /*die("error dbg0");*/ return 1;}
if (!isset($fieldvals["ID"])){return 0;} $id=$fieldvals["ID"]; switch ($tablename) { case "AGENTS": return 1; break; case "ADDRS":; case "REPORTS":if (($id>9999) && ($id<1000000000)){return 1;} else {return 0;} break; default: return 0; } } ?> В выделенном блоке описывается распределение таблицы для частичной синхронизации. Для каждой таблицы определяются условия, когда можно отправлять данные с ГБ в ГБ (return 0), а когда нельзя (return 1). В приведенном примере таблица AGENTS для профилей с relationtype=1 будет синхронизироваться только в одну сторону КБ –> ГБ. В обратную сторону не будет, т.к. данный скрипт будет блокировать отправку для всех записей таблицы. Таблицы ADDRS, напротив, отправляется в КБ безусловно. Таблица REPORTS отправляется с ГБ в КБ только для строк, где 10000<=id<=1000000000. Для описания условий доступны любые поля таблицы.