PHP 가 정시 임 무 를 수행 하 는 다섯 가지 방법 을 상세히 설명 합 니 다.
만약 굳이 PHP 가 정시 임 무 를 실현 하려 고 한다 면 다음 과 같은 몇 가지 해결 방안 이 있 을 수 있다.
1.간단 하고 직접적 으로 결 과 를 고려 하지 않 는 형
<?php
ignore_user_abort();// ,PHP .
set_time_limit(0);// set_time_limit(0)
ini_set('memory_limit','512M'); //
$interval=60*30;//
do{
//ToDo
sleep($interval);// 5
}
while(true);
단점:시작 하면 PHP 숙주 를 중지 하지 않 으 면 제어 할 수 없습니다.해커 가 아니라면 이런 방법 을 사용 하지 마 십시오.2.단순 제어 형
config.php
<?php
return 1;
?>
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 의return 0
를 바 꾸 어 정지 프로그램 을 실현 합 니 다.실행 가능 한 방법 은 config.php 파일 과 특정한 폼 의 상호작용 을 통 해 HTML 페이지 를 통 해 변 수 를 설정 하 는 것 입 니 다.단점:시스템 자원 을 차지 하고 장시간 운행 하면 예상 치 못 한 위험 이 있 을 수 있 습 니 다.예 를 들 어 메모리 관리 방면 의 문제.
3.단순 개량 형
<?php
$time=15;
$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
/*
function
*/
sleep($time);
file_get_contents($url);
?>
php 스 크 립 트 sleep 는 일정 시간 후에 자신 에 게 접근 하 는 방식 으로 계속 실 행 됩 니 다.마치 릴레이 경주 처럼...그러면 모든 PHP 스 크 립 트 의 실행 시간 이 그리 길지 않 을 것 입 니 다.time_out
의 제한 을 받 지 않 습 니 다.매번 순환 phop 파일 은 독립 적 으로 실행 되 기 때문에 이 방법 은
time_out
의 제한 을 피 할 수 있 습 니 다.그러나 프로 세 스 를 종료 할 수 있 도록 위 와 같이 제어 코드 를 추가 하 는 것 이 좋 습 니 다.cofig.phop.4.서버 정시 퀘 스 트
유 닉 스 플랫폼
유 닉 스 시스템 을 사용 하려 면 PHP 스 크 립 트 의 맨 앞 에 특수 한 코드 를 추가 하여 실행 할 수 있 도록 해 야 합 니 다.그러면 시스템 은 어떤 프로그램 으로 이 스 크 립 트 를 실행 해 야 하 는 지 알 수 있 습 니 다.유 닉 스 시스템 에 추 가 된 첫 번 째 줄 코드 는 이 스 크 립 트 가 Windows 에서 실행 되 는 데 영향 을 주지 않 기 때문에 이 방법 으로 크로스 플랫폼 스 크 립 트 프로그램 을 작성 할 수 있 습 니 다.
1.Crontab 에서 PHP 로 스 크 립 트 실행
Crontab 에서 일반적인 셸 스 크 립 트 를 호출 하 는 것 처럼(구체 적 인 Crontab 용법)PHP 프로그램 을 사용 하여 PHP 스 크 립 트 를 호출 합 니 다.매 시간 myscript.php 를 실행 하면 다음 과 같 습 니 다.
# crontab -e
00 * * * * /usr/local/bin/php /home/john/myscript.php
/usr/local/bin/php
PHP 프로그램의 경로 입 니 다.2、Crontab 에서 URL 로 스 크 립 트 실행
PHP 스 크 립 트 가 URL 을 통 해 실 행 될 수 있다 면 lynx 나 curl 또는 wget 을 사용 하여 Crontab 를 설정 할 수 있 습 니 다.
다음 예 는 PHP 스 크 립 트 를 실행 하기 위해 Lynx 텍스트 브 라 우 저 를 사용 하여 URL 에 접근 하 는 것 입 니 다.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.iniset 함수 용법 상세 설명PHP ini_set
phop.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:자동 으로 session 처 리 를 할 지 여부 입 니 다.1 로 설정 하면 프로그램 에서 session 을 사용 하지 않 습 니 다.start()로 session 을 수 동 으로 열 어도 session 을 사용 할 수 있 습 니 다.인자 가 0 이 고 세 션 을 수 동 으로 열지 않 으 면 오류 가 발생 합 니 다.
@ini_set('session.cache_expire', 180);
session.cache_expire:클 라 이언 트 cache 에 있 는 세 션 페이지 의 기한(분)이 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)를 명시 적 으로 표시 할 지 여부 입 니 다.기본적으로 금 지 됩 니 다.사용자 에 게 안전 위험 을 가 져 다 줄 수 있 기 때 문 입 니 다.
사용 자 는 유효한 sid 를 포함 하 는 URL 을 이메일/irc/QQ/MSN 등 경 로 를 통 해 다른 사람 에 게 알려 줄 수 있 습 니 다.
유효한 sid 를 포함 하 는 URL 은 공용 컴퓨터 에 저 장 될 수 있 습 니 다.
사용 자 는 폴 더 나 탐색 기록 에 고정된 SID URL 을 저장 할 수 있 습 니 다.URL 기반 세 션 관 리 는 항상 쿠키 기반 세 션 관리 보다 위험 하기 때문에 사용 하지 않 아야 합 니 다.
PHP 정시 임 무 는 매우 재 미 있 는 것 이다.이상 은 본 고가 제공 한 해결 방안 이다.너 도 본 고의 사고방식 을 통 해 자신의 해결 방안 을 개발 할 수 있다.필요 하신 분 들 께 도움 이 됐 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.