繁体   English   中英

PHP - 将 crontab 保存到数据库

[英]PHP - Save crontab to the database

我有一个变量,其中包含可以在 linux 中创建的 3 个作业的列表,我想将每一行工作保存在我的数据库中:

$jobs = """
0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
"""
$array = explode(" ", $jobs);
$job = new Job;
$job->min = $array[0];
$job->hour = $array[1];
$job->day_month = $array[2];
$job->mes = $array[3];
$job->day_week = $array[4];
$job->command = "/bin/bash";
$job->save();

对我来说发生的问题是我只能设法保存第一行。 其他行没有保存,我认为这是因为它们之间有一个输入。

第二个问题是如何使用正则表达式仅获取我的作业的命令tar -zcf /var/backups/home.tgz / home /有空格但我想将整个命令保存在一个名为“命令”的表中.

$array将包含用空格分隔的所有单词。

[
 "0",
 "5",
 "*",
 "*",
 "1",
 "tar",
 "-zcf",
 "var/backups/home.tgz",
 "home\n0",
 "5",
 "*",
 "*",
 "1",
 ...
]

您需要分割线并循环它们。

对于第二个问题; 使用array_slice从数组中获取剩余的项目,然后使用implode加入它们。

$jobs = "
0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
";

$lines = explode("\n", trim($jobs));

foreach ($lines as $line) {
  $array = explode(" ", $line);
  $job = new Job;
  $job->min = $array[0];
  $job->hour = $array[1];
  $job->day_month = $array[2];
  $job->mes = $array[3];
  $job->day_week = $array[4];
  $job->command = implode(" ", array_slice($array, 5));
  $job->save();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM