聊聊php定时计划任务
google百度了下,PHP任务大体上可以分为三类
1、服务器计划任务
WIN服务器可以直接使用定时任务执行相关的应用程序,LINUX服务器则可以通过在/etc/crontab里添加定时任务来实现。
2、通过死循环实现任务自动执行
建立一个程序文件页面,通过ignore_user_abort来设置关闭浏览器页面后仍可执行,那么,在运行该程序页面后,您所需要的任务计划便会一直自动执行。对于一般的PHP程序员来说,如果没有足够的把握,这种操作是不被允许的,因为死循环极容易使用服务器当机。
3、触发式定时任务
在我所了解的几套程序中,像Discuz、帝国CMS等等,均使用这种方式来完成系统的定时任务,相对前面的两种方法,这是最为安全和简单的。
Discuz:
在您设置的计划任务执行时刻,如果有人访问您的站点,计划任务才会执行;如果那个时刻没有人访问您的站点,一直到有人访问时才执行计划任务。
定时任务对于php来说一直都是很多朋友的一个难题,但却很多地方都遇到了。
比如说:
游戏开发程序中,每隔10分钟给玩家发兵一次
sns社区中每隔20秒检测一下是否有人给我发消息
自动采集程序,每隔5分钟采集一次最新内容
微博数据同步,每隔10个小时通过微博api接口同步一次用户数据
……
大概有那么几种方法:
1.Linux系统
定时直接可以用cron来执行一个php脚本 或者其他语言的脚本[你要有足够的系统权限]
执行编辑cron命令
1
|
crontab -e
|
比如每隔5分钟执行下 /root/bin目录下的test.php脚本
*/5 * * * * php /root/bin/test.php
2.windows系统
可用计划任务执行脚本,不举例
PHP的实现决定了它没有Java和.Net这种AppServer的概念, 而http协议是一个无状态的协议, php只能被用户触发, 被调用, 调用后会自动退出内存, 没有常驻内存, 就没有办法准确的定时处理
那么, 如果需要用PHP定时执行某些任务的话, 可以有以下几个方法:
1、Linux下crontab, windows下计划任务
2、找个被频繁调用的网页, 里面加上一个检测代码
3、set_time_limit(0);
ignore_user_abort(true);
死循环
第一种:方法是最常见的, 但也是最靠谱的,如果php服务器上没有权限去crontab, 也可以找一个自己的机器定期crontab去请求服务器
第二种:方法, 论坛上定时清理新帖基本上就是这么实现的, 如果人气不旺的话, 可以考虑去别的火爆点的论坛里面发个图片, 调用自己的php来实现一个trigger就好了。 Discuz!是判断在00:00之后,第一个执行者去执行的。
第三种:最不靠谱, Apache重启了就得重新访问, fastcgi倒是会好一点。
网上参考:
http://blog.163.com/zbstrive_work@126/blog/static/165378687201141143512114/
转载于:https://blog.51cto.com/xuqin/1369169
聊聊php定时计划任务相关推荐
- mysql5.0 执行定时计划
由于在mysql5.1之后才支持定时计划功能 event_shecdule,之前的版本就需要使用操作系统的定时计划来调用脚本实现对mysql数据库的更改. 在windows下使用windows的定时工 ...
- 苹果cms V8/V10定时任务百度主动URL推送设置教程 配合宝塔定时计划任务
一淘模板(56admin.com)给大家带来一个苹果cms V8/V10定时任务百度主动URL推送设置教程 配合宝塔定时计划任务 教程主要分为3步走: 获取百度token(这一步直接复制网上的) 苹果 ...
- Android任务计划APP,安卓手机计划任务软件能像便签一样定时计划吗
原标题:安卓手机计划任务软件能像便签一样定时计划吗 安卓手机上不乏一些用于管理日程计划.任务计划的软件,比如可以在日历上创建日程事项,也可以在便签上记录任务计划,通常大家对这类软件都会有一个具备标记完 ...
- window定时计划任务-定时重启服务/软件
听过同事说过一句调侃的话:"重启能解决百分之九十九的问题".这不最近项目的Tomcat隔一段时间就假死,最后想到的解决方式就是:每天凌晨1点重启tomact. Window ...
- navicat for mysql 定时计划 定时导出EXCEL并附件发送邮件到固定邮箱
主要分为两步: 第一步:把简单的查询变成导出 1 .首先确定需要定时导出并发送邮件的查询 2.双击"XXX"查询,进入代码界面,点击右侧的导出 3.选择EXCEL数据表,点击下一步 ...
- Linux笔记 No.19---(swap分区、dd命令、mail发送邮件、定时计划任务at和crontab)
文章目录 一.swap分区 (一)查看Swap分区大小 (二)交换分区的创建 1.以分区形式创建 2.以文件形式创建 (三)swap分区的启动与关闭 (四)swap 优先级 二.dd命令 三.利用ma ...
- at定时任务,一次性定时计划任务
at 命令是一次性定时计划任务,at的守护进程atd会在后台开启运行,检查任务队列运行. 默认60S检查一次. at命令是一次性的计划任务,执行完就不再执行. 确认atd进程启动 ps -ef | g ...
- python定时爬虫三种方法_Python爬虫定时计划任务的几种常见方法
记得以前的Windows任务定时是可以正常使用的,今天试了下,发现不能正常使用了,任务计划总是挂起.接下来记录下Python爬虫定时任务的几种解决方法. 1.方法一.while True 首先最容易的 ...
- Linux定时 (计划) 任务
目录 定时任务 分类: 用户及系统定时任务 mail命令 at命令 crond命令 时间表示**(分 时 日 月 周) crontab 定时任务的制定规范 定时任务 定时(计划)任务:未来的某个时点执 ...
最新文章
- Github上删除fork的仓库
- IdentityServer4-EF动态配置Client和对Claims授权(二)
- strlcpy和strlcat——一致的、安全的字符串拷贝和串接函数
- UVA 1599 Ideal Path
- HALCON标定板制作、标准文件输出方法、算子讲解
- 【Elasticsearch】Named Entity Annotations in Elasticsearch es 实体 注解
- [MySQL] specified key was too long max key length is 767bytes
- gnuplot在windows下的安装和使用
- 纯干货:手把手教你用Python做数据可视化(附代码)
- 微信公众号开发(一) 微信网页授权登录
- 【Altium designer】常用的线宽和过孔尺寸
- unity学习———2D人物的移动
- 15 ArcGIS JS API 4.17更改测量控件黄白相间的默认样式
- ios时间戳和日期的一些转换,如具体时间,年龄,星座等等
- java opengl es_OPENGL ES 3.0编程指南
- 从python开始学编程pdf-Python真好玩:教孩子学编程 PDF 完整原版
- 1394接口_台式机1394视频采集卡推荐
- Unity Shader - Post Processing 15 - Height Fog (Plus) - 后效 高度雾 改进版 (Parallax)、模拟闪电在云层中SSS
- python执行bash命令
- tag标签是什么?对seo有什么用?
热门文章
- 数学推导+纯Python实现机器学习算法:逻辑回归
- .net的mvc的fw版本为4.5发布到阿里云【云虚拟主机】上.
- python基础之day1
- 【Elasticsearch 2.x】issues
- Office 365管理员指引 17——Sharepoint 讨论版
- Nginx常见的错误及解决方法
- Windows Phone本地数据库(SQLCE):11、使用LINQ查询数据库(翻译) (转)
- java中string与byte[]的转换
- Ext 整合 Jquery
- 改善C#程序的建议10:用Parallel简化Task