>  기사  >  백엔드 개발  >  PHP에서 긴 연결 구현

PHP에서 긴 연결 구현

WBOY
WBOY원래의
2016-08-08 09:31:051184검색

최근 대용량 데이터를 실행할 때 타임아웃이 발생하는 PHP 프로그램이 있어서, set_time_limit() 함수를 사용하여 PHP 페이지의 최대 실행 시간을 설정했습니다.
스크립트 실행이 허용되는 시간(초)을 설정합니다. 이것이 기본값인 경우 스크립트는 치명적인 오류를 반환합니다. 기본 제한은 30초입니다. 또는 php.ini에서 max_execution_time을 정의하여 PHP 페이지의 최대 실행 시간을 설정할 수 있습니다.
호출되면 set_time_limit() 함수는 시간 초과 카운터를 0에서 다시 시작합니다. 즉, 타임아웃이 기본적으로 30초인 경우, 스크립트의 실행 매개변수나 set_time_limit에 25초가 걸리면, 타임아웃을 (20)으로 설정하면 스크립트가 45초 동안 실행된 후 타임아웃됩니다.
set_time_limit(900) 현재 php 스크립트의 최대 실행 시간을 지정하는 함수입니다. 설정 값은 900초이지만 실제 최대 실행 시간 = php.ini의 max_execution_time 값 - 현재 스크립트의 실행 시간 + 설정값.
php.ini에서 max_execution_time=30이고 현재 스크립트가 10초 동안 실행된 경우:
최대 실행 시간=30-10+900=920초.
이러한 수정 후 PHP 스크립트는 200,000개의 레코드를 성공적으로 업데이트했습니다.
PHP 스크립트에 액세스할 때마다 모든 PHP 스크립트가 실행된 후에만 반환 결과를 얻습니다. 지속적으로 실행하기 위해 스크립트가 필요한 경우 작업 목적을 달성하려면 PHP 긴 연결을 사용해야 합니다.

각 PHP 스크립트에는 실행 시간이 제한되어 있으므로 set_time_limit를 통해 스크립트의 실행 시간을 무제한으로 설정한 다음 플러시() 및 ob_flush()를 사용하여 서버 버퍼를 지우고 스크립트를 출력해야 합니다. 언제든지 반환 값.

<?php
header("Content-Type: text/plain");
set_time_limit(0);

$infoString = "Hello World" . "\n";
while( isset($infoString) )
{
echo $infoString;
flush();
ob_flush();
sleep(5);
}
?>

실행하면 5초마다 Hello World 줄이 표시됩니다. 중지 버튼을 누르지 않으면 브라우저는 한 줄씩 계속 로드됩니다.
이 방법을 통해 로봇 크롤러, 인스턴트 메시지 보드 및 기타 프로그램과 같은 많은 기능을 완성할 수 있습니다.

위 내용은 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.