加纳尼亚/沙姆斯克

1.0.1 2022-07-20 19:27 UTC

This package is auto-updated.

Last update: 2024-09-21 00:44:23 UTC


README

沙姆斯克

可能你遇到过这样的情况:你想在你的项目中使用CronJob,但发现无法管理太阳历中的确切日期。

例如,cron job允许你在特定的星期几、月份运行你的脚本!但CronJob支持公历。对于太阳日期来说,这毫无用处或准确性较低!

此包允许你在PHP代码内部解决这个问题。

此包支持 PHP 8.1+

安装

通过Composer

$ composer require ghaninia/shamsic

使用方法

你需要在服务器上配置cron job,下面的crontab命令将自动每分钟激活cron任务。

* * * * * php output.php

'*'是一个通配符,表示“每次”。如果你对CronJob表达式没有背景知识,或者对此感到困惑,请参考链接 crontab

.---------------- minute (0 - 59) 
|  .------------- hour (0 - 23)
|  |  .---------- day of month (1 - 31)
|  |  |  .------- month (1 - 12) 
|  |  |  |  .---- day of week (0 - 6) 
|  |  |  |  |
*  *  *  *  *  command to be executed

cronJob的最后三个表达式用于月份中的日期、月份和星期几(我们的主要问题)。

现在,打开Cron Job将要执行的文件(例如output.php)。

use GhaniniaIR\Shamsic\Schedule;

### At every minute on saturday in farvardin.
(new Schedule)
    ->call(function(){
        echo "test";
    })
    ->cron("* * * 1 2");

### At every minute on every day-of-week from saturday through thursday in khordad.
(new Schedule)
    ->call(function(){
        echo "test";
    })
    ->cron("* * * 3 1-5");

... 


### After writing all the schedules, you must run them
Schedule::run();

如果你想检查你的表达式是否有效

(new ExecuteExpression("* * * * *"))->isValid();