Я к Вам с вопросом!
Вот я работаю с внутренним корпоративным сайтом нашей компании, а у нас есть еще и внешний сайт, его поддерживают другие программисты(и кажется он написан не на php).
Вот они сейчас хотят разместить у себя на сайте информацию которая хранится в моей БД, причем хотят обновлять её каждый час(чтоб данные были актуальные).
Я предложила написать представление в БД и дать им к нему доступ, но начальник не хочет давать им доступ к нашей БД.
Как еще мы можем передать им инфу, научи меня пожалуйста?
Спустя 8 минут, 20 секунд (28.04.2011 - 07:35) inpost написал(а):
уже ответил, даже код показал
Спустя 1 час, 38 минут, 48 секунд (28.04.2011 - 09:14) zvezda_t написал(а):
inpost
спасибо
Объясните пожалуйста а как такой Вариант реализовать?
спасибо
Объясните пожалуйста а как такой Вариант реализовать?
Цитата |
Можно наоборот - пусть они пишут обработчик, а вы раз в час отправляйте на него актуальную инфу. Тем же курлом. В json или XML формате. Или вообще POST или GET, если её немного. Так работают агрегаторы или RSS каналы. |
Получается я должна обращаться к их скрипту? А если они не на php пишут, у меня получится?
Спустя 46 минут, 34 секунды (28.04.2011 - 10:00) Oyeme написал(а):
Xml самый нормальный вариант.
Гененируете Xml.
Они заходят на ваш линк с Xml ,парсят его и заносят в свою БД.Через каждый час заново всё происходит.
Ваша задача предоствать им данные в выбранном формате.
Гененируете Xml.
Они заходят на ваш линк с Xml ,парсят его и заносят в свою БД.Через каждый час заново всё происходит.
Ваша задача предоствать им данные в выбранном формате.
Спустя 19 минут, 50 секунд (28.04.2011 - 10:20) Snus написал(а):
Oyeme
Дело говоришь. Правильная организация предоставления информации.
zvezda_t
Делай как Oyeme предлагает. А в добавок к xml создавай еще один файл с любым расширением, например gen и суй туда дату обновления xml ( time() ), а они в свою очередь подключаются к вашему серваку, первым делом лезут парсером в этот файл - сверяется дата их последней обработки и твоя дата обновления (на случай если xml будет более 100Мб как у меня) если дата обновилась, то парсят xml. Вот и вся петрушка
Дело говоришь. Правильная организация предоставления информации.
zvezda_t
Делай как Oyeme предлагает. А в добавок к xml создавай еще один файл с любым расширением, например gen и суй туда дату обновления xml ( time() ), а они в свою очередь подключаются к вашему серваку, первым делом лезут парсером в этот файл - сверяется дата их последней обработки и твоя дата обновления (на случай если xml будет более 100Мб как у меня) если дата обновилась, то парсят xml. Вот и вся петрушка
Спустя 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 написал(а):
Спасибо, благодаря Вам, это мне понятно как делать
А если наоборот? Я им буду отправлять каждый час инфу?
Вот тут я не понимаю как работает. Объясните пожалуйста:
Как сформированную такую структуру курлом, методом POST передать на их приемник? чтоб они его потом парсили)
А если наоборот? Я им буду отправлять каждый час инфу?
Вот тут я не понимаю как работает. Объясните пожалуйста:
Как сформированную такую структуру курлом, методом POST передать на их приемник? чтоб они его потом парсили)
Спустя 40 минут, 17 секунд (28.04.2011 - 12:09) Invis1ble написал(а):
zvezda_t
наверно просто - строкой
наверно просто - строкой
Спустя 3 минуты, 23 секунды (28.04.2011 - 12:12) zvezda_t написал(а):
Invis1ble это понятно)
Не понимаю принцип передачи/приёма с помощью cURL.
Вот я отправила POST запрос, как тот скрипт узнает когда его ловить?
В любое время что-ли сможет мой запрос прочесть?
Не понимаю принцип передачи/приёма с помощью 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 с эстонского сервака и заливал ко мне базу. И так каждую ночь.
Вы будете делать имитацию поста. И соответственно их обработчик будет реагировать на Ваши действия. Но хочу сказать сразу - так не делают.
Xml - формат на то и придумали чтобы обмениваться данными.Между разными программами.Единый формат предоставления данных.
Скажу Вам на своём опыте.
Ваша задача предоставить данные. Из задача стянуть соответственно.
Я когда делал ТВ программу, с Эстонии генерировали Xml файлик раз в ночь.
Крон в 3 часа ночи просыпался и стягивал весь xml с эстонского сервака и заливал ко мне базу. И так каждую ночь.
Спустя 4 месяца, 15 дней, 18 часов, 51 минута, 22 секунды (14.09.2011 - 07:25) zvezda_t написал(а):
Цитата |
Они заходят на ваш линк с Xml ,парсят его и заносят в свою БД.Через каждый час заново всё происходит. |
Oyeme, пытаюсь сделать, как Вы научили.
Только мне передают xml, а я должна его периодически парсить.
Подскажите пожалуйста, а с помощью чего можно запрограммировать ежечасное обращение к файлу?
Цитата |
Крон в 3 часа ночи просыпался и стягивал весь xml |
а что такое Крон?
Спустя 11 минут, 4 секунды (14.09.2011 - 07:37) vital написал(а):
Цитата (zvezda_t @ 14.09.2011 - 04:25) | ||||
а что такое Крон? |
Кроном.
Это тулза, вызывается из командной строки.
википедия
Там все написано, и что это, и как настроить.
Ах, да. Это тулза - только на линуксе.
Спустя 48 секунд (14.09.2011 - 07:37) vital написал(а):
Цитата |
Только мне передают xml, а я должна его периодически парсить. |
так это вы им, или они вам данные дают..
Спустя 1 минута, 16 секунд (14.09.2011 - 07:39) zvezda_t написал(а):
Цитата |
Ах, да. Это тулза - только на линуксе. |
а у меня сервер на Windows
Цитата |
так это вы им, или они вам данные дают.. |
теперь : ОНИ -> МНЕ
Спустя 2 минуты, 45 секунд (14.09.2011 - 07:41) vital написал(а):
Цитата (zvezda_t @ 14.09.2011 - 04:39) |
а у меня сервер на Windows |
В винде тоже есть свой планировщик задач, это раз.
http://ru.wikipedia.org/wiki/NnCron - это два.
^чем-то из этого делаете php C:\MyScripts\MysqDataParser.php
Не забывая, что для будет использоваться пхп в режиме командной строки(CLI), для чего часто исп-ся другой php.ini файл.
Спустя 4 минуты, 18 секунд (14.09.2011 - 07:46) vital написал(а):
А и да. Пхп и винда. Винда и пхп.. ФУУУУ.
ПРостите, не удержался.
ПРостите, не удержался.
Спустя 2 минуты, 6 секунд (14.09.2011 - 07:48) zvezda_t написал(а):
vital большое спасибо
Я планировщиком задач еще не пользовалась, можно спросить?
Через планировщик можно запустить на выполнение скрипт php?
Я планировщиком задач еще не пользовалась, можно спросить?
Через планировщик можно запустить на выполнение скрипт php?
Цитата |
А и да. Пхп и винда. Винда и пхп.. ФУУУУ. |
я исправлюсь
Спустя 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
и посмотрите как это работает
Спустя 1 минута, 9 секунд (14.09.2011 - 07:53) zvezda_t написал(а):
vital, круто! Я поняла))) Большое спасибо, за такое подробное объяснение
Спустя 3 минуты, 6 секунд (14.09.2011 - 07:56) vital написал(а):
Цитата (zvezda_t @ 14.09.2011 - 04:53) |
vital, круто! Я поняла))) Большое спасибо, за такое подробное объяснение |
Да просто хочу добить до пол-тыщи постов.
Спустя 11 минут, 34 секунды (14.09.2011 - 08:08) zvezda_t написал(а):
vital, не получилось
В командной строке попробовала набрать
php C:\www\parser\DataParser.php
вышло:
В командной строке попробовала набрать
php C:\www\parser\DataParser.php
вышло:
Цитата |
"php" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. |
Спустя 3 минуты, 15 секунд (14.09.2011 - 08:11) vital написал(а):
Надо добавить путь к интерпретору PHP в переменную окружения PATH.
..или запускать находясь в папке, в которую установлен пхп. У вас ведь не денвер, правда?
т.е.
вы делаете в консоли
chdir /d путь/к/папке/где/лежит/php.exe
и потом выполняете
php путь/к/папке/где/лежит/скрипт.php
ОБъяснять про PATH не буду. Я вредина, а там много.
..или запускать находясь в папке, в которую установлен пхп. У вас ведь не денвер, правда?
т.е.
вы делаете в консоли
chdir /d путь/к/папке/где/лежит/php.exe
и потом выполняете
php путь/к/папке/где/лежит/скрипт.php
ОБъяснять про PATH не буду. Я вредина, а там много.
Спустя 2 минуты, 7 секунд (14.09.2011 - 08:13) vital написал(а):
Спустя 41 секунда (14.09.2011 - 08:14) zvezda_t написал(а):
Спасибо)))!!!
Цитата |
Надо добавить путь к интерпретору PHP в переменную окружения PATH. |
а я сейчас сама попробую) я знаю что такое переменная окружения
Спустя 2 дня, 4 часа, 12 минут, 53 секунды (16.09.2011 - 12:27) zvezda_t написал(а):
Через командную строку получилось выполнить скрипт.
Теперь пытаюсь использовать планировщик Windows:
Пуск/Панель управления/Назначенные задания/Добавить задания/Мастер планирования заданий
Нажимаю "Далее", появляется список :
Теперь пытаюсь использовать планировщик 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 все-таки лучше)
Винду я последний раз видел года 3 назад и слабо представляю как он выглядит, но думаю проблема именно в его настройках.
Кстати, nncron все-таки лучше)
Спустя 4 минуты, 31 секунда (16.09.2011 - 12:52) zvezda_t написал(а):
Извиняюсь, я попробовала еще раз запуститься через cmd, и после последних изменений там тоже не сработало.
ругается на функцию require_once(), её нельзя использовать что ли?
ругается на функцию require_once(), её нельзя использовать что ли?
Спустя 13 минут, 11 секунд (16.09.2011 - 13:05) vital написал(а):
Все можно. Только пути проверьте.
Спустя 12 минут, 27 секунд (16.09.2011 - 13:18) zvezda_t написал(а):
почему то путь:
ругается в cmd:
$_SERVER['DOCUMENT_ROOT'] - не распозналась что ли?
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 написал(а):
Запустить получилось
Но новые сюрпризы...
Записывает в БД - абракадабру(
Вместо "Бондарчук" - "+юэфрЁўєъ"
из xml получаю данные в utf-8, потом преобразую
$lastname=iconv('UTF-8', 'cp1251', trim($anketa->{'family-name'}));
Скрипт на сервере выполняется адекватно, а через планировщик Windows нет.
Но новые сюрпризы...
Записывает в БД - абракадабру(
Вместо "Бондарчук" - "+юэфрЁўєъ"
из xml получаю данные в utf-8, потом преобразую
$lastname=iconv('UTF-8', 'cp1251', trim($anketa->{'family-name'}));
Скрипт на сервере выполняется адекватно, а через планировщик Windows нет.
Спустя 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] Это где писать? Сейчас не могу. Но на будущее поняла, что так правильно. [/QUOTE] |
mysq_query('SET NAMES cp1251');
сразу после того, как соеденились с бд.
А бд можно сконвертировать парой команд. ALTER блаблабла. Как и текст в них.
Спустя 21 минута, 4 секунды (17.09.2011 - 21:36) zvezda_t написал(а):
А может, в чем то другом дело?
Спустя 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 написал(а):
ничего не помогает
Спустя 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 написал(а):
Получилось!!!! )))))
Только почему то ругается, что не определена кодировка, но работает.
результат :
PHP Warning: mb_convert_encoding(): Unable to detect character encoding
k=
А если пишу, без iconv, то не ругается, но кодировка не меняется.
результат :
k=UTF-8
Только почему то ругается, что не определена кодировка, но работает.
$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.
Теперь вопрос у меня появился? А как мне данные преобразовать?
Как так, почему я всегда в БД записывала данные в cp1251, а теперь работает и в cp866?
Если закоментировать строчки с преобразованием данных, то достаточно одного 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)