ホームページ > バックエンド開発 > PHPチュートリアル > php5.3_PHP チュートリアルで php を使用して crontab スケジュールされたタスクを管理する

php5.3_PHP チュートリアルで php を使用して crontab スケジュールされたタスクを管理する

WBOY
リリース: 2016-07-13 10:47:19
オリジナル
1086 人が閲覧しました

php5.3 以降のバージョンでは、php を使用して crontab のスケジュールされたタスクを管理できます。詳しく知りたい人は、参考のために試してみてください。

1. php-crontab-manager を使用してスケジュールされたタスクを管理します
PHP>=5.3 が必要です

使用例

コードは次のとおりです コードをコピー

phpmanagercrontabCrontabManagerを使用します;

$crontab = 新しい CrontabManager();
$crontab->enableOrUpdate('/tmp/my/crontab.txt');
$crontab->save();

簡単なスケジュールされたタスクを追加します:

コードは次のとおりです コードをコピー

phpmanagercrontabCrontabManagerを使用します;

$crontab = 新しい Ssh2_crontab_manager();
$job = $crontab->newJob();
$job->on('* * * * *');
$job->onMinute('20-30')->doJob("echo foo");
$crontab->add($job);
$job->onMinute('35-40')->doJob("エコーバー");
$crontab->add($job);
$crontab->save();


类文件

代码如下 复制幣

クラス Ssh2_crontab_manager {

プライベート $connection;
 プライベート $パス;
 プライベート $ハンドル;
 プライベート $cron_file;

関数 __construct($host=NULL, $port=NULL, $username=NULL, $password=NULL)
 {
  $path_length = strrpos(__FILE__, "/");
  $this->path = substr(__FILE__, 0, $path_length) 。 '/';  
  $this->ハンドル = 'crontab.txt';
  $this->cron_file = "{$this->パス}{$this->ハンドル}";
  
  試してみてください
  {
   if (is_null($host) || is_null($port) || is_null($username) || is_null($password)) throw new Exception("ホスト、ポート、ユーザー名、およびパスワードの引数を指定する必要があります!");
  
   $this->connection = @ssh2_connect($host, $port);   
   if ( ! $this->connection) throw new Exception("SSH2 接続を確立できませんでした。");

$authentication = @ssh2_auth_password($this->connection, $username, $password);
   if ( ! $authentication) throw new Exception("パスワード '{$password}' を使用して '{$username}' を認証できませんでした。");
  }
  catch (例外 $e)
  {
   $this->error_message($e->getMessage());
  }
 }

パブリック関数 exec()
 {
  $argument_count = func_num_args();

試してみてください
  {
   if ( ! $argument_count) throw new Exception("実行するものが何もありません。引数が指定されていません。");

$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("指定されたコマンドを実行できません:
{$command_string}");
  }
  catch (例外 $e)
  {
   $this->error_message($e->getMessage());
  }

$this を返します;
 }

パブリック関数 write_to_file($path=NULL, $handle=NULL)
 {
  if ( ! $this->crontab_file_exists())
  {
   $this->handle = (is_null($handle)) ? $this->ハンドル : $handle;
   $this->path = (is_null($path)) ? $this->path : $path;   
   $this->cron_file = "{$this->パス}{$this->ハンドル}";
   
   $init_cron = "crontab -l > {$this->cron_file} && [ -f {$this->cron_file} ] || > {$this->cron_file}";
   
   $this->exec($init_cron);  
  }
 
  $this を返します。 
 }
 
 パブリック関数remove_file()
 {
  if ($this->crontab_file_exists()) $this->exec("rm {$this->cron_file}");  
  $this を返します;
 }
 
 パブリック関数 append_cronjob($cron_jobs=NULL)
 {
  if (is_null($cron_jobs)) $this->error_message("追加するものはありません! cron ジョブまたは cron ジョブの配列を指定してください。");
  
  $append_cronfile = "エコー '";  
  
  $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();
  
  $this を返します。  
 }
 
 パブリック関数remove_cronjob($cron_jobs=NULL)
 {
  if (is_null($cron_jobs)) $this->error_message("削除するものはありません! cron ジョブまたは cron ジョブの配列を指定してください。");
  
  $this->write_to_file();
 
  $cron_array = file($this->cron_file, FILE_IGNORE_NEW_LINES);
  
  if (空($cron_array))
  {
   $this->remove_file()->error_message("削除するものはありません! cronTab はすでに空です。");   
  }
  
  $original_count = count($cron_array);
  
  if (is_array($cron_jobs))
  {
   foreach ($cron_jobs を $cron_regex として) $cron_array = preg_grep($cron_regex, $cron_array, PREG_GREP_INVERT);
  }
  それ以外
  {
   $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);
 }

パブリック関数remove_crontab()
 {
  $this->remove_file()->exec("crontab -r");  
  $this を返します;
 }

プライベート関数 crontab_file_exists()
 {
  return file_exists($this->cron_file);
 }
 
 プライベート関数 error_message($error)
 {
  die("

エラー: {$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

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632893.html技術記事 php5.3 以降のバージョンでは、php 管理 crontab 管理タスクを使用できます。以下に、学識が必要な友人が参照できます。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート