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 ) . '/' ; $this ->handle = 'crontab.txt' ; $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 '{$username}' using pasword: '{$password}'." ); } 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 '" ; $append_cronfile .= ( is_array ( $cron_jobs )) ? implode( "n" , $cron_jobs ) : $cron_jobs ; $append_cronfile .= "' >> {$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 ( empty empty ( $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() { //开源代码phpfensi测试数据 return file_exists ( $this ->cron_file); } private function error_message( $error ) { die ( "<pre style='color:#EE2711'>ERROR: {$error}</pre>" ); } } ?>项目地址:https://github测试数据/MediovskiTechnology/php-crontab-manager
2.Ssh2_crontab_manager 关于php管理计划任务的详细教程
具体内容参考:http://net.tutsplus测试数据/tutorials/php/managing-cron-jobs-with-php-2/
参考资料:http://stackoverflow测试数据/questions/4421020/use-php-to-create-edit-and-delete-crontab-jobs
查看更多关于php5.3下使用php管理crontab计划任务 - php高级应用的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did30369