关于定时任务,之前以前认识了一种最常用的:crontab定时任务。通过linux的定时任务去实现。今天又认识了一下php实现定时方式的其它方式,总结一下。

一 服务器定时任务

服务器定时任务,其实就是unix系统下的crontab实现,具体的设置:Linux定时任务crontab;不过除了直接定时读取php脚本的方式,我们还可以用定时调用接口的方式。

运行脚本时:

*/1 * * * * php /data/www/cron.php  每分钟执行cron.php

URL方式调用:

lynx方式:*/1 * * * *  lynx -dump http://www.gzpblog.com/cron.php(-dump选项来把URL的输出转换来标准输出)

curl方式:*/1 * * * *  /usr/bin/curl -o temp.txt http://www.gzpblog.com/cron.php(Curl默认在标准输出显示输出。使用 “curl -o” 选项,把脚本的输出转储到临时文件temp.txt)

wget方式:*/1 * * * * /usr/bin/wget -q -O temp.txt http://www.gzpblog.com/cron.php(q 选项表示安静模式。”-O temp.txt” 表示输出会发送到临时文件。)

以上方式,是将php脚本放在可以用url访问的地址地中,比如http://www.gzpblog.com/cron.php,定时调用触发任务。

二 ignore_user_abort()方式

ignore_user_abort() 函数设置与客户机断开是否会终止脚本的执行。

先使用一个cron.php文件来控制脚本的终止,cron.php内容为:

<?php
return 1;
?>

脚本php文件为:

<?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');  //return 0 时, 终止
//TODO 该干啥干啥
sleep($interval);// 等待5分钟
}
while(true);

通过改变cron.php的return 0 , 来实现停止程序。但是这种方法,不好内存管理。

三 file_get_contents()方式

<?php
$time=15;
$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; //TODO sleep($time);
file_get_contents($url);
?>

php脚本sleep 一段时间之后通过访问自身的方式继续执行,这样就能保证每个PHP脚本执行时间不会太长,不受time_out的限制。因为每一次一次循环php文件都是独立执行,所以这种方法,避免了time_out的限制。 但是最好和上边一样 加上控制代码cron.php,以便能够终止进程。

PHP实现定时任务的几种方式的更多相关文章

  1. Spring Boot 中实现定时任务的两种方式

    在 Spring + SpringMVC 环境中,一般来说,要实现定时任务,我们有两中方案,一种是使用 Spring 自带的定时任务处理器 @Scheduled 注解,另一种就是使用第三方框架 Qua ...

  2. java定时任务的三种方式

    /**  * 普通thread  * 这是最常见的,创建一个thread,然后让它在while循环里一直运行着,  * 通过sleep方法来达到定时任务的效果.这样可以快速简单的实现,代码如下 */  ...

  3. spring实现定时任务的两种方式

    本文为博主原创,未经允许不得转载 项目中要经常事项定时功能,在网上学习了下用spring的定时功能,基本有两种方式,在这里进行简单的总结, 以供后续参考,此篇只做简单的应用. 1.在spring-se ...

  4. Spring Boot 实现定时任务的 4 种方式

    作者:Wan QingHua wanqhblog.top/2018/02/01/SpringBootTaskSchedule/ 定时任务实现的几种方式: Timer:这是java自带的java.uti ...

  5. java的常用定时任务的几种方式

    Java基本的定时任务,一般有这几种方式:一.Timer 1 public class Timer{ 2 static int index=0; 3 public static void main(S ...

  6. SpringBoot配置定时任务的两种方式

    一.导入相关的jar包 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...

  7. ubuntu下创建定时任务的两种方式及常见问题解决方案

    创建定时任务的目的就是摆脱人为对程序重复性地运行. 0. 首先用下面的指令检查你是否安装crontab, crontab -l 如果本身就有的话,那么出现如下指令 LC_CTYPE="zh_ ...

  8. 浅谈spring配置定时任务的几种方式

    网上看到好多关于定时任务的讲解,以前只简单使用过注解方式,今天项目中看到基于配置的方式实现定时任务,自己做个总结,作为备忘录吧. 基于注解方式的定时任务 首先spring-mvc.xml的配置文件中添 ...

  9. spring实现定时任务的两种方式之spring @scheduled注解方式

    1.使用spring的 scheduled使用注解的方式 这种方法的好处是:使用方便,配置少,提高开发效率: 缺点是:如果使用服务器集群部署方式的时候,其自身无法解决定时任务重复执行的问题. 2.首先 ...

随机推荐

  1. bzoj 3307: 雨天的尾巴【树剖lca+树上差分+线段树合并】

    这居然是我第一次写线段树合并--所以我居然在合并的时候加点结果WAWAWAMLEMLEMLE--!ro的时候居然直接指到la就行-- 树上差分,每个点建一棵动态开点线段树,然后统计答案的时候合并即可 ...

  2. bzoj 3527: [Zjoi2014]力【FFT】

    大力推公式,目标是转成卷积形式:\( C_i=\sum_{j=1}^{i}a_jb_{i-j} \) 首先下标从0开始存,n-- \[ F_i=\frac{\sum_{j<i}\frac{q_j ...

  3. CF896C Willem, Chtholly and Seniorious(珂朵莉树)

    中文题面 珂朵莉树的板子……这篇文章很不错 据说还有奈芙莲树和瑟尼欧里斯树…… 等联赛考完去学一下(逃 //minamoto #include<bits/stdc++.h> #define ...

  4. Word Cloud (词云) - R

    在前面已经陆续总结了如何用 Python 和 JavaScript 创建词云了,今天要说的是 R.其实 SPSS 和 SAS 的 Word Cloud 扩展模板都是基于 R 实现的. >> ...

  5. 前缀和小结 By cellur925

    这篇主要是来介绍前缀和的QAQ. 前缀和有一维的和二维的,一维的很容易理解,高中数学必修5第二章数列给出了前n项和的概念,就是前缀和.一维的我们在这里简单说一句. 一维前缀和 预处理:在输入一个数列的 ...

  6. bzoj2002 [Hnoi2010]Bounce 弹飞绵羊【分块】

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2002 这一题除了LCT解法,还有一种更巧妙,代码量更少的解法,就是分块.先想,如果仅仅记录每 ...

  7. clock()函数的返回值精度问题

    clock()函数返回值为1毫秒,就是0.001秒.clock函数功 能: 返回处理器调用某个进程或函数所花费的时间.用 法: clock_t clock(void);说明:clock_t其实就是lo ...

  8. 题解报告:poj 2559 Largest Rectangle in a Histogram(单调栈)

    Description A histogram is a polygon composed of a sequence of rectangles aligned at a common base l ...

  9. 题解报告:hdu 1098 Ignatius's puzzle

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1098 题目中文是这样的: 伊格内修斯在数学上很差,他遇到了一个难题,所以他别无选择,只能上诉埃迪. 这 ...

  10. LN : leetcode 312 Burst Balloons

    lc 312 Burst Balloons 312 Burst Balloons Given n balloons, indexed from 0 to n-1. Each balloon is pa ...