search
Homephp教程php手册php5.3下使用php管理crontab计划任务

php5.3或以上版本可以使用php管理crontab计划任务,下面我先来体验一下,有需要学习了解的朋友可进入参考.

1.使用php-crontab-manager管理计划任务

要求 PHP>=5.3,使用方法举例,代码如下:

use phpmanagercrontabCrontabManager; 
$crontab = new CrontabManager(); 
$crontab->enableOrUpdate('/tmp/my/crontab.txt'); 
$crontab->save();

添加一个简单的计划任务,代码如下:

use phpmanagercrontabCrontabManager; 
$crontab = new Ssh2_crontab_manager(); 
$job = $crontab->newJob(); 
$job->on('* * * * *'); 
$job->onMinute('20-30')->doJob("echo foo"); 
$crontab->add($job); 
$job->onMinute('35-40')->doJob("echo bar"); 
$crontab->add($job); 
$crontab->save();

php类文件,代码如下:

<?php
Class Ssh2_crontab_manager {
    private $connection;
    private $path;
    private $handle;
    private $cron_file;
    function __construct($host = NULL, $port = NULL, $username = NULL, $password = NULL) {
        $path_length = strrpos(__FILE__, "/");
        $this->path = substr(__FILE__, 0, $path_length) . &#39;/&#39;;
        $this->handle = &#39;crontab.txt&#39;;
        $this->cron_file = "{$this->path}{$this->handle}";
        try {
            if (is_null($host) || is_null($port) || is_null($username) || is_null($password)) throw new Exception("The host, port, username and password arguments must be specified!");
            $this->connection = @ssh2_connect($host, $port);
            if (!$this->connection) throw new Exception("The SSH2 connection could not be established.");
            $authentication = @ssh2_auth_password($this->connection, $username, $password);
            if (!$authentication) throw new Exception("Could not authenticate &#39;{$username}&#39; using pasword: &#39;{$password}&#39;.");
        }
        catch(Exception $e) {
            $this->error_message($e->getMessage());
        }
    }
    public function exec() {
        $argument_count = func_num_args();
        try {
            if (!$argument_count) throw new Exception("There is nothing to exececute, no arguments specified.");
            $arguments = func_get_args();
            $command_string = ($argument_count > 1) ? implode(" && ", $arguments) : $arguments[0];
            $stream = @ssh2_exec($this->connection, $command_string);
            if (!$stream) throw new Exception("Unable to execute the specified commands: <br />{$command_string}");
        }
        catch(Exception $e) {
            $this->error_message($e->getMessage());
        }
        return $this;
    }
    public function write_to_file($path = NULL, $handle = NULL) {
        if (!$this->crontab_file_exists()) {
            $this->handle = (is_null($handle)) ? $this->handle : $handle;
            $this->path = (is_null($path)) ? $this->path : $path;
            $this->cron_file = "{$this->path}{$this->handle}";
            $init_cron = "crontab -l > {$this->cron_file} && [ -f {$this->cron_file} ] || > {$this->cron_file}";
            $this->exec($init_cron);
        }
        return $this;
    }
    public function remove_file() {
        if ($this->crontab_file_exists()) $this->exec("rm {$this->cron_file}");
        return $this;
    }
    public function append_cronjob($cron_jobs = NULL) {
        if (is_null($cron_jobs)) $this->error_message("Nothing to append!  Please specify a cron job or an array of cron jobs.");
        $append_cronfile = "echo &#39;";
        $append_cronfile.= (is_array($cron_jobs)) ? implode("n", $cron_jobs) : $cron_jobs;
        $append_cronfile.= "&#39;  >> {$this->cron_file}";
        $install_cron = "crontab {$this->cron_file}";
        $this->write_to_file()->exec($append_cronfile, $install_cron)->remove_file();
        return $this;
    }
    public function remove_cronjob($cron_jobs = NULL) {
        if (is_null($cron_jobs)) $this->error_message("Nothing to remove!  Please specify a cron job or an array of cron jobs.");
        $this->write_to_file();
        $cron_array = file($this->cron_file, FILE_IGNORE_NEW_LINES);
        if (emptyempty($cron_array)) {
            $this->remove_file()->error_message("Nothing to remove!  The cronTab is already empty.");
        }
        $original_count = count($cron_array);
        if (is_array($cron_jobs)) {
            foreach ($cron_jobs as $cron_regex) $cron_array = preg_grep($cron_regex, $cron_array, PREG_GREP_INVERT);
        } else {
            $cron_array = preg_grep($cron_jobs, $cron_array, PREG_GREP_INVERT);
        }
        return ($original_count === count($cron_array)) ? $this->remove_file() : $this->remove_crontab()->append_cronjob($cron_array);
    }
    public function remove_crontab() {
        $this->remove_file()->exec("crontab -r");
        return $this;
    }
    private function crontab_file_exists() { //开源代码phprm.com
        return file_exists($this->cron_file);
    }
    private function error_message($error) {
        die("<pre style=&#39;color:#EE2711&#39;>ERROR: {$error}
");     } } ?>

项目地址:https://github.com/MediovskiTechnology/php-crontab-manager

2.Ssh2_crontab_manager 关于php管理计划任务的详细教程

具体内容参考:http://net.tutsplus.com/tutorials/php/managing-cron-jobs-with-php-2/

参考资料:http://stackoverflow.com/questions/4421020/use-php-to-create-edit-and-delete-crontab-jobs


Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat Commands and How to Use Them
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor