Ubuntu系统下用Crontab命令定时执行PHP文件详解

前言

一般我在开发中,常用的定时任务有2种。一种是直接调用PHP文件执行,还有一种是调用远程URL地址。

首先,先来亮相一下我们今天的主角,Crontab命令。这个是系统定时命令,作用是定时的去执行一些任务。包含一些系统级别的任务,当然用户也可以直接借用该命令来实现自己的一些计划任务。

该命令一般跟随系统启动,我们可以使用一下命令来查看是否cron是否启动

pgrep cron

如果启动了,会返回一个进程id

Crontab文件一般存放于/etc目录下。我们使用,crontab -e来编辑cron任务。(第一次用这个命令,会让你选择文本编辑器)

打开cron文件,注意观察最后一行 m h dom...这里简要介绍一下它的意思。

  • m:分钟,0-59
  • h:小时,0-23
  • dom:日期,1-31
  • mon:月份,1-12
  • dow:星期,0-6,0为星期天
  • command:命令

这里,我们应该已经知道其大概的用法了。我们只要在对应的位置填写上我们需要的数字日期,就可以使用它来表示:在某月(mon)的某天(dom)或者星期几(dow)的几点(h,24小时制)几分(m)执行某个命令(command)。

举个栗子:

* * * * * php /path/to/your/cron.php
5个星号分别代表定时指定每分、小时、日、月、周。

* 19 * * * php /var/www/cron/crontab.php
讲第二个参数h填写为19,则表示每天的下午7点执行crontab.php。

* * * * * php /path/to/your/cron.php
每隔一分钟执行一次任务 

0 * * * * php /path/to/your/cron.php
每小时的0点执行一次任务,比如6:00,10:00 

6,10 * 2 * * php /path/to/your/cron.php
每个月2号,每小时的6分和10分执行一次任务 

*/3,*/5 * * * * php /path/to/your/cron.php
每隔3分钟或5分钟执行一次任务,比如10:03,10:05,10:06

在这个例子中,我们看到不仅有数字还有星号和/等等符号。这些符号可以让定时更加的灵活。

  • *(星号):表示任意值,在相应位置填写*,可以代表任意执行。比如h为*,则为任意的小时
  • ,(逗号):表示一个部分填写多个值,比如在m位置填写1,5代表1分钟或5分钟时候
  • /(斜杠):表示每隔多久,比如在h部分填写*/2表示每隔2个小时,*/3表示每隔3个小时,
  • */1和*无区别,所以可以省略。这里可以想想,*/2表示能被2整除的时间就好理解了。

使用你的编辑器,保存->退出之后。重新启动cron任务。在每天的相应时间即可看到效果。

下面我们就先来说说PHP开发中,我常用的两种。

第一种:直接调用PHP文件

这种比较简单,我们新建一个php文件。向一个文件插入一些简单的日期内容。

#!/usr/bin/php -q
<?php

$file = "/var/www/".date("H")."_".date("i")."_".date("s").".txt";
file_put_contents($file,date("Y-m-d"));

?>

注意:这种直接调用PHP文件需要在PHP文件最上方加入#!/usr/bin/php -q代码,而第二种方式(接下来会讲),是直接访问链接,通过Apache来解析PHP,这种PHP脚本则不需要加这段代码。

1 6 * * * /path/to/your/cron.php
每天的上午6点01分,执行cron.php文件

第二种:通过访问URL链接定时。

访问URL链接需要借助于浏览器来实现。我们选择Lynx浏览器,Lynx浏览器是一款轻便的web浏览器,使用于大部分Unix 和Linux系统环境。安装命令:

sudo apt-get install lynx

然后就可以和直接访问PHP文件类似的定时访问URL啦。

* * * * * lynx -dump http://weiya.me/index.php

注意这个地址最好用绝对地址,包含“http://”的完整url。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • PHP 执行系统外部命令 system() exec() passthru()

    区别: system() 输出并返回最后一行shell结果. exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面. passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上. 相同点:都可以获得命令执行的状态码 demo: 复制代码 代码如下: //system('dir'); // exec ('dir'); // passthru ('dir'); // echo `dir`; PHP作为一种服务器端的脚本语言,象编写简单,或者

  • PHP在linux上执行外部命令的方法

    目录: 一.PHP中调用外部命令介绍 二.关于安全问题 三.关于超时问题 四.关于PHP运行linux环境中命令出现的问题 一.PHP中调用外部命令介绍 在PHP中调用外部命令,可以用,1>调用专门函数.2>反引号.3>popen()函数打开进程,三种方法来实现: 方法一:用PHP提供的专门函数(四个): PHP提供4个专门的执行外部命令的函数:exec(), system(), passthru(), shell_exec() 1)exec() 原型: string exec ( st

  • PHP实现执行外部程序的方法详解

    本文实例讲述了PHP实现执行外部程序的方法.分享给大家供大家参考,具体如下: 在一些特殊情况下,会使用PHP调用外部程序执行,比如:调用shell命令.shell脚本.可执行程序等等,今天在源码中了解了一下PHP执行外部程序的方法,借此机会顺便整理一下. 在源码中 exec.h文件中,列出了可调用外部程序的几个函数,蓝色框里的两个函数只是辅助作用,本文只对其他几个函数做介绍. 前提 1 PHP没有运行在安全模式,关掉安全模式,即:safe_mode = off 2 禁用函数列表 disable_

  • PHP用反撇号执行外部命令

    例如: echo `whoami`; // 导出数据库,要导入的文件夹必须要有可写权限, -u -p之后的内容必须要紧挨着写 复制代码 代码如下: echo `mysqldump -h localhost -u$DbUser -p$DbPwd --default-character-set=utf8 $DbName > /var/$dumpFileName`; 反撇号其他用法 <?php #使用反撇号,暗示作为命令来执行 $result=`date`; echo "<p>

  • linux系统下定时执行php脚本的方法

    前言 在windows服务端定时执行某个程序代码还是比较简单的,只要在系统中做定时任务就可以了,目前刚刚接触到linux下的定时任务,这在好多公司的面试中都会提到的,而对于linux小白的我来说,是个不小的挑战,听单位的同事说,linux定时执行PHP脚本也是很简单的,linux系统实现计划任务一般采用crontab工具,好了,目前分享一个可以执行成功的php脚本,供大家参考了. 1. 在需要定时执行的PHP文件的第一行加 view plain copy #! /bin/local/php -q

  • 浅谈PHP命令执行php文件需要注意的问题

    require_once '/data/web/fewfawef/wwwroot/Public/queenchuli/common/mysql.php'; 里面必须要写绝对路径 写死 才行哈 这样就不会出错了 以上这篇浅谈PHP命令执行php文件需要注意的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • PHP 中执行系统外部命令

    PHP 中执行系统外部命令 PHP作为一种服务器端的脚本语言,象编写简单,或者是复杂的动态网页这样的任务,它完全能够胜任.但事情不总是如此,有时为了实现某个功能,必须借助于操作系统的外部程序(或者称之为命令),这样可以做到事半功倍. 那么,是否可以在PHP脚本中调用外部命令呢?如果能,如何去做呢?有些什么方面的顾虑呢?相信你看了本文后,肯定能够回答这些问题了. 是否可以? 答案是肯定的.PHP和其它的程序设计语言一样,完全可以在程序内调用外部命令,并且是很简单的:只要用一个或几个函数即可. 前提

  • PHP编程实现脚本异步执行的方法

    本文实例讲述了PHP编程实现脚本异步执行的方法.分享给大家供大家参考,具体如下: php语言得用fsockopen()函数,实现脚本异步运行,代码如下 异步请求函数(用debug参数若为true则为用为调试,开启调试可以看到异步的执行情况,但是失去异步的效果) main.php <?php function request_by_fsockopen($url,$post_data=array(),$debug=false){ $url_array = parse_url($url); $host

  • 在PHP中执行系统外部命令

    PHP作为一种服务器端的脚本语言,象编写简单,或者是复杂的动态网页这样的任务,它完全能够胜任.但事情不总是如此,有时为了实现某个功能,必须借助于操作系统的外部程序(或者称之为命令),这样可以做到事半功倍. 那么,是否可以在PHP脚本中调用外部命令呢?如果能,如何去做呢?有些什么方面的顾虑呢?相信你看了本文后,肯定能够回答这些问题了. 是否可以? 答案是肯定的.PHP和其它的程序设计语言一样,完全可以在程序内调用外部命令,并且是很简单的:只要用一个或几个函数即可. 前提条件 由于PHP基本是用于W

  • php外部执行命令函数用法小结

    本文实例讲述了php外部执行命令函数用法.分享给大家供大家参考,具体如下: 首先先要自我检讨一下的,学习和使用php已经前前后后一年多了,研究和使用Linux系统也差不多一年了,我居然不知道php这种解释型语言可以直接调用操作命令去操纵系统... 先总结下Linux的操作,常用的cd.cp.mv.rm之类的就不提了,值得总结的第一点是普通用户在提取root权限的时候需要在命令前加上sudo,然后在vi编辑器中输出行号的命令是 :set nu. php的内置函数exec,system都可以调用系统

  • 如何离线执行php任务

    直接上代码,主要函数 ignore_user_abort(true); 这个函数忽略了终端被关闭(打开的网页被关闭),后面 getfiles()这函数是执行采集任务的自定义函数,后面又配置了下路径 打开写好的页面,关闭,后面发现任务都能执行完成,有兴趣的可以试试. <?php //设置忽略是否关闭终端窗口 ignore_user_abort(true); ini_set('max_execution_time', '0'); //采集页面函数,看不懂执行百度curl php function g

随机推荐