【HTTP 액세스】
일반적으로 우리는 주로 컬, 소켓, file_get_contents() 및 기타 방법과 같은 다양한 방법으로 HTTP에 액세스합니다.
상대방 서버가 응답하지 않으면 비극에 빠지게 됩니다. 서버 전체를 죽이기 쉬우므로 http 접속 시 타임아웃 문제도 고려해야 합니다.
[CURL 액세스 HTTP]
CURL은 고성능 및 일부 동시성 지원 기능을 갖춘 HTTP 프로토콜 인터페이스에 액세스하기 위해 일반적으로 사용되며 신뢰할 수 있는 lib 라이브러리입니다.
CURL:
curl_setopt($ch, opt)는 주로 다음을 포함한 일부 시간 초과 설정을 설정할 수 있습니다.
CURLOPT_TIMEOUT은 cURL이 실행되도록 허용되는 최대 시간(초)을 설정합니다.
CURLOPT_TIMEOUT_MS는 cURL 실행이 허용되는 최대 밀리초 수를 설정합니다. (cURL 7.16.2에 추가됨. PHP 5.2.3부터 사용 가능)
CURLOPT_CONNECTTIMEOUT 연결을 시작하기 전 대기 시간을 0으로 설정하면 무한정 대기합니다.
CURLOPT_CONNECTTIMEOUT_MS 연결 시도를 기다리는 시간(밀리초)입니다. 0으로 설정하면 무한 대기합니다. cURL 7.16.2에 추가되었습니다. PHP 5.2.3부터 사용 가능합니다.
CURLOPT_DNS_CACHE_TIMEOUT은 DNS 정보를 메모리에 저장하는 시간을 설정하며 기본값은 120초입니다.
curl 일반 2단계 시간 초과:
$ch =curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ( $ ch , CURLOPT_TIMEOUT, 60); //초 수만 설정하세요
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_USERAGENT, $define_vars['HTTP_USER_AGENT']);
사용 컬 일반 두 번째 수준 시간 초과:
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl에 대한 밀리초 시간 초과가 필요한 경우 다음을 추가해야 합니다.
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);
또는 예:
curl_setopt ($ch, CURLOPT_NOSIGNAL, true); 밀리초 수준 시간 초과 설정을 지원할 수 있습니다.
curl에 대한 밀리초 수준 시간 초과의 예:
<?php if (!isset($_GET['foo'])) { // Client $ch = curl_init('http://example.com/'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_NOSIGNAL, 1); //注意,毫秒超时一定要设置这个 curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200); //超时毫秒,cURL 7.16.2中被加入。从PHP 5.2.3起可使用 $data = curl_exec($ch); $curl_errno = curl_errno($ch); $curl_error = curl_error($ch); curl_close($ch); if ($curl_errno > 0) { echo "cURL Error ($curl_errno): $curl_error\n"; } else { echo "Data received: $data\n"; } } else { // Server sleep(10); echo "Done."; } ?>
기타 팁:
1 경험에 따르면 요약은 다음과 같습니다. cURL 버전 >= libcurl/7.21.0 버전, 밀리초 시간 제한이 확실히 적용됩니다.
2.curl_multi의 밀리초 시간 초과에도 문제가 있습니다. . 단일 액세스는 ms 수준의 시간 제한을 지원하지만 여러 호출이 병렬로 이루어지면 cur_multi가 정확하지 않습니다
[스트림 처리를 통해 HTTP에 액세스]
curl 외에도 fsockopen 또는 파일 작업 기능을 사용하여 HTTP를 수행하는 경우가 많습니다. 따라서 이 부분에 대한 시간 초과 처리도 필요합니다.
추천 튜토리얼: PHP 비디오 튜토리얼
위 내용은 PHP 요청 인터페이스 시간 초과를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!