> 백엔드 개발 > PHP 튜토리얼 > PHP에서 예약된 작업을 구현하는 방법은 무엇입니까?

PHP에서 예약된 작업을 구현하는 방법은 무엇입니까?

黄舟
풀어 주다: 2023-03-17 12:44:01
원래의
24991명이 탐색했습니다.

이전 기사에서 PHP 예약 작업의 구현 원리를 소개했습니다. 모두가 PHP 예약 작업의 원리를 이해하고 있다고 믿습니다. 그래서 오늘은 PHP가 예약 작업의 예약 실행을 구현하는 방법을 계속해서 소개하겠습니다.

강좌 추천: "PHP 온라인 교육 과정"

1. Windows 예약 작업

1. test.php라는 PHP 프로그램을 작성합니다. 다음과 같습니다

test.php,内容如下所示


<?   
    $fp = fopen("test.txt", "a+");   
    fwrite($fp, date("Y-m-d H:i:s") . " 成功成功了!\n");   
    fclose($fp);   
?>
로그인 후 복사

程序大胆地写,什么includerequire尽管用,都没问题

2、新建Bat文件,命名为test.bat,内容如下所示:


D:\php\php.exe -q D:\website\test.php
로그인 후 복사

3、建立WINDOWS计划任务:

开始–>控制面板–>任务计划–>添加任务计划

浏览文件夹选择上面的bat文件

设置时间和密码(登陆WINDOWS的)

保存即可了。

4、over! 可以右键计划任务点“运行”试试

二、linux 的脚本实现

一、在Crontab中使用PHP执行脚本

就像在Crontab中调用普通的shell脚本一样(具体Crontab用法),使用PHP程序来调用PHP脚本。

每一小时执行myscript.php如下:


# crontab -e  
00 * * * * /usr/local/bin/php /home/john/myscript.php
로그인 후 복사

/usr/local/bin/php为PHP程序的路径。

二、在Crontab中使用URL执行脚本

如果你的PHP脚本可以通过URL触发,你可以使用lynx或curl或wget来配置你的Crontab。

下面的例子是使用Lynx文本浏览器访问URL来每小时执行PHP脚本。Lynx文本浏览器默认使用对话方式打开URL。但是,像下面的,我在lynx命令行中使用-dump选项来把URL的输出转换来标准输出。


00 * * * * lynx -dump http:
//www.centos.bz/myscript.php
로그인 후 복사

下面的例子是使用CURL访问URL来每5分执行PHP脚本。Curl默认在标准输出显示输出。使用”curl -o”选项,你也可以把脚本的输出转储到临时文件。


*/5 * * * * /usr/bin/curl -o temp.txt http:
//www.centos.bz/myscript.php
로그인 후 복사

下面的例子是使用WGET访问URL来每10分执行PHP脚本。-q选项表示安静模式。”-O temp.txt”表示输出会发送到临时文件


*/10 * * * * /usr/bin/wget -q -O temp.txt http:
//www.centos.bz/myscript.php
로그인 후 복사

三、PHP实现定时执行计划任务

使用php让浏览器刷新需要解决几个问题

1、PHP脚本执行时间限制,默认的是30m 解决办法:set_time_limit();或者修改PHP.ini 设置max_execution_time时间(不推荐)

2、如果客户端浏览器关闭,程序可能就被迫终止,解决办法:ignore_user_abort即使关闭页面依然正常执行

3、如果程序一直执行很有可能会消耗大量的资源,解决办法使用sleep

<?php   
    ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.   
    set_time_limit(3000);// 通过set_time_limit(0)可以让程序无限制的执行下去   
     $interval=5;// 每隔5s运行   
    
     //方法1--死循环   
     do{   
        echo &#39;测试&#39;.time().&#39;<br/>&#39;;    
        sleep($interval);// 等待5s       
    }while(true);   
    
    //方法2---sleep 定时执行   
     require_once &#39;./curlClass.php&#39;;//引入文件   
        
     $curl = new httpCurl();//实例化   
     $stime = $curl->getmicrotime();   
    for($i=0;$i<=10;$i++){   
            
        echo &#39;测试&#39;.time().&#39;<br/>&#39;;    
        sleep($interval);// 等待5s   
            
    }   
    ob_flush();   
    flush();   
    $etime = $curl->getmicrotime();   
    echo &#39;<hr>&#39;;   
    echo round(($etime-stime),4);//程序执行时间
로그인 후 복사


프로그램은 대담하게 작성되었으므로 어떤 includerequire를 사용해도 문제가 없습니다

2. 새로운 Bat만들기 > 파일 이름을 test.bat로 지정하고 내용은 다음과 같습니다:


rrreee

3. WINDOWS 계획 수립 작업:


시작->제어판->작업 일정->작업 계획 추가

폴더를 찾아 위의 bat 파일을 선택하세요

설정 시간과 비밀번호(WINDOWS에 로그인) 저장하세요.

4. 예약된 작업을 마우스 오른쪽 버튼으로 클릭하고 "실행"을 클릭하여 시도해 볼 수 있습니다.

2. Linux 스크립트 구현

1. PHP를 사용하여 Crontab에서 스크립트를 실행합니다. Crontab과 마찬가지로 일반 쉘 스크립트(특정 Crontab 사용법)를 호출하는 것과 마찬가지로 PHP 프로그램을 사용하여 PHP 스크립트를 호출합니다.
다음과 같이 매시간 myscript.php를 실행합니다:

🎜🎜rrreee🎜🎜🎜🎜/usr/local/bin/php(PHP용) 프로그램의 경로입니다. 🎜🎜🎜2. URL을 사용하여 Crontab에서 스크립트 실행 🎜🎜🎜PHP 스크립트를 URL로 실행할 수 있는 경우 lynx, cur 또는 wget을 사용하여 Crontab을 구성할 수 있습니다. 🎜🎜아래 예는 Lynx 텍스트 브라우저를 사용하여 URL에 액세스하여 매시간 PHP 스크립트를 실행하는 것입니다. Lynx 텍스트 브라우저는 기본적으로 대화 모드를 사용하여 URL을 엽니다. 그러나 아래와 같이 lynx 명령줄에서 -dump 옵션을 사용하여 URL 출력을 표준 출력으로 변환합니다. 🎜

🎜🎜rrreee

🎜🎜rrreee🎜아래 예는 WGET을 사용하여 실행할 URL에 액세스하는 것입니다. 10분마다 PHP 스크립트. -q 옵션은 자동 모드를 나타냅니다. "-O temp.txt"는 출력이 임시 파일로 전송된다는 의미입니다🎜

🎜🎜rrreee 🎜🎜3. PHP는 예약된 작업의 예약된 실행을 구현합니다.🎜🎜🎜🎜PHP를 사용하여 브라우저를 새로 고치려면 여러 가지 문제를 해결해야 합니다.🎜🎜1. 기본값은 30m입니다. : set_time_limit();또는 max_execution_time 시간을 설정하도록 PHP.ini를 수정합니다(권장하지 않음) 🎜🎜🎜2. 클라이언트 브라우저가 닫히면 프로그램이 강제로 실행될 수 있습니다. 종료 해결 방법 : ignore_user_abort 페이지가 닫혀도 정상적으로 실행됩니다. 🎜🎜🎜3. 프로그램이 계속 실행되면 많은 리소스를 소비할 가능성이 높습니다. sleep으로 프로그램을 잠시 잠자게 했는데요. 그러다가 PHP 예약 실행 코드🎜🎜🎜🎜rrreee🎜를 실행할 때 효율성이 그다지 높지 않다는 것을 발견했습니다🎜🎜🎜요약:🎜🎜🎜🎜이것입니다. 이 기사에서는 Windows 예약 작업, Linux 스크립트 및 PHP를 사용하여 예약 작업을 실행합니다. 이 예제를 통해 PHP의 예약 작업 실행을 보다 직접적으로 이해할 수 있습니다. 도움이 되기를 바랍니다. 🎜🎜🎜관련 권장 사항: 🎜🎜🎜예약된 작업을 구현하는 PHP의 원리 분석🎜🎜🎜🎜🎜php 예약된 작업 및 연속 프로세스(fsockopen) 예제🎜🎜🎜🎜🎜php 예약된 작업 사용자 연결 상태 감지🎜🎜🎜

위 내용은 PHP에서 예약된 작업을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿