2010-11-02 2 views
0

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

EDIT: По желанию, вот код:

$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; 

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

+0

Вы можете разместить свой код cURL? – KeatsKelleher

+0

Не могли бы вы отправить любой код, который вы пробовали? –

ответ

3

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

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

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

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

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

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