0

У меня есть 2 веб-сайта (2 разных домена/сервера), и мне нужно передавать данные между ними. Исходный сервер будет иметь an Array/ Array Object. Затем его нужно доставить на другой сайт. Я не хочу, чтобы исходный массив был искажен.PHP Лучший способ передать большие массивы или объекты между разными сайтами/серверами?

Что я могу думать до сих пор, использовать cURL от Destination Server, а затем предоставить объект Array как echo json_encode($array) от Source Server.

Будет ли это работать, пожалуйста? На самом деле это скорее всего Web Service, но я просто не знаю, как подойти. Каково ваше лучшее предложение, пожалуйста?

Примечание: На самом деле у меня нет никаких ограничений на методы или направление. json_encode или cURL или что-то еще можно предложить, пока данные достигнут целевого сервера. Спасибо!

+0

Он будет работать. Но невозможно оценить текущее решение или предложить что-то «лучше», пока вы не предоставите нам некоторые критерии (очевидно, вы не можете сравнивать что-то, пока не знаете, как это сделать). – zerkms

ответ

1

http_build_queryCURL для отправки больших массивов.

Редактировать

Пример

$str = http_build_query($array); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_VERBOSE, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_URL, "my_url"); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $str); // $array is my above data 

Post multidimensional array using CURL and get the result on server

+0

Значит, вы имеете в виду, что все вышеперечисленные коды для «Source Server», которые имеют массив, пожалуйста? Как получить от «Destination Server» PLS? –

+1

@ 夏 期 劇場 Получите результат на сервере с помощью '$ _POST'. –

+0

Итак, вы имеете в виду, что метод/сценарий выше для сервера «источника данных», не так ли? Он будет «отправлять/нажимать» данные на сервер назначения/потребителя. Затем сервер назначения должен принимать данные с помощью '$ _POST []' это? –

1

Отправить запрос HTTP POST с помощью функций локон и добавить массив serialize() в теле запроса.

функция Serialize являются полезными Регулярно проверяйте here

+0

OP хотел использовать 'json_encode'. Любая причина использовать 'serialize' вместо? – zerkms

+0

HTTP POST через cURL (с сервера назначения) и сериализовать (с сервера хоста) вы имеете в виду, пожалуйста? –

+0

Да, это полезно проверить здесь http: // stackoverflow.com/questions/1306740/json-vs-serialized-array-in-database –

1

Имеет ли направление потока вопросов? Если нет, сделайте так, чтобы потребитель запрашивал данные, а не сервер, отправлял данные потребителю, таким образом, нет ограничений POST и т. Д. Кроме того, это может быть простой ответ json. Таким образом, потребитель запрашивает URL-адрес yourserver.com/data/customers.php Который тогда просто сделает json_encode ($ array);

EDIT, так что пример кода ясно Ниже конечная точка сторона вещей

endpoint.php
#big array 
$array = array('Apple','Banana'); 

header('Content-Type: application/json'); 
echo json_encode($array); 
exit; 

//EOF 

И потребительские

$json_obj = json_decode(file_get_contents('http://yourdomain.com/endpoint.php')); 
print_r($json_obj); 
+0

Да , без ограничений. В любом случае, пока мы можем передавать данные. Значит, вы хотите отправить обычный запрос POST от вытаскивания сервера? С cURL? –

+1

Не нужно быть POST, простой URL-адрес .. $ json_ob = json_decode (file_get_contents ('http://yourdomain.com/urltofile.php')); urltofile.php должен сбрасывать массив как объект json (т. е. json_encode ($ array);) В основном http://yourdomain.com/urltofile.php становится конечной точкой. – xelber

+0

wowwww @ _ @ да это работает очень хорошо !! –

 Смежные вопросы

  • Нет связанных вопросов^_^