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定时计划任务相关推荐

  1. mysql5.0 执行定时计划

    由于在mysql5.1之后才支持定时计划功能 event_shecdule,之前的版本就需要使用操作系统的定时计划来调用脚本实现对mysql数据库的更改. 在windows下使用windows的定时工 ...

  2. 苹果cms V8/V10定时任务百度主动URL推送设置教程 配合宝塔定时计划任务

    一淘模板(56admin.com)给大家带来一个苹果cms V8/V10定时任务百度主动URL推送设置教程 配合宝塔定时计划任务 教程主要分为3步走: 获取百度token(这一步直接复制网上的) 苹果 ...

  3. Android任务计划APP,安卓手机计划任务软件能像便签一样定时计划吗

    原标题:安卓手机计划任务软件能像便签一样定时计划吗 安卓手机上不乏一些用于管理日程计划.任务计划的软件,比如可以在日历上创建日程事项,也可以在便签上记录任务计划,通常大家对这类软件都会有一个具备标记完 ...

  4. window定时计划任务-定时重启服务/软件

      听过同事说过一句调侃的话:"重启能解决百分之九十九的问题".这不最近项目的Tomcat隔一段时间就假死,最后想到的解决方式就是:每天凌晨1点重启tomact.   Window ...

  5. navicat for mysql 定时计划 定时导出EXCEL并附件发送邮件到固定邮箱

    主要分为两步: 第一步:把简单的查询变成导出 1 .首先确定需要定时导出并发送邮件的查询 2.双击"XXX"查询,进入代码界面,点击右侧的导出 3.选择EXCEL数据表,点击下一步 ...

  6. Linux笔记 No.19---(swap分区、dd命令、mail发送邮件、定时计划任务at和crontab)

    文章目录 一.swap分区 (一)查看Swap分区大小 (二)交换分区的创建 1.以分区形式创建 2.以文件形式创建 (三)swap分区的启动与关闭 (四)swap 优先级 二.dd命令 三.利用ma ...

  7. at定时任务,一次性定时计划任务

    at 命令是一次性定时计划任务,at的守护进程atd会在后台开启运行,检查任务队列运行. 默认60S检查一次. at命令是一次性的计划任务,执行完就不再执行. 确认atd进程启动 ps -ef | g ...

  8. python定时爬虫三种方法_Python爬虫定时计划任务的几种常见方法

    记得以前的Windows任务定时是可以正常使用的,今天试了下,发现不能正常使用了,任务计划总是挂起.接下来记录下Python爬虫定时任务的几种解决方法. 1.方法一.while True 首先最容易的 ...

  9. Linux定时 (计划) 任务

    目录 定时任务 分类: 用户及系统定时任务 mail命令 at命令 crond命令 时间表示**(分 时 日 月 周) crontab 定时任务的制定规范 定时任务 定时(计划)任务:未来的某个时点执 ...

最新文章

  1. Github上删除fork的仓库
  2. IdentityServer4-EF动态配置Client和对Claims授权(二)
  3. strlcpy和strlcat——一致的、安全的字符串拷贝和串接函数
  4. UVA 1599 Ideal Path
  5. HALCON标定板制作、标准文件输出方法、算子讲解
  6. 【Elasticsearch】Named Entity Annotations in Elasticsearch es 实体 注解
  7. [MySQL] specified key was too long max key length is 767bytes
  8. gnuplot在windows下的安装和使用
  9. 纯干货:手把手教你用Python做数据可视化(附代码)
  10. 微信公众号开发(一) 微信网页授权登录
  11. 【Altium designer】常用的线宽和过孔尺寸
  12. unity学习———2D人物的移动
  13. 15 ArcGIS JS API 4.17更改测量控件黄白相间的默认样式
  14. ios时间戳和日期的一些转换,如具体时间,年龄,星座等等
  15. java opengl es_OPENGL ES 3.0编程指南
  16. 从python开始学编程pdf-Python真好玩:教孩子学编程 PDF 完整原版
  17. 1394接口_台式机1394视频采集卡推荐
  18. Unity Shader - Post Processing 15 - Height Fog (Plus) - 后效 高度雾 改进版 (Parallax)、模拟闪电在云层中SSS
  19. python执行bash命令
  20. tag标签是什么?对seo有什么用?

热门文章

  1. 数学推导+纯Python实现机器学习算法:逻辑回归
  2. .net的mvc的fw版本为4.5发布到阿里云【云虚拟主机】上.
  3. python基础之day1
  4. 【Elasticsearch 2.x】issues
  5. Office 365管理员指引 17——Sharepoint 讨论版
  6. Nginx常见的错误及解决方法
  7. Windows Phone本地数据库(SQLCE):11、使用LINQ查询数据库(翻译) (转)
  8. java中string与byte[]的转换
  9. Ext 整合 Jquery
  10. 改善C#程序的建议10:用Parallel简化Task