Какой лучший способ отправить запрос POST из PHP? - PullRequest
0 голосов
/ 03 ноября 2010

Я пытался найти ответ на этот вопрос, и, похоже, не могу.Как лучше всего отправить простой запрос POST на другой сервер из PHP?cURL, кажется, работает мучительно медленно;Я получаю несколько секунд загрузки в ожидании cURL.Есть идеи?

РЕДАКТИРОВАТЬ: По запросу, вот код:

  $x = curl_init("http://www.server.com/API.php");
  curl_setopt($x, CURLOPT_POST, 1);
  curl_setopt($x, CURLOPT_POSTFIELDS, $inputdata);
  $data = curl_exec($x);
  curl_close($x);
  echo $data;

Это было, однако, в цикле.Я предполагаю, что простой контроль, вероятно, был источником моих проблем.

Ответы [ 3 ]

3 голосов
/ 03 ноября 2010

Розетки немного выровнены, но довольно быстрые.Вы также можете попробовать HttpRequest: http://php.net/manual/en/function.httprequest-send.php

Однако, на мой взгляд, я не думаю, что это столько же, сколько соединение с вашим сервером.Попробуйте установить это для регистрации и посмотреть, в чем проблема:

curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_VERBOSE, true); 

. Проверьте настройки DNS и сайта, к которому вы подключаетесь.Вы можете попробовать загрузить страницу вручную и посмотреть, как быстро вы это делаете на своем подключении и в браузере.Вы также можете попробовать получить последнюю версию cURL и любые другие библиотеки, которые вы используете с ним.Если вы делаете несколько запросов, используйте несколько дескрипторов cURL вместо нескольких отдельных дескрипторов.И если вам не нужен текст веб-страницы, и вы просто отправляете что-либо, попробуйте установить значение NO_BODY в значение true, что значительно сократит время загрузки.Наконец, попробуйте кешировать или многопоточность.

РЕДАКТИРОВАТЬ: А также старайтесь не устанавливать слишком много заголовков или файлов cookie, которые сильно замедляют вашу скорость.И если вы действительно хотите, чтобы мы работали над хорошим ответом, опубликуйте свой код, и я прокомментирую, где, как я вижу, могут быть сделаны улучшения.И, кстати, если вы включили ipv6 в вашей сборке cURL и не используете его, отключите его, я слышу о проблемах с лагом в ipv6.Другие специфические проблемы, которые я могу вспомнить, включают в себя отсутствие настройки обратного DNS на вашем сервере.

1 голос
/ 03 ноября 2010

Я обычно использую fopen () http wrapper, с stream_context_create () . См. этот комментарий для примера.

1 голос
/ 03 ноября 2010

Вы можете использовать сокеты:

http://www.jonasjohn.de/snippets/php/post-request.htm

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