>  기사  >  백엔드 개발  >  PHP 예약 작업

PHP 예약 작업

巴扎黑
巴扎黑원래의
2016-11-23 11:23:411058검색

PHP는 약한 형식의 해석 언어입니다. 해당 구현에서는 Java 및 .Net과 같은 AppServer 개념이 없다고 판단합니다. PHP는 사용자에 의해서만 트리거되고 호출될 수 있습니다. 호출하면 자동으로 메모리가 종료됩니다. 상주 메모리가 없으면 프로세스 시간을 정확하게 측정할 수 없습니다.


특정 작업을 정기적으로 수행하기 위해 PHP를 사용해야 하는 경우 다음 방법을 사용할 수 있습니다.
1. Linux에서는 Crontab, Windows에서는 예약된 작업
2. set_time_limit(0) ;
Ignore_user_abort(true);
무한 루프

첫 번째 유형: crontab에 의해 정기적으로 실행되는 PHP 파일에는 일반적으로 각 작업의 이름과 작업을 기록하는 테이블이 필요합니다. 현재 프로세스 ID, 업데이트 시간, 프로세스 시작 ID 및 기타 정보. 일괄 처리 프로세스에는 실행 전 준비, 실행 및 실행 후 처리가 포함됩니다. 전체 처리 프로세스는 OO 아이디어를 사용하여 일괄 처리 기본 클래스를 캡슐화할 수 있습니다. 각 일괄 처리 작업은 이 기본 클래스를 상속하여 데이터 처리를 구현할 수 있습니다.

두 번째 방법: 이 파일에 접근하여 실행을 시작하면, 아파치 서버를 다시 시작하거나 머신을 다시 시작한 후(Windows 환경) 종료되는 문제가 있습니다. 예는 다음과 같습니다.

ignore_user_abort(true);  // 设置关闭浏览器后也可执行
set_time_limit(0);  // 设置相应时间无限制,原默认30s
function write_txt()
{
$filename = 'test.txt';
if (!file_exists($filename))
{
$fp = fopen($filename, 'w');
fclose($fp);
}
$fp = fopen($filename, 'r+');
$str = file_get_contents($filename);
$str .= date('Y-m-d H:i:s')."\r\n";
fwrite($fp, $str);
fclose($fp);
}
function do_cron()
{
write_txt();
sleep(30);
}
while (1)
{
do_cron();
}

Connection_aborted() — 클라이언트의 연결이 끊어졌는지 확인하고 1을 반환하고, 그렇지 않으면 0을 반환합니다.
Connection_status — 연결의 상태 비트를 반환합니다. 0 - NORMAL(정상) ); 1 - 중단됨(비정상 종료) 2 - 시간 초과(시간 초과)

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