php定时任务的几种方法

由于PHP只能被用户触发调用,调用后自动退出内存,没有常驻内存,因此无法准确的定时处理。

一下是php定时任务的几种方法

1.简单直接不顾后果型(通过php语言实现定时):

    function index(){
        //设置与客户机断开是否会终止脚本的运行:true代表忽略与客户机断开,false会导致脚本程序的运行;
        ignore_user_abort(true);
        //最大执行时间:单位s;0代表永久执行直到程序结束
        set_time_limit(10);
        $a = 1;
        do{
            /*
             * 写入文件file_put_contents(filename,data[,flags,context])
             * filename 文件名
             * data 需要写入的内容 PHP_EOL表示换行
             * flags FILE_APPEND代表文件尾内容追加,默认是覆盖原先内容
             * context 修改文件属性
             * */
            file_put_contents('timing.txt',$a.PHP_EOL,FILE_APPEND);
            $a++;
            /*
             * 延迟执行代码
             * sleep()单位秒
             * usleep()微妙
             * */
            sleep(3);
        }while(true);
    }

缺点: 启动之后,便无法控制, 除非终止 PHP 宿主,占系统资源, 长时间运行.

2.环境设置定时(Linux的crontab 和window 下的)

  Linux的crontab

    crontab默认情况下是不执行开启日志的,所以开始写完定时后是查看不了日志,不易判断是否有执行定时任务。因此先开启定时任务的日志记录

  修改rsyslog服务,将/etc/rsyslog.d/50-default.conf的 #cron.* 前的 # 去掉;用以下命令重启rsyslog服务

service rsyslog restart

  然后在重启crontab服务

service cron restart

配置完日志后开始写定时任务

  用户的定时文件保存在 /var/spool/cron/crontabs 目录下,并且以当前用户的名字命名;

编辑当前用户的定时任务
crontab -e

列出当前用户cron服务的详细内容
crontab -l

 定时任务可以执行访问URL 和 脚本

 

 该指令是每分钟访问一次 指定的url;  

 crontab的格式讲解

  用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,他的格式共分为6个字段,前5个字段是时间设定段,第六段是要执行的命令段。格式如下:

  minute hour day month week command

 其中:

    minute:表示分钟,0-59任何整数

    hour:表示小时,0-23任何整数

    day:表示日期,1-31整数

    month:月份,1-12整数

    week:星期几,0-7,这里0和7代表星期日

    command:要执行的命令,可以使系统命令,也可以是自己编写的脚本文件

shell脚本文件的书写

  

原文地址:https://www.cnblogs.com/vincePp/p/7727988.html