mybuilder / cronos
通过PHP配置cron任务
4.0.0
2023-01-03 16:44 UTC
Requires
- php: >=8.0.2
- symfony/process: ^4.4|^5.4|^6.0
Requires (Dev)
- phpunit/phpunit: ^9.5
- symfony/filesystem: ^4.4|^5.4|^6.0
Suggests
- symfony/filesystem: Allows using Symfony Filesystem
README
通过PHP轻松配置cron。
如果您使用Symfony 4/5/6,可以使用我们的酷.bundle,通过花哨的注解来配置您的应用工作!
设置和配置
通过composer引入库
composer require mybuilder/cronos
用法
构建Cron
<?php require 'vendor/autoload.php'; $cron = new MyBuilder\Cronos\Formatter\Cron; $cron ->header() ->setPath('path') ->setHome('home') ->setMailto('test@example.com') ->setShell('shell') ->setContentType('text') ->setContentTransferEncoding('utf8') ->end() ->comment('Comment') ->job('/bin/bash command --env=dev') ->setMinute(1) ->setHour(2) ->setDayOfMonth(3) ->setMonth(4) ->setDayOfWeek(5) ->setStandardOutFile('log') ->appendStandardErrorToFile('error') ->end(); echo $cron->format();
这将打印
MAILTO=test@example.com
HOME=home
SHELL=shell
LOGNAME=logName
CONTENT_TYPE=text
CONTENT_TRANSFER_ENCODING=utf8
#Comment
1 2 3 4 5 /bin/bash command --env=dev > log 2>> error
更新Cron
<?php require 'vendor/autoload.php'; use MyBuilder\Cronos\Formatter\Cron; use MyBuilder\Cronos\Updater\CronUpdater; $cron = new Cron; // $cron configuration... $cronUpdater = CronUpdater::createDefault(); $cronUpdater->replaceWith($cron);
故障排除
- 当前用户必须有一个现有的crontab文件才能使用更新器,使用
crontab -e
来创建一个。 - 当cron行被执行时,它将以拥有crontab的用户执行,但它不会执行任何用户的默认shell文件,所以所有路径等都需要在cron行调用的命令中指定。
- 如果您没有在
/etc/passwd
中可用的shell,您的crontab将不会执行。 - 如果您的作业似乎没有运行,请检查cron守护进程正在运行,同时检查您的用户名是否在
/etc/cron.allow
中,而不是在/etc/cron.deny
中。 - 环境变量替换不起作用,您不能使用像
$PATH
、$HOME
或~/sbin
这样的东西。 - 您不能在命令中使用
%
,如果您需要使用它,请使用反引号转义命令。