PHP에서 시간 제한을 구현하는 방법: 1. "set_time_limit(0)"을 통해 프로그램을 제한 없이 실행합니다. 2. ini_set을 통해 메모리 제한을 설정합니다. 3. 30분마다 실행되도록 설정합니다.
이 기사의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터
PHP에서 시간 제한을 달성하는 방법은 무엇입니까?
PHP에서 예약된 작업을 구현하는 다섯 가지 방법
지난 며칠 동안 정기적으로 웹 페이지를 크롤링하는 서버 애플리케이션을 작성하기 위해 PHP를 사용해야 했습니다. 인터넷에서 해결책을 검색한 결과 몇 가지 해결책을 찾았는데, 그 내용을 요약하면 다음과 같습니다.
예약된 실행 작업은 정기적인 문서 게시, 정기적인 정크 정보 정리 등 웹 사이트에 상대적으로 중요한 작업입니다. 오늘날 대부분의 웹 사이트는 PHP 동적 언어를 사용하여 개발되며, PHP 구현을 위해 이를 결정합니다. Java 및 .Net과 같은 AppServer의 개념이 없으며 http 프로토콜은 상태 비저장 프로토콜입니다. PHP는 호출된 후 자동으로 메모리를 종료하고 상주 메모리가 없습니다. .
예약된 작업을 구현하기 위해 PHP를 사용해야 하는 경우 다음과 같은 해결 방법이 있습니다.
1. 단순하고 직접적이며 무모한 유형
로그인 후 복사
단점: 일단 시작하면 PHP 호스트를 종료하지 않으면 제어할 수 없습니다. 해커가 아니라면 이 방법을 사용하지 마세요.
2. 간단하고 제어 가능
config.php
cron.php
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去 $interval=60*30;// 每隔半小时运行 do{ $run = include 'config.php'; if(!$run) die('process abort'); //ToDo sleep($interval);// 等待5分钟 } while(true);
config의 반환 값을 변경하여 프로그램을 중지하세요. .php.One 실행 가능한 방법은 config.php 파일 및 특수 양식과 상호 작용하고 구성을 위해 HTML 페이지를 통해 일부 변수를 설정하는 것입니다
단점: 시스템 리소스를 점유하고 오랜 시간 동안 실행되며 예상치 못한 문제가 발생할 수 있습니다. 숨겨진 위험. 예를 들어, 메모리 관리 문제
3. 간단하게 개선된
php 스크립트는 일정 시간이 지나면 자체적으로 액세스하여 계속 실행됩니다. 이는 마치 릴레이 경주와 같습니다. PHP 스크립트는 너무 길지 않습니다.
php 파일의 각 주기가 독립적으로 실행되기 때문에 이 방법은 위와 같이 제어 코드를 추가하는 것이 가장 좋습니다.
IV.서버 예약 작업
Unix 플랫폼
Unix 시스템을 사용하는 경우 PHP 스크립트 앞에 특수 코드 줄을 추가해야 합니다. 시스템은 스크립트를 실행하는 데 사용할 프로그램을 알게 됩니다. Unix 시스템에 추가된 첫 번째 코드 줄은 Windows에서 스크립트 실행에 영향을 주지 않으므로 이 방법을 사용하여 크로스 플랫폼 스크립트를 작성할 수도 있습니다.
1. PHP를 사용하여 Crontab에서 스크립트 실행
Crontab에서 일반 쉘 스크립트를 호출하는 것처럼(특정 Crontab 사용법), PHP 프로그램을 사용하여 PHP 스크립트를 호출하고 다음과 같이 myscript.php를 매시간 실행합니다.
# crontab -e 00 * * * * /usr/local/bin/php /home/john/myscript.php
/usr/ local/bin/php는 PHP 프로그램의 경로입니다.
2. URL을 사용하여 Crontab에서 스크립트 실행
PHP 스크립트를 URL로 실행할 수 있는 경우 lynx, 컬 또는 wget을 사용하여 Crontab을 구성할 수 있습니다.
아래 예는 Lynx 텍스트 브라우저를 사용하여 URL에 액세스하여 매시간 PHP 스크립트를 실행하는 것입니다. Lynx 텍스트 브라우저는 기본적으로 대화 모드를 사용하여 URL을 엽니다. 그러나 아래와 같이 lynx 명령줄에서 -dump 옵션을 사용하여 URL 출력을 표준 출력으로 변환합니다.
00 * * * * lynx -dump http://www.sf.net/myscript.php
아래 예는 CURL을 사용하여 URL에 액세스하여 5분마다 PHP 스크립트를 실행하는 것입니다. Curl은 기본적으로 표준 출력에 출력을 표시합니다. "curl -o" 옵션을 사용하면 스크립트 출력을 임시 파일 temp.txt로 덤프할 수도 있습니다.
*/5 * * * * /usr/bin/curl -o temp.txt http://www.sf.net/myscript.php
아래 예는 WGET을 사용하여 URL에 액세스하여 10분마다 PHP 스크립트를 실행하는 것입니다. -q 옵션은 자동 모드를 나타냅니다. "-O temp.txt"는 출력이 임시 파일로 전송된다는 의미입니다.
*/10 * * * * /usr/bin/wget -q -O temp.txt http://www.sf.net/myscript.php
5. ini_set 함수 사용법에 대한 자세한 설명
PHP ini_set은 php.ini의 값을 설정하는 데 사용되며, 함수가 실행되면 설정이 무효화됩니다. php.ini 파일을 열지 않고도 구성을 수정할 수 있어 가상공간에서 매우 편리합니다.
기능 형식:
string ini_set(string $varname, string $newvalue)
모든 매개변수를 구성할 수 있는 것은 아니며 설명서에서 목록을 볼 수 있습니다.
공통 설정:
@ ini_set('memory_limit', '64M');
menory_limit: 스크립트가 적용할 수 있는 최대 메모리 바이트 수를 설정합니다. 이는 잘못 작성된 스크립트가 서버에서 사용 가능한 메모리를 소비하는 데 도움이 됩니다. @ 기호는 오류가 출력되지 않음을 의미합니다.
@ini_set('display_errors', 1);
display_errors: 오류 메시지 카테고리를 설정합니다.
@ini_set('session.auto_start', 0);
session.auto_start: 세션 처리를 자동으로 열지 여부입니다. 1로 설정하면 session_start() 대신 session을 사용하여 프로그램에서 세션을 수동으로 열 수 있습니다.
매개변수가 0이고 세션이 열리지 않는 경우. 수동으로 실행하면 오류가 보고됩니다.
@ini_set('session.cache_expire', 180);
session.cache_expire: 클라이언트 캐시에 지정된 세션 페이지의 만료 날짜(분)를 지정합니다. 기본값은 180분입니다. session.cache_limiter=nocache가 설정된 경우 여기의 설정은 유효하지 않습니다.
@ini_set('session.use_cookies', 1);
session.use_cookies: 클라이언트에 세션 ID를 저장하기 위해 쿠키를 사용할지 여부
@ini_set('session.use_trans_sid', 0);
session.use_trans_sid: URL에 SID(세션 ID)를 표시하기 위해 클리어 코드를 사용할지 여부,
기본값은 금지되어 있습니다. 사용자에게 안전상의 위험을 가져올 것입니다:
사용자는 이메일/irc/QQ/MSN 등을 통해 유효한 sid가 포함된 URL을 다른 사람에게 알릴 수 있습니다.
유효한 SID가 포함된 URL은 공용 컴퓨터에 저장될 수 있습니다.
사용자는 즐겨찾기 또는 검색 기록에 고정된 SID가 있는 URL을 저장할 수 있습니다. URL 기반 세션 관리는 항상 쿠키 기반 세션 관리보다 더 많은 위험을 수반하므로 비활성화해야 합니다.
PHP 예정된 작업은 매우 흥미로운 것입니다. 위 내용은 이 기사에서 제공하는 솔루션 중 일부입니다. 이 기사의 아이디어를 통해 자신만의 솔루션을 개발할 수도 있습니다. 도움이 필요한 모든 사람에게 도움이 되기를 바랍니다.
추천 학습: "PHP 비디오 튜토리얼"
위 내용은 PHP에서 시간 제한을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!