Как наилучший способ вызова внешнего домена из PHP-скрипта. Это завиток? И если это так, то php ожидает, что строка будет обработана, прежде чем двигаться дальше, чтобы мы могли быть уверены в возвращаемых данных.Поддерживает ли php ответ на вызов API?
ответ
Самый легкий способ получить ответ от внешнего URL-адреса - использовать file_get_contents(), но cURL определенно лучший способ, если вы хотите иметь больше опций или отправлять почтовые данные. Однако обе эти функции ждут ответа. PHP довольно прямолинейный.
Вы можете использовать Curl, file_get_contents (с соответствующими загруженными расширениями) или выполнить некоторую работу сокета.
class Tools
{
public static function post_request($url, $datos)
{
$resultado=null;
$datos=http_build_query($datos);
$url=parse_url($url);
// extract host and path:
$host=$url['host'];
$ruta=$url['path'];
$socket=fsockopen($host, 80, $errno, $errstr, 30);
if($socket)
{
// send the request headers:
fputs($socket, "POST $ruta HTTP/1.1\r\n");
fputs($socket, "Host: $host\r\n");
fputs($socket, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($socket, "Content-length: ". strlen($datos) ."\r\n");
fputs($socket, "Connection: close\r\n\r\n");
fputs($socket, $datos);
while(!feof($socket))
{
$resultado.= fgets($socket, 128);
}
}
else die('ERROR');
fclose($socket);
$resultado=explode("\r\n\r\n", $resultado, 2);
$header=isset($resultado[0]) ? $resultado[0] : '';
$contenido=isset($resultado[1]) ? $resultado[1] : '';
return array(
'status' => 'ok',
'header' => $header,
'content' => $contenido
);
}
};
Если я правильно помню, сценарий не будет продолжаться до тех пор, пока запрос не будет обработан.
Да - используйте cURL и да, он будет ждать ответа (или отказа).
Таким образом, он возвращает и позволяет сценарию продолжать останавливать сценарий подвески. Интересно, как много контроля над этим. Т.е. он возвращает отказ после ответа от сервера через 1 секунду, например. – landed
См. Опцию cURL CURLOPT_LOW_SPEED_TIME (http://www.php.net/manual/en/function.curl-setopt.php) –
Существует множество опций с завитом, и я также видел этот пример здесь, который использует завиток в клиентский php-скрипт http://net.tutsplus.com/tutorials/php/creating-an-api-centric-web-application/ Таким образом, это дает мне еще большую уверенность в его использовании. TY – landed
- 1. Поддерживает ли Alamofire ответ на передачу данных?
- 2. Поддерживает ли netpeertcpbinding запрос/ответ
- 3. Поддерживает ли Windows системный вызов?
- 4. Ответ на вызов ssl
- 5. PHP Soap вызов и ответ
- 6. преобразование mashape api ответ на строку php
- 7. Ответ json API на PHP-файл
- 8. Ответ на вызов ответа AJAX от php script в html
- 9. Поддерживает ли GWT php?
- 10. Поддерживает ли PHP регионы?
- 11. Поддерживает ли Omniture поддержку API?
- 12. Поддерживает ли API SOAP API CorrectAndResendEnvelope API REST?
- 13. Поддерживает ли Android API OpenYmsg?
- 14. Поддерживает ли API Gmail JWT?
- 15. Поддерживает ли Twilio API многопоточность?
- 16. Поддерживает ли Web API многопоточность?
- 17. Поддерживает ли связанный API API webhooks
- 18. Поддерживает ли интерфейс API API Aggregation
- 19. вызов/ответ между PHP и ASP.NET
- 20. Twitter Streaming API OAuth - Ответ на помехи
- 21. instagram api комментарий ответ php
- 22. PHP должен сжать мой ответ API
- 23. Ответ на входящий вызов с использованием диспетчера звездочек api
- 24. XML-ответ на экспресс-API
- 25. Поддерживает ли PHP асинхронные вызовы?
- 26. Поддерживает ли API-интерфейс PayPal Direct Payment API регулярные платежи?
- 27. Открой первый ответ API и создайте второй вызов API
- 28. Ответ на вызов featherjs не определен
- 29. Поддерживает ли PHP шаблонные классы?
- 30. Вызов API JSON через PHP
На самом деле, существует несколько обходных решений для создания асинхронных запросов, а также экспериментальной библиотеки [pthreads] (http://www.php.net/manual/en/book.pthreads.php). – Leri
Спасибо, что это будет зависать, если API не отвечает! Посмотрите другой ответ сейчас. – landed