美文网首页
php计划任务管理类

php计划任务管理类

作者: 零一间 | 来源:发表于2017-12-12 19:47 被阅读78次

这里使用单实例Linux Server 的Cron服务进行CT任务管理,当然你也可以自己集成到自己的系统中.

crontab 使用请自行查阅资料

<?php


class Crontab {


    /**
     * 字符转数组
     * @param string $jobs
     * @return array
     * @exception
     */
    private static function stringToArray($jobs = '') {
        $array = explode("\r\n", trim($jobs));
        foreach ($array as $key => $item) {
            if ($item == '') {
                unset($array[ $key ]);
            }
        }
        return $array;
    }

    /**
     * 数组转字符
     * @param array $jobs
     * @return string
     * @exception
     */
    private static function arrayToString($jobs = array()) {
        $string = implode("\r\n", $jobs);
        return $string;
    }

    /**
     * 返回一个现有的/当前的cron作业数组。 每个数组项是一个字符串(cron作业)。
     * @return array
     * @exception
     */
    public static function getJobs() {
        $output = shell_exec('crontab -l');
        return self::stringToArray($output);
    }

    /**
     * 将cron作业的$ jobs数组保存到crontab中,以便服务器运行它们。 crontab中的所有现有作业都将被删除。
     * @param array $jobs
     * @return string
     * @exception
     */
    public static function saveJobs($jobs = array()) {
        $output = shell_exec('echo "' . self::arrayToString($jobs) . '" | crontab -');
        return $output;
    }

    /**
     * 检查crontab中是否存在特定的作业。
     * @param string $job
     * @return bool
     * @exception
     */
    public static function doesJobExist($job = '') {
        $jobs = self::getJobs();
        if (in_array($job, $jobs)) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 将一个cron作业添加到crontab。
     * @param string $job
     * @return bool|string
     * @exception
     */
    public static function addJob($job = '') {
        if (self::doesJobExist($job)) {
            return false;
        } else {
            $jobs = self::getJobs();
            $jobs[] = $job;
            return self::saveJobs($jobs);
        }
    }

    /**
     * 从crontab中删除一个cron作业。
     * @param string $job
     * @return bool|string
     * @exception
     */
    public static function removeJob($job = '') {
        if (self::doesJobExist($job)) {
            $jobs = self::getJobs();
            unset($jobs[ array_search($job, $jobs) ]);
            return self::saveJobs($jobs);
        } else {
            return false;
        }
    }

}

相关文章

  • php计划任务管理类

    这里使用单实例Linux Server 的Cron服务进行CT任务管理,当然你也可以自己集成到自己的系统中. cr...

  • ThinkPHP5 定时任务

    创建一个PHP 继承自Command 修改command.php 设置crontab计划任务.定时任务的实现 主要...

  • Linux开始PHP 计划任务

    1、查看本服务器上的计划任务命令:crontab -l 2、编辑计划任务命令:crontab -e * * * *...

  • 计划任务(定时任务)

    计划任务分为一次性计划任务与长期性计划任务。 一次性计划任务 长期性计划任务 一次性计划任务 长期性计划任务 cr...

  • Linux定时任务 day24

    1.计划任务基本概述2.计划任务时间管理3.计划任务编写实践4.计划任务如何调试 一、计划任务基本概述 1.什么是...

  • 20.Linux中的计划任务

    Linux中的计划任务At单次执行计划任务cron 计划任务的使用计划任务:在某个时段自动执行某个任务。 Linu...

  • 使用PHP代码实现计划任务

    参考PHP实现执行定时任务的几种思路详解 PHP本身是没有定时功能的,这主要是因为PHP无法实现多线程。所谓多线程...

  • 十二、计划任务、日志轮转

    计划任务 计划任务分为一次性和循环性的计划任务 一、一次调度执行-----at 作用: 计划任务主要是做一些周期...

  • golang 计划任务和windows下服务安装,删除

    网站开始使用的是win服务器系统计划任务,添加 XX.bat,设置执行时间 xx.bat中的内容: C:\php\...

  • 计划任务服务程序

    [TOC] 计划任务服务程序 计划任务分为以下两种一次性计划任务:今晚11点30分开启网站长期性计划任务:每周一的...

网友评论

      本文标题:php计划任务管理类

      本文链接:https://www.haomeiwen.com/subject/pzonixtx.html