zoukankan      html  css  js  c++  java
  • php如何实现定时任务,php定时任务方法,最佳解决方案,php自动任务处理

    php如何实现定时任务,php定时任务方法,最佳解决方案,php自动任务处理

    定时任务对于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系统
    可用计划任务执行脚本,不举例

    3.如果没有系统权限,那就往下看吧。
    由于php属于解释型弱语言,所以做定时任务的时候不会像java那样容易,在java中直接给个进程就可以让系统执行定时任务,但是在php中没那么简单 设置都没有多线程的概念。

    我第一次接触定时任务的时候是一个做php的朋友问我怎么实现定时发兵,我当时给出的答案是写一个包含文件,每次都执行的时候都调用这个文件检查是否有任务,但试想 如果没人触发怎么办,显然答案并不完美。

    后来我又通过其他渠道获得了解决的最佳办法,而且我还亲自做了测试。
    大致理念就是设定关闭浏览器程序也会停留在服务器内存中执行,并且相应时间永不过期
    看程序:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    ignore_user_abort(TRUE);// 设定关闭浏览器也执行程序
    set_time_limit(0);      // 设定响应时间不限制,默认为30秒
     
    $count = 0;
    while (TRUE)
    {
        sleep(5);           // 每5秒钟执行一次
     
        // 写文件操作开始
        $fp = fopen("test".$count.".txt", "w");
        if($fp)
        {
            for($i=0; $i<5; $i++)
            {
                $flag=fwrite($fp,$i."这里是文件内容www.uacool.com ");
                if(!$flag)
                {
                    echo "写入文件失败";
                    break;
                }
            }
        }
        fclose($fp);
        // 写文件操作结束
     
        $count++;
        // 设定定时任务终止条件
        if (file_exists('lock.txt'))
        {
            break;
        }
    }

    把这个文件命名为 tast.php 放在网站根目录
    如: www.uacool.com/tast.php
    访问此网页。此程序会再网站根目录不断生成名为test0.txt,test1.txt,test2.txt…的文本文件
    访问后可关闭浏览器,不影响程序继续执行,如想阻止程序,请在网站根目录下放一个名为lock.txt的文件。
    如:www.uacool.com/lock.txt
    当然重新启动服务器或者重启电脑也可以阻止程序继续运行

    相关内容:
    windows的schtasks定时任务:http://www.cnblogs.com/lostyue/archive/2011/10/24/2223166.html

    Cron服务是SAE为开发者提供的分布式定时服务:http://sae.sina.com.cn/?m=devcenter&catId=195

  • 相关阅读:
    算法2:邻居好说话:冒泡排序
    算法1:最快最简单的排序——桶排序
    冒泡排序
    Linux基本操作命令总结
    APP内嵌H5页面,H5页面向APP发送消息
    前端进行微信公众号账号绑定步骤
    history不刷新页面改变url
    在 Chrome DevTools 中调试 JavaScript 入门
    eslint 在webstorm配置
    electron 自定义菜单
  • 原文地址:https://www.cnblogs.com/honeynm/p/4125663.html
Copyright © 2011-2022 走看看