Первая копия
This commit is contained in:
86
metadata/update/test.php
Normal file
86
metadata/update/test.php
Normal file
@ -0,0 +1,86 @@
|
||||
<?php
|
||||
//Для переодического запрашивания данных с другого сервера и обновления локальной базы
|
||||
//ini_set('max_execution_time',600);//устанавливаем время работы скрипта
|
||||
|
||||
require_once("../include/class_table.php");
|
||||
require_once("../../config.php");
|
||||
|
||||
try
|
||||
{ $db = new PDO($db_connstr, $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();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user