2017-03-28 3 views
0

나는 웹 사이트에 HTTP 요청을 보내고 연결을 30 초 동안 유지 한 다음 죽일 수 있는지 궁금합니다. PHP 또는 자바 스크립트로 가능합니까? 예를 들어HTTP 요청 보내기 및 30 초 대기

: 1. 스크립트 요청 폐쇄 될 연결 만료 후 30 초 연결 3. 살아 유지한다 2. 유래하는 보낸다.

미리 감사드립니다.

+0

왜이 작업을 수행해야합니까? – Barmar

+0

잘 모르겠습니다. 제 친구가 저에게 물었습니다. 어떻게 할 수 있는지 궁금합니다. – Iskren

+0

'fsockopen()'을 사용하여 연결을 열고,'fputs() '로 HTTP 요청을 보낸 다음 30 초 동안 기다렸다가 연결을 닫습니다. – Barmar

답변

1

fsockopen()을 사용하여 수동으로 연결을 열어 요청을 보내고 연결을 닫을 타이밍을 제어 할 수 있습니다.

$conn = fsockopen("stackoverflow.com", 80); 
$request = "GET/HTTP/1.1\r\n" + 
    "Host: stackoverflow.com\r\n" + 
    "Connection: keep-alive\r\n\r\n"; 
fputs($conn, $request); 
$response = fgets($conn); 
sleep(30); 
close($conn); 

Connection: keep-alive

(이 실제로 HTTP/1.1의 기본,하지만 명시 적으로 보내는 무해하다) 클라이언트가 닫을 때까지 열린 연결을 유지하기 위해 서버를 알려줍니다.

그러나 대부분의 웹 서버에는 유휴 상태 인 연결을 종료하는 비활성 시간 제한이 있습니다. Wikipedia에 따르면이 기본값은 Apache httpd 1.3 및 2.0에서는 15 초, httpd 2.2에서는 5 초로 기본 설정됩니다. 따라서 위 코드가 효과적이지 않을 수 있습니다. 서버가 연결을 끊지 않게하려면 몇 초마다 새로운 요청을 보내야합니다.