[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обмен данными между сайтами
zvezda_t
Всем привет!
Я к Вам с вопросом!
Вот я работаю с внутренним корпоративным сайтом нашей компании, а у нас есть еще и внешний сайт, его поддерживают другие программисты(и кажется он написан не на php).
Вот они сейчас хотят разместить у себя на сайте информацию которая хранится в моей БД, причем хотят обновлять её каждый час(чтоб данные были актуальные).
Я предложила написать представление в БД и дать им к нему доступ, но начальник не хочет давать им доступ к нашей БД.
Как еще мы можем передать им инфу, научи меня пожалуйста?



Спустя 8 минут, 20 секунд (28.04.2011 - 07:35) inpost написал(а):
уже ответил, даже код показал smile.gif

Спустя 1 час, 38 минут, 48 секунд (28.04.2011 - 09:14) zvezda_t написал(а):
inpost
спасибо smile.gif

Объясните пожалуйста а как такой Вариант реализовать?
Цитата

Можно наоборот - пусть они пишут обработчик, а вы раз в час отправляйте на него актуальную инфу. Тем же курлом. В json или XML формате. Или вообще POST или GET, если её немного.

Так работают агрегаторы или RSS каналы.


Получается я должна обращаться к их скрипту? А если они не на php пишут, у меня получится?

Спустя 46 минут, 34 секунды (28.04.2011 - 10:00) Oyeme написал(а):
Xml самый нормальный вариант.
Гененируете Xml.
Они заходят на ваш линк с Xml ,парсят его и заносят в свою БД.Через каждый час заново всё происходит.
Ваша задача предоствать им данные в выбранном формате.

Спустя 19 минут, 50 секунд (28.04.2011 - 10:20) Snus написал(а):
Oyeme
Дело говоришь. Правильная организация предоставления информации.
zvezda_t
Делай как Oyeme предлагает. А в добавок к xml создавай еще один файл с любым расширением, например gen и суй туда дату обновления xml ( time() ), а они в свою очередь подключаются к вашему серваку, первым делом лезут парсером в этот файл - сверяется дата их последней обработки и твоя дата обновления (на случай если xml будет более 100Мб как у меня) если дата обновилась, то парсят xml. Вот и вся петрушка smile.gif

Спустя 3 минуты, 47 секунд (28.04.2011 - 10:24) Nikitian написал(а):
Json имхо более подходит. xml избыточен.

Спустя 55 минут, 30 секунд (28.04.2011 - 11:19) zvezda_t написал(а):
Извините что сразу не понимаю...
Вопросы есть у меня)

Вот
Цитата
Гененируете Xml.

значит мне на своём сайте нужно периодически сохранять файлик с расширением .xml
и они по ссылке сразу его будут открывать например: http://mysait.ru/api/doc.xml
или же они заходят на страницу так: http://mysait.ru/api/api.php
где в файле api.php я пишу:
//вывод данных из бд
$result=mssql_query("SELECT name FROM dbo.View1 ");
list($name)=mssql_fetch_array($result);
//формирую xml
$Params= "'<Root>";
$Params .= "<Row>
<name"
.$name."</name>
</Row>"
;
$Params .="</Root>'";

//вывожу
echo $Params;



Спустя 2 минуты, 55 секунд (28.04.2011 - 11:22) Nikitian написал(а):
zvezda_t
Без разницы как. Первый вариант менее нагружает систему, второй более актуальные данные даёт. Что важнее - решать вам.

Спустя 6 минут, 28 секунд (28.04.2011 - 11:29) zvezda_t написал(а):
Спасибо, благодаря Вам, это мне понятно как делать smile.gif

А если наоборот? Я им буду отправлять каждый час инфу?
Вот тут я не понимаю как работает. Объясните пожалуйста:
Как сформированную такую структуру курлом, методом POST передать на их приемник? чтоб они его потом парсили)


Спустя 40 минут, 17 секунд (28.04.2011 - 12:09) Invis1ble написал(а):
zvezda_t
наверно просто - строкой unsure.gif

Спустя 3 минуты, 23 секунды (28.04.2011 - 12:12) zvezda_t написал(а):
Invis1ble это понятно)
Не понимаю принцип передачи/приёма с помощью cURL.
Вот я отправила POST запрос, как тот скрипт узнает когда его ловить?
В любое время что-ли сможет мой запрос прочесть?

Спустя 19 минут, 23 секунды (28.04.2011 - 12:32) waldicom написал(а):
Цитата (zvezda_t @ 28.04.2011 - 10:12)
Вот я отправила POST запрос, как тот скрипт узнает когда его ловить?

Если Вы в магазине даёте продавщице деньги, как она узнает, когда их брать?

Спустя 2 минуты, 29 секунд (28.04.2011 - 12:34) Oyeme написал(а):
Курлом это плохая идея.
Вы будете делать имитацию поста. И соответственно их обработчик будет реагировать на Ваши действия. Но хочу сказать сразу - так не делают.
Xml - формат на то и придумали чтобы обмениваться данными.Между разными программами.Единый формат предоставления данных.


Скажу Вам на своём опыте.
Ваша задача предоставить данные. Из задача стянуть соответственно.

Я когда делал ТВ программу, с Эстонии генерировали Xml файлик раз в ночь.
Крон в 3 часа ночи просыпался и стягивал весь xml с эстонского сервака и заливал ко мне базу. И так каждую ночь.

Спустя 4 месяца, 15 дней, 18 часов, 51 минута, 22 секунды (14.09.2011 - 07:25) zvezda_t написал(а):
Цитата
Они заходят на ваш линк с Xml ,парсят его и заносят в свою БД.Через каждый час заново всё происходит.

Oyeme, пытаюсь сделать, как Вы научили. rolleyes.gif
Только мне передают xml, а я должна его периодически парсить.
Подскажите пожалуйста, а с помощью чего можно запрограммировать ежечасное обращение к файлу? rolleyes.gif

Цитата
Крон в 3 часа ночи просыпался и стягивал весь xml

а что такое Крон? huh.gif

Спустя 11 минут, 4 секунды (14.09.2011 - 07:37) vital написал(а):
Цитата (zvezda_t @ 14.09.2011 - 04:25)
Цитата
Подскажите пожалуйста, а с помощью чего можно запрограммировать ежечасное обращение к файлу? rolleyes.gif


Цитата
Крон в 3 часа ночи просыпался и стягивал весь xml

а что такое Крон? huh.gif

Кроном.

Это тулза, вызывается из командной строки.
википедия
Там все написано, и что это, и как настроить.

Ах, да. Это тулза - только на линуксе.

Спустя 48 секунд (14.09.2011 - 07:37) vital написал(а):
Цитата
Только мне передают xml, а я должна его периодически парсить.

так это вы им, или они вам данные дают..

Спустя 1 минута, 16 секунд (14.09.2011 - 07:39) zvezda_t написал(а):
Цитата
Ах, да. Это тулза - только на линуксе.

а у меня сервер на Windows sad.gif


Цитата
так это вы им, или они вам данные дают..

теперь : ОНИ -> МНЕ smile.gif

Спустя 2 минуты, 45 секунд (14.09.2011 - 07:41) vital написал(а):
Цитата (zvezda_t @ 14.09.2011 - 04:39)
а у меня сервер на Windows sad.gif

В винде тоже есть свой планировщик задач, это раз.
http://ru.wikipedia.org/wiki/NnCron - это два.
^чем-то из этого делаете php C:\MyScripts\MysqDataParser.php

Не забывая, что для будет использоваться пхп в режиме командной строки(CLI), для чего часто исп-ся другой php.ini файл.

Спустя 4 минуты, 18 секунд (14.09.2011 - 07:46) vital написал(а):
А и да. Пхп и винда. Винда и пхп.. ФУУУУ.

ПРостите, не удержался. user posted image

Спустя 2 минуты, 6 секунд (14.09.2011 - 07:48) zvezda_t написал(а):
vital большое спасибо smile.gif

Я планировщиком задач еще не пользовалась, можно спросить?
Через планировщик можно запустить на выполнение скрипт php?

Цитата
А и да. Пхп и винда. Винда и пхп.. ФУУУУ.

я исправлюсь smile.gif

Спустя 4 минуты, 16 секунд (14.09.2011 - 07:52) vital написал(а):
Цитата (zvezda_t @ 14.09.2011 - 04:48)
Через планировщик можно запустить на выполнение скрипт php?

Цитата
^чем-то из этого делаете php C:\MyScripts\MysqDataParser.php

выделенное жирным - это команда которую надо указать для запуска. Она запустит на выполнение пхп скрипт в комадной строке.

Можете попробовать сами посмотреть как это;)
Win+R=>вводим CMD, enter->там вводим php путь/к/пхп/скрипту.php

и посмотрите как это работает wink.gif

Спустя 1 минута, 9 секунд (14.09.2011 - 07:53) zvezda_t написал(а):
vital, круто! Я поняла))) Большое спасибо, за такое подробное объяснение
user posted image

Спустя 3 минуты, 6 секунд (14.09.2011 - 07:56) vital написал(а):
Цитата (zvezda_t @ 14.09.2011 - 04:53)
vital, круто! Я поняла))) Большое спасибо, за такое подробное объяснение
user posted image

Да просто хочу добить до пол-тыщи постов.

Спустя 11 минут, 34 секунды (14.09.2011 - 08:08) zvezda_t написал(а):
vital, не получилось sad.gif

В командной строке попробовала набрать
php C:\www\parser\DataParser.php

вышло:
Цитата
"php" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.

Спустя 3 минуты, 15 секунд (14.09.2011 - 08:11) vital написал(а):
Надо добавить путь к интерпретору PHP в переменную окружения PATH.
..или запускать находясь в папке, в которую установлен пхп. У вас ведь не денвер, правда?

т.е.
вы делаете в консоли
chdir /d путь/к/папке/где/лежит/php.exe
и потом выполняете
php путь/к/папке/где/лежит/скрипт.php

ОБъяснять про PATH не буду. Я вредина, а там много. tongue.gif

Спустя 2 минуты, 7 секунд (14.09.2011 - 08:13) vital написал(а):
вот и вот
вам. И почему я гуглю вместо вас?)

Спустя 41 секунда (14.09.2011 - 08:14) zvezda_t написал(а):
Спасибо)))!!!

Цитата
Надо добавить путь к интерпретору PHP в переменную окружения PATH.

а я сейчас сама попробую) я знаю что такое переменная окружения user posted image

Спустя 2 дня, 4 часа, 12 минут, 53 секунды (16.09.2011 - 12:27) zvezda_t написал(а):
Через командную строку получилось выполнить скрипт. smile.gif

Теперь пытаюсь использовать планировщик Windows:

Пуск/Панель управления/Назначенные задания/Добавить задания/Мастер планирования заданий

Нажимаю "Далее", появляется список :
Цитата
Выделите программу, которую нужно запускать.


подскажите пожалуйста, что нужно выбрать?

Спустя 3 минуты, 58 секунд (16.09.2011 - 12:31) vital написал(а):
Ну там есть кнопка типа добавить?
Доавьте в список пхп, выберите его, укажите параметром файл для запуска.

Спустя 8 минут, 42 секунды (16.09.2011 - 12:39) zvezda_t написал(а):
выбрать php.exe?

В строке Выполнить я написала:
Цитата
C:\server\php\php5.3.0\php.exe "php C:\www\XmlParser\xml.php"

не работает(

Спустя 1 минута, 41 секунда (16.09.2011 - 12:41) vital написал(а):
Цитата
C:\server\php\php5.3.0\php.exe "C:\wamp\www\XmlParser\MiniAnkSite.php"

Спустя 41 секунда (16.09.2011 - 12:42) zvezda_t написал(а):
так тоже не работает

Спустя 5 минут, 47 секунд (16.09.2011 - 12:48) vital написал(а):
Ну если вы запустите из командной строки - то командна отработает=> проблема в виндовом планировщике.

Винду я последний раз видел года 3 назад и слабо представляю как он выглядит, но думаю проблема именно в его настройках.

Кстати, nncron все-таки лучше)

Спустя 4 минуты, 31 секунда (16.09.2011 - 12:52) zvezda_t написал(а):
Извиняюсь, я попробовала еще раз запуститься через cmd, и после последних изменений там тоже не сработало.

ругается на функцию require_once(), её нельзя использовать что ли?

Спустя 13 минут, 11 секунд (16.09.2011 - 13:05) vital написал(а):
Все можно. Только пути проверьте.

Спустя 12 минут, 27 секунд (16.09.2011 - 13:18) zvezda_t написал(а):
почему то путь:
require_once($_SERVER['DOCUMENT_ROOT']."/function/user_fns.php");


ругается в cmd:
require_once("/function/user_fns.php");


$_SERVER['DOCUMENT_ROOT'] - не распозналась что ли?

Спустя 1 час, 35 минут, 29 секунд (16.09.2011 - 14:53) zvezda_t написал(а):
Запустить получилось smile.gif
Но новые сюрпризы...

Записывает в БД - абракадабру(

Вместо "Бондарчук" - "+юэфрЁўєъ" mad.gif
из xml получаю данные в utf-8, потом преобразую
$lastname=iconv('UTF-8', 'cp1251', trim($anketa->{'family-name'}));

Скрипт на сервере выполняется адекватно, а через планировщик Windows нет. sad.gif

Спустя 17 минут, 6 секунд (16.09.2011 - 15:10) vital написал(а):
SET NAMES windows-1251 делали?
Это раз.
В какой кодировке бд и таблицы? это два.

БД не в юникоде - это фуууу. Лучше не иконверт юзайте, а бд переведитеа утф.

Спустя 1 день, 5 часов, 53 минуты, 51 секунда (17.09.2011 - 21:04) zvezda_t написал(а):
Цитата
SET NAMES windows-1251 делали?

Это где писать?

пробовала
$lastname=iconv('UTF-8', 'windows-1251', trim($anketa->{'family-name'}));
не помогло :(

Цитата
В какой кодировке бд и таблицы? это два.

БД в cp1251.

Цитата
БД не в юникоде - это фуууу. Лучше не иконверт юзайте, а бд переведитеа утф.

Сейчас не могу. Но на будущее поняла, что так правильно. :rolleyes:

Спустя 10 минут, 42 секунды (17.09.2011 - 21:15) vital написал(а):
Цитата (zvezda_t @ 17.09.2011 - 20:04)
[QUOTE]SET NAMES windows-1251 делали? [/QUOTE]
Это где писать?

Сейчас не могу. Но на будущее поняла, что так правильно. rolleyes.gif [/QUOTE]

mysq_query('SET NAMES cp1251');
сразу после того, как соеденились с бд.

А бд можно сконвертировать парой команд. ALTER блаблабла. Как и текст в них.

Спустя 21 минута, 4 секунды (17.09.2011 - 21:36) zvezda_t написал(а):
А может, в чем то другом дело? ph34r.gif

Спустя 5 минут, 11 секунд (17.09.2011 - 21:41) vital написал(а):
Цитата (zvezda_t @ 17.09.2011 - 20:36)
А может, в чем то другом дело? :ph34r:

Еще полезно перед выводом текста отсылать заголовок с кодиовкой
header('Content-Type: text/html; charset=windows-1251')

Спустя 1 день, 9 часов, 7 минут, 44 секунды (19.09.2011 - 06:49) zvezda_t написал(а):
ничего не помогает sad.gif

Спустя 34 минуты, 34 секунды (19.09.2011 - 07:23) zvezda_t написал(а):
Цитата (vital @ 18.09.2011 - 00:15)
mysq_query('SET NAMES cp1251');
сразу после того, как соеденились с бд.

ругается:

Цитата
mssql_query() [function.mssql-query]: message: 'NAMES' is not a recognized SET option.

Спустя 51 минута, 19 секунд (19.09.2011 - 08:15) zvezda_t написал(а):
Попробовала заменить кодировку на cp866

$lastname=iconv('UTF-8', 'cp866', trim($anketa->{'family-name'}));


Теперь пишет правильно через букву:

Минибаев => М¬н¬ва+в

Спустя 59 минут, 25 секунд (19.09.2011 - 09:14) zvezda_t написал(а):
Получилось!!!! )))))

Только почему то ругается, что не определена кодировка, но работает.

$lastname = iconv('UTF-8', 'cp866', trim($xml->{'family-name'}));
$lastname = mb_convert_encoding($lastname, 'windows-1251', 'auto');
echo "k=".mb_detect_encoding($lastname);

результат :
PHP Warning: mb_convert_encoding(): Unable to detect character encoding
k=



А если пишу, без iconv, то не ругается, но кодировка не меняется.

$lastname = mb_convert_encoding(trim($xml->{'family-name'}), 'windows-1251', 'auto'); 
echo "k=".mb_detect_encoding($lastname);

результат :
k=UTF-8

Спустя 2 минуты, 11 секунд (19.09.2011 - 09:16) Invis1ble написал(а):
Цитата
mb_detect_encoding

если не ошибаюсь, очень коряво работает

Спустя 16 минут, 32 секунды (19.09.2011 - 09:33) zvezda_t написал(а):
Оказывается дело не в том.
Если закоментировать строчки с преобразованием данных, то достаточно одного iconv.
Теперь вопрос у меня появился? А как мне данные преобразовать?

$lastname = iconv('UTF-8', 'cp866', trim($anketa->{'family-name'}));

//$lastname=substr($lastname,0,40);
//$lastname=ucfirst(strtolower(trim($lastname)));
//$lastname=str_replace(".","",$lastname);


Как так, почему я всегда в БД записывала данные в cp1251, а теперь работает и в cp866?


_____________

Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.