猿问

PHP - 将 crontab 保存到数据库

我有一个变量,其中包含可以在 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 /,但我想将整个命令保存在一个名为“命令”的表中。


哈士奇WWW
浏览 133回答 1
1回答

阿波罗的战车

将$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();}
随时随地看视频慕课网APP
我要回答