为了账号安全,请及时绑定邮箱和手机立即绑定

PHP - 将 crontab 保存到数据库

PHP - 将 crontab 保存到数据库

PHP
哈士奇WWW 2023-06-18 16:07:05
我有一个变量,其中包含可以在 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 /,但我想将整个命令保存在一个名为“命令”的表中。
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

将$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();

}


查看完整回答
反对 回复 2023-06-18
  • 1 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信