отправить XML на внешний сайт в фоновом режиме - PullRequest
1 голос
/ 11 ноября 2009

У меня есть форма, позволяющая пользователю подписаться на новостное письмо, которое отправляет обратно на страницу, на которой он находился, для проверки и добавляет содержимое в базу данных, однако мне также необходимо отправить файл xml в третью часть, используя Информация, собранная из формы, добавляется в список рассылки. Похоже, что данные, отправленные третьей стороне, должны быть отправлены методом post.

Как мне этого добиться?

Я попробовал AJAX, но через некоторое время понял, что AJAX не может отправлять информацию на внешние ссылки, поэтому отказался от этого.

По сути, сайту необходимо перезагрузить страницу, проверить отправленную на нее информацию, либо вернуть ошибки, либо добавить информацию в БД и запустить XML в фоновом режиме, поэтому отправка отдельной формы после перезагрузки также не идеальна. , Кроме того, сторонняя страница при отправке xml через основную форму загружает свою собственную страницу, которая далеко не хороша и уводит пользователя с нашего сайта, совсем не годится.

Ответы [ 3 ]

1 голос
/ 11 ноября 2009

Вам нужно будет подтвердить в PHP, а затем отправить XML с

<?php
   $hCurl = curl_init();
   curl_setopt($hCurl, CURLOPT_PUT,            true);
   curl_setopt($hCurl, CURLOPT_HEADER,         true);
   curl_setopt($hCurl, CURLOPT_RETURNTRANSFER, true);
   curl_setopt($hCurl, CURLOPT_CONNECTTIMEOUT, 60);
   curl_setopt($hCurl, CURLOPT_URL,            $URL_TO_UPLOAD);
   curl_setopt($hCurl, CURLOPT_HTTPHEADER,     $aCurlHeaders);
   // TODO it could be possible that fopen() would return an invalid handle or not work        altogether.  Should handle that
   $fp = fopen ($XML_FILE, "r");
   curl_setopt($hCurl, CURLOPT_INFILE,         $fp);
   curl_setopt($hCurl, CURLOPT_INFILESIZE,     $finfo['size']);
   $sResp = curl_exec($hCurl);
?>

Просто замените $ URL_TO_UPLOAD на ваш сервер, к которому вы хотите POST, и $ XML_FILE на файл, который вы хотите отправить, и все готово!

1 голос
/ 11 ноября 2009

Я бы порекомендовал вашему серверу отправлять данные третьему лицу, как только оно добавит информацию в базу данных. Он может даже поставить этот процесс в очередь и, если потребуется, справиться с ним позднее.

Существует множество способов сделать это в PHP, например Curl .

1 голос
/ 11 ноября 2009

Как насчет XML отправляется не браузером вашего пользователя, а генерируется и отправляется вашим сервером? Вы по-прежнему можете использовать AJAX, и у вас не будет головной боли, когда пользователи покидают ваш сайт.

Что-то вроде

Браузер -> Сервер

Сервер -> запись в собственную БД Сервер -> сгенерировать файл XML и отправить его на сторонний сервер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...