|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.12.2015, 22:44 | #1 |
Новичок
Джуниор
Регистрация: 08.12.2015
Сообщений: 11
|
Помогите с функцией
Добрый вечер. Подскажите, пожалуйста, как можно реорганизовать скрипт или есть возможность изъять данные. Суть такова, у меня есть парсер отделений одной из служб доставки. Есть API для того, чтобы можно было обратиться к нему с любого сайта. Когда я запускаю код на сервере, то всё отличненько парсится и добавляется в базу, если же посылать запрос с какого-то сайта на сервер, то с помощью file_get_contents он возвращает только строковый результат об успешном выполнение и добавляет данные не в базу сайта, а повторно перезаписывает на сервере. Происходит из-за того, что идёт выполнение функции append_department(принадлежит классу для вставки/изъятия и тд ). В общем, есть ли у кого-то идеи, как можно изъять грамотно данные и записать их в базу сайта? Огромнейшее спасибо.
Привожу код парсера и функции для взаимодействия с api PHP код:
PHP код:
|
09.12.2015, 08:21 | #2 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,177
|
ваще непонятно, особенно:
Код:
вот вы код привели - он работает у вас - так? хорошо объясните тогда что и где не работает в таком случае? |
09.12.2015, 18:04 | #3 |
Новичок
Джуниор
Регистрация: 08.12.2015
Сообщений: 11
|
Ну, допустим есть сервер 1,он парсит данные и записывает к себе в базу. Надо, чтобы при выполнении с другого сервера file_get_contents(ссылка на файл-парсер) производилась запись в базу и на нем. Может можно как-то получить спарсенные данные без помощи file_get_contents?потому что в данном случается она не эффективна?
|
09.12.2015, 18:22 | #4 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Организовать на сервере 1 нормальное API, чтоб можно было отдавать на другие сервера уже готовые (распарсенные) данные – по запросам, из БД на сервере 1.
Отдавать данные можно в формате JSON например – или хоть serialize-массивом, в крайнем случае. Или вообще – запускать такой же скрипт парсера на других серверах, и писать данные сразу в их БД. Что мешает так сделать? Последний раз редактировалось Andkorol; 09.12.2015 в 18:28. |
09.12.2015, 18:31 | #5 |
Новичок
Джуниор
Регистрация: 08.12.2015
Сообщений: 11
|
Фишка в том, чтобы парсер был на одном сервере, чтобы можно было удобно чинить в случае несправностей. Подскажите источники на толковое объяснение и похожую реализацию, с json приходилось мало сталкиваться
|
09.12.2015, 18:44 | #6 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
JSON – описание формата и примеры.
json_encode – кодирует данные в JSON-формат – используем на стороне API. json_decode – декодирует данные из JSON-формата обратно в исходное представление – используем на «принимающей» стороне. Примеров по ссылкам достаточно для понимания принципов использования и организации простенького API для передачи данных. |
09.12.2015, 23:55 | #7 |
Новичок
Джуниор
Регистрация: 08.12.2015
Сообщений: 11
|
Ага. понятно, спасибо.
Такой еще вопрос, я пытаюсь передать файлы с помощью cURL. В файле test.php все выполняется успешно. Но, кажется, файлы не доходят до test_new.php. test.php <?php $api_url = 'http://mysite.dev/test_new.php'; $json_data =json_encode($data); $curl = curl_init($api_url); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_POSTFIELDS, $json_data); curl_setopt($curl, CURLOPT_HTTPHEADER, 'Content-Type:application/json'); $json_response = curl_exec($curl); $curl_errorno = curl_errno($curl); $status = curl_getinfo($curl, CURLINFO_HTTP_CODE); echo $json_response; curl_close($curl); ?> test_new.php <?php $json = file_get_contents('php://input'); echo json; ?> 1) echo json_response - показывает данные, которые надо передать 2) echo json - возвращает пустой результат и более того print($GLOBALS) не содержит $HTTP_RAW_POST_DATA |
10.12.2015, 00:45 | #8 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Чё-то как-то навыворот у вас всё это реализовано...
Зачем через cURL пытаться куда-то насильно толкать данные? Почему сам скрипт test_new.php не может эти данные просто запросить с удаленного сервера – и получить их, по расписанию например, или по какому-то событию на сайте? |
10.12.2015, 01:43 | #9 |
Новичок
Джуниор
Регистрация: 08.12.2015
Сообщений: 11
|
Простите, не совсем понимаю...
Полагается, что test.php выполняется на удаленном сервере. И передает данные |
10.12.2015, 01:48 | #10 |
Новичок
Джуниор
Регистрация: 08.12.2015
Сообщений: 11
|
И что значит получить по расписанию?
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
помогите с функцией | Ximerka | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 09.04.2009 00:14 |
помогите с функцией | 1234 | Общие вопросы Delphi | 5 | 30.08.2008 10:55 |
Помогите с функцией | Родион | Общие вопросы Delphi | 3 | 08.05.2008 19:18 |