利用PHP实现定时任务,利用php 实现定时任务简单实现 代码
linux下可以借助crontab+php的方式(Crontab是一个很方便的在unix/linux系统上定时(循环)执行某个任务的程序 )
windows 下有两种方式:
借助于vbscript脚本加载无窗口的服务
view plaincopy to clipboardprint?
1.do
2.set ws=createobject("wscript.shell")
3.ws.run"D:\php\php.exe D:\php\source\do.php",vbhide
4.wscript.sleep 5000 '毫秒
5.loop
新建文本文件,复制以上脚本,另存为后缀为*(.vbs)的文件后即可。
上面“D:\php\php.exe D:\php\source\do.php” 这种方式可以写在bat文件中,或者window计划任务中都可以执行。
php内部支持的一种利用函数“ignore_user_abort ” 来永久执行的方案。
view plaincopy to clipboardprint?
1.''<?php
2.ignore_user_abort(); // run script in background
3.set_time_limit(0); // run script forever
4.$interval=30; // do every 30 seconds...
5.do{
6.$fp = fopen('text3.txt','a');
7.fwrite($fp,'test');
8.fclose($fp);
9.sleep($interval); // wait 30 seconds
10.}while(true);
11.?>''
第三种方案,需要总是执行脚本,而且响应请求的时间是无限制的,对于定义了最大响应时间的fastcgi方式不可行,脚本还是会停止。所以需要找一种更加稳妥的方案。
**找到了**
数学是很神奇的东西。实际上定时执行,是一个时间条件执行,php中有取得时间秒数的函数time() 返回据1970年1月1日开始的秒数,而我们通常定时任务执行,可以使300秒,1000秒之类的时间间隔,意味着 。这个就好处理了,time()%timestamp==0 只要整除到了符合间隔的时间,就执行一次,恰好符合了定时的目的。
实际上最后一种简单实现,解决的是普通请求中脚本定时任务的问题,这里会受到响应时间的限制,想让这部分代码执行的更久一下可以参考ignore_user_abort和set_time_limit,如果需要大运算量的处理,就需要借助前面介绍的方式在服务器端控制定时任务了,但作为普通需求,最后一种方案是一种简单直接的实现,有一定意义!
来自:http://develop.9he.info/php/%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1%E7%AE%80%E5%8D%95%E5%AE%9E%E7%8E%B0
其它方法:
下面的这段代码,可以在当前文件夹下,生成一个test.txt,并每隔20秒,往里面写入一个时间戳,无论客户端是否关闭浏览器。
view plaincopy to clipboardprint?
1.ignore_user_abort(true);
2.set_time_limit(0);
3.
4.function write_txt(){
5.if(!file_exists(”test.txt”)){
6.$fp = fopen(”test.txt”,”wb”);
7.fclose($fp);
8.}
9.$str = file_get_contents(’test.txt’);
10.$str .= “"r"n”.date(”H:i:s”);
11.$fp = fopen(”test.txt”,”wb”);
12.fwrite($fp,$str);
13.fclose($fp);
14.}
15.
16.function do_cron(){
17.usleep(20000000);
18.write_txt();
19.}
20.
21.while(1){
22.do_cron();
23.}
关键的两个函数:
ignore_user_abort(true),这个函数的作用是,无论客户端是否关闭浏览器,下面的代码都将得到执行。
set_time_limit(0),这个函数的作用是,取消php文件的执行时间,要是没有这个函数的话,默认php的执行时间是30秒,也就是说30秒后,这个文件就say goodbay了。
利用PHP实现定时任务,利用php 实现定时任务简单实现 代码相关推荐
- php定时刷新token,PHP 定时任务获取微信access_token的简单示例
搜索热词 感兴趣PHP 定时任务获取微信access_token的简单示例的小伙伴,下面一起跟随编程之家 jb51.cc的小编来看看吧. 最近开发微信公众平台,公众号调用各接口时都需使用access_ ...
- 如何在虚拟主机上开发php定时任务,GoDaddy 虚拟主机定时任务怎么设置? | Godaddy美国主机中文指南...
大家在使用GoDaddy 虚拟主机过程中有时候需要定期清理垃圾文件或者定期备份网站程序等操作,但有没有办法通过设置定时任务,让系统能自动去操作呢?GoDaddy Linux虚拟主机的cPanel面板中 ...
- Python:利用python语言绘制多个子图经典案例、代码实现之详细攻略
Python:利用python语言绘制多个子图经典案例.代码实现之详细攻略 目录 利用python语言绘制多个子图代码实现.经典案例 1.绘制多个子图框架 多个子图绘制的经典案例 1.绘制多个直方图 ...
- php添加linux定时任务,PHP与Linux定时任务
定时任务在实际开发中用到是非常多的,这里也简单说说PHP怎么执行定时任务.我们都知道PHP是一门解释性语言,当我们在浏览器中输入某个URL时,我们才能去执行PHP,但是如果不访问URL呢,怎么让PHP ...
- html约束验证的例子,HTML5利用约束验证API来检查表单的输入数据的代码实例
HTML5对于表单有着极大程度的优化,无论是语义,小部件,还是数据格式的验证.我猜你肯定会以浏览器兼容作为借口不愿意使用这些"新功能",但这绝不应该成为使你停滞不前的原因,况且还有 ...
- 1-3.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之三
在1-1.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之一 基础上进行如下操作: 所有路由不能全部都在myDjango下的urls.py路由文件中, ...
- php foreach 时间,PHP利用for,while,foreach遍历时间比较的简单示例
这篇文章主要为大家详细介绍了PHP利用for,while,foreach遍历时间比较的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小玲来看看吧!这个是从别 ...
- Excel的公式:公式基本使用、单元格地址引用、错误值利用、追踪公式利用与追踪错误
文章目录 Exceld的公式 1.概念 2.作用 3.基本使用 (1)查看公式 (2)输入包含内置函数的公式 (3)公式深度介绍 (4)公式运算符 (5)公式特点 4.单元格地址引用 5.单列变多列- ...
- 利用.NET做“电子书阅读器”原来这么简单(其实你也可以做出金山词霸)
一.利用.NET做"电子书阅读器"原来这么简单 先下载组件:Interop.SpeechLib.dll (http://files.cnblogs.com/waw/Interop ...
- 深度学习实战——利用卷积神经网络对手写数字二值图像分类(附代码)
系列文章目录 深度学习实战--利用卷积神经网络对手写数字二值图像分类(附代码) 目录 系列文章目录 前言 一.案例需求 二.MATLAB算法实现 三.MATLAB源代码 参考文献 前言 本案例利用MA ...
最新文章
- mybatisplus 结果_Java之MyBatis Plus介绍
- 游戏CFHD,狙可不是随便就起的,狙击的作用是辅助
- 登录注册的小项目对比.Net Core与 .Net Framework的一些区别
- Java Project和Web Project
- java关机命令收集cmd关机命令
- ecs php mysql集成环境_在阿里云 CentOS 服务器(ECS)上搭建 nginx + mysql + php-fpm 环境...
- 博途软件中多重背景块的建立_如何正确的理解西门子博途中的—单个实例和多重实例的区别...
- spring mvc 重新定向到一个新的Url
- 爬虫库之BeautifulSoup学习(三)
- Java之 final关键字
- C++中带默认参数的函数定义及使用总结
- 打新股和打新债有什么区别?
- [UE] 在虚幻中使用动画序列和分层骨骼混合简单实现角色看向
- 【nginx】4xx,5xx 保持自定义header
- nios自学笔记三:nios常用外设C函数整理
- 微信小程序开发笔记二(WXSS和CSS样式美化)
- 交叉编译qt5.11.3源码(不带opengl)
- SVD与SVD++的学习
- 数据中心交换机横向虚拟化集群漫谈
- 金蝶K3 SQL报表系列-委外核销检查表
热门文章
- Python数据挖掘:绘制直方图,设置上下限和步长,绘制子图
- python中什么是字符举例说明_第20p,什么是字符串?Python中的str
- Android Intent的 Component 使用
- ThinkPHP5.1接收post、get参数
- JDBC学习DayTwo
- 从协议入手,剖析OAuth2.0(译 RFC 6749)
- 怎么给html页面添加网格线,html – 如何使用css制作网格(如图纸网格)?
- 20162303 2016-2017-2 《程序设计与数据结构》第六周学习总结
- [Linux内核]软中断与硬中断
- Android中实现为TextView添加多个可点击的文本