Files
Metadata_PHP/metadata/update/test.php
2020-10-22 19:53:44 +06:00

87 lines
2.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
//Для переодического запрашивания данных с другого сервера и обновления локальной базы
//ini_set('max_execution_time',600);//устанавливаем время работы скрипта
require_once("../include/class_table.php");
require_once("../../config.php");
try
{ $db = new PDO($db_connection, $db_login, $db_password);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (Exception $e)
{ echo 'Ошибка соединения: ' . $e->getMessage();
Exit();
}
/*$res = $db->query('select * from _Users');
//Записываем id типов столбцов
for($i=0;$i<$res->columnCount();$i++)
{
$meta = $res->getColumnMeta($i);
print $meta['name'].'='.$meta['native_type'].' ';
}*/
$res0 = $db->query('select ss.id,ss.host from "_SynServices" ss where ss.del=false order by ss.host');
while ($row0 = $res0->fetch(PDO::FETCH_ASSOC))
{
//Так как время может быть различно получаем время с сервера с которого хотим обновится
$time = file_get_contents($row0['host'].'?fn=0');
$sql='select so.id,so.name,so.limit,coalesce(so."time",0) "time","getDate2000"() date2000 from "_SynObjects" so where so.del=false and so.synservice_id=\''.$row0['id'].'\' and '.$time.'-coalesce(so."time",0)>"interval" order by so.sort';
$res1 = $db->query($sql);
while ($row1 = $res1->fetch(PDO::FETCH_ASSOC))
{
$host=$row0['host'].'?fn=1&n='.$row1['name'].'&s='.$row1['time'].'&l='.$row1['limit'];
//Не знаю на сколько хорошо работает функция copy но пока ничего лучше ненашел
if(copy( $host, 'data.zip' ))
{
//Извлекаем данные из таблицы если запись существует то обновляем если нет то вставляем
$zip = new ZipArchive();
if ($zip->open('data.zip') !== true)
{ //fwrite(STDERR, "Error while openning archive file");
echo "ZIP error!";
exit(1);
}
//Перебираем файлы архива
for($i=0;$i<$zip->numFiles;$i++)
{
$time=0; //Запишется макс время пришедших данных (потому что данные приходят частями)
$name=$zip->getNameIndex($i);
//if($name!='2_GoodsImages.tbl') break;
echo '<br>'.$name.'<br>';
$fp = $zip->getStream($name);
/*$fpr = $zip->getStream($name);
$fpw = fopen($name, 'w');
fwrite($fpw, stream_get_contents($fpr));
fclose($fpr);
fclose($fpw);*/
$tbl= new TCTable('',0);
//$tbl->OpenTableF($name);
$tbl->OpenTableH($fp);
while($tbl->ReadNextRecord())
{
for($j=0;$j<count($tbl->fields);$j++)
{
print $tbl->fields[$j]->name.'='.$tbl->fields[$j]->getValue().'<br>';
}
}
//fclose($fp);
}
$zip->close();
}
}
}
?>