[英]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.