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 - 시간 초과(시간 초과)