file_get_contents()에는 타임아웃 설정이 있습니까?
루프 내의 메서드를 사용하여 일련의 링크를 호출합니다.각 링크를 처리하는 데 15분 이상 걸릴 수 있습니다.이제 PHP가 PHP의file_get_contents()
타임아웃 기간이 있나요?
[네(Yes)]의 경우 콜과 함께 타임아웃이 되어 다음 링크로 넘어갑니다.앞의 링크가 종료되지 않는 한 다음 링크를 호출하고 싶지 않습니다.
그래서, 나에게 말해 주세요file_get_contents()
에는 타임아웃 기간이 있습니다.다음 파일이 포함되어 있는 파일file_get_contents()
0(표준)으로 설정되어 있습니다.
디폴트 타임아웃은 ini 설정(60초)으로 정의됩니다.즉석에서 변경할 수도 있습니다.
ini_set('default_socket_timeout', 900); // 900 Seconds = 15 Minutes
타임아웃을 설정하는 또 다른 방법은 사용 중인 HTTP 스트림래퍼의 HTTP 컨텍스트옵션으로서 타임아웃을 설정하는 것입니다.
$ctx = stream_context_create(array('http'=>
array(
'timeout' => 1200, //1200 Seconds is 20 Minutes
)
));
echo file_get_contents('http://example.com/', false, $ctx);
@diyism에서 설명한 바와 같이 "default_socket_timeout, stream_set_timeout 및 stream_context_create 타임아웃은 모두 모든 행의 읽기/쓰기 타임아웃입니다."그리고 @stewe의 상위 답변은 실패했습니다.
를 사용하는 대신file_get_contents
, 언제든지 사용할 수 있습니다.curl
타임아웃으로.
여기 링크 호출에 도움이 되는 작업 코드가 있습니다.
$url='http://example.com/';
$ch=curl_init();
$timeout=5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$result=curl_exec($ch);
curl_close($ch);
echo $result;
Yes! 세 번째 매개 변수에서 스트림 컨텍스트를 전달하면 다음과 같이 됩니다.
여기서 타임아웃은 1초입니다.
file_get_contents("https://abcedef.com", 0, stream_context_create(["http"=>["timeout"=>1]]));
https://www.php.net/manual/en/function.file-get-contents.php의 소스 인 코멘트 섹션
method
header
user_agent
content
request_fulluri
follow_location
max_redirects
protocol_version
timeout
Socket
FTP
SSL
CURL
Phar
Context (notifications callback)
Zip
default_socket_timeout을 즉시 변경할 경우 file_get_contents 호출 후 값을 복원하는 것이 유용할 수 있습니다.
$default_socket_timeout = ini_get('default_socket_timeout');
....
ini_set('default_socket_timeout', 10);
file_get_contents($url);
...
ini_set('default_socket_timeout', $default_socket_timeout);
호스트의 php.ini를 변경할 때 작업:
; Default timeout for socket based streams (seconds)
default_socket_timeout = 300
프로토타이핑의 경우, 쉘의 컬을 사용하여-m
파라미터는 밀리초 경과를 허용하며 연결이 시작되지 않았거나 오류 404, 500, 잘못된 URL 또는 전체 데이터가 허용된 시간 범위 내에 완전히 검색되지 않은 경우 두 경우 모두 작동합니다. 타임아웃은 항상 유효합니다.Php는 절대 어울리지 않을 거야.
단순히 셸 콜에서 비위생 사용자 데이터를 전달하지 마십시오.
system("curl -m 50 -X GET 'https://api.kraken.com/0/public/OHLC?pair=LTCUSDT&interval=60' -H 'accept: application/json' > data.json");
// This data had been refreshed in less than 50ms
var_dump(json_decode(file_get_contents("data.json"),true));
언급URL : https://stackoverflow.com/questions/10236166/does-file-get-contents-have-a-timeout-setting
'programing' 카테고리의 다른 글
python에서 두 datetime 객체의 시간 차이를 찾으려면 어떻게 해야 합니까? (0) | 2022.09.24 |
---|---|
MySQL(MariaDB) 루프 중 (0) | 2022.09.22 |
AES_Decrypt()가 늘 값을 반환합니다. (0) | 2022.09.22 |
MySQL에서 교차 (0) | 2022.09.22 |
선과 수평축 사이의 각도는 어떻게 계산하나요? (0) | 2022.09.22 |