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/ 그래서이 기능을 사용하면 훨씬 더 자신감을 가질 수 있습니다. 타이 – landed
- 1. 웹 API 호출의 응답을 무시하십시오.
- 2. Django : API 호출의 지역화
- 3. JavaScript 내에서 API 호출의 JSON 응답을 자동 완성하는 방법은 무엇입니까?
- 4. WSO2 ESB 4.9.0에서 비동기 API 호출의 응답을 삭제하는 방법
- 5. @ Transactional annotated 메소드는 Spring에서 성공적인 커밋을 기다리는가?
- 6. API 호출의 구두점 인코딩
- 7. PHP는 API
- 8. DIV에서 아약스 호출의 응답을 표시하는 방법은 무엇입니까?
- 9. 안드로이드가 나머지 웹 서비스 호출의 응답을 처리합니다.
- 10. ember.js-data에서 REST 호출의 응답을 처리하는 방법
- 11. REST API 호출의 XML 구조를 어떻게 문서화합니까?
- 12. 웹 API 호출의 응답 시간을 평등화/표준화하십시오.
- 13. API 호출의 SafeProcessHandle과 IntPtr의 차이점
- 14. api 호출의 일괄 처리를 절약해야합니까?
- 15. ebay API 호출의 siteid 변경
- 16. PHP는 XML 요청 및 응답을 보내고받습니다.
- 17. 어떻게 REST API XML 응답을 구조화
- 18. API 호출의 반환 값을 기존 데이터베이스에 저장
- 19. Javascript는 Websocket "보내기"명령을 기다리는가?
- 20. 미래를 방해하지만 어떻게 끝나기를 기다리는가?
- 21. yelp api 응답을
- 22. API 응답을 기다리는 RESTTemplate
- 23. PHP는 android에 null http 응답을 반환
- 24. API 호출의 매개 변수로 REST WebAPI 인터페이스
- 25. drive.files.list 호출의 Google 드라이브 API 주문
- 26. 폴더 항목 가져 오기 API 호출의 순서
- 27. cj.com API 호출의 내용 인코딩 오류
- 28. Facebook 토큰없이 그래프/그림 호출의 API 제한
- 29. 조언이 API 호출의 효율성과 캐시을 개선하기 위해
- 30. 이미지를 반환하는 API 호출의 Dredd 테스트/PNG
사실 비동기 요청을 만드는 몇 가지 해결 방법과 실험 라이브러리 [pthreads] (http://www.php.net/manual/en/book.pthreads.php)가 있습니다. – Leri
API가 응답하지 않으면이 문제가 발생합니다. 다른 대답을 지금 확인합니다. – landed