PHP code example of yzh52521 / schedule

1. Go to this page and download the library: Download yzh52521/schedule library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

yzh52521 / schedule example snippets


protected function schedule(Schedule $schedule): void
{
    $schedule->call(function () {
       Db::table('recent_users')->delete();
    })->daily();
}

$schedule->call(new DeleteRecentUsers)->daily();

php think schedule:list


use app\command\SendEmails;

$schedule->command('emails:send Taylor --force')->daily();

$schedule->command(SendEmails::class, ['Taylor', '--force'])->daily();


use app\jhobs\Heartbeat;

$schedule->job(new Heartbeat)->everyFiveMinutes();

use app\jobs\Heartbeat;
// 分发任务到「heartbeats」队列及「redis」连接...
$schedule->job(new Heartbeat, 'heartbeats', 'redis')->everyFiveMinutes();

$schedule->exec('node /home/forge/script.js')->daily();

// 在每周一 13:00 执行...
$schedule->call(function () {
    // ...
})->weekly()->mondays()->at('13:00');

// 在每个工作日 8:00 到 17:00 之间的每小时周期执行...
$schedule->command('foo')
          ->weekdays()
          ->hourly()
          ->timezone('America/Chicago')
          ->between('8:00', '17:00');

$schedule->command('email:send')
                ->hourly()
                ->days([0, 3]);

use schedule\scheduling\Schedule;

$schedule->command('email:send')
                ->hourly()
                ->days([Schedule::SUNDAY, Schedule::WEDNESDAY]);

$schedule->command('email:send')
                    ->hourly()
                    ->between('7:00', '22:00');

$schedule->command('email:send')
                    ->hourly()
                    ->unlessBetween('23:00', '4:00');

$schedule->command('email:send')->daily()->when(function () {
    return true;
});

$schedule->command('email:send')->daily()->skip(function () {
    return true;
});

$schedule->command('report:generate')
         ->timezone('America/New_York')
         ->at('2:00')

use DateTimeZone;

/**
 * 获取计划事件默认使用的时区
 */
protected function scheduleTimezone(): DateTimeZone|string|null
{
    return 'America/Chicago';
}

$schedule->command('email:send')->withoutOverlapping();

$schedule->command('email:send')->withoutOverlapping(10);

$schedule->command('report:generate')
                ->fridays()
                ->at('17:00')
                ->onOneServer();

$schedule->job(new CheckUptime('https://think.com'))
            ->name('check_uptime:think.com')
            ->everyFiveMinutes()
            ->onOneServer();

$schedule->job(new CheckUptime('https://vapor.think.com'))
            ->name('check_uptime:vapor.think.com')
            ->everyFiveMinutes()
            ->onOneServer();

$schedule->call(fn () => User::resetApiRequestCount())
    ->name('reset-api-request-count')
    ->daily()
    ->onOneServer();

$schedule->command('analytics:report')
         ->daily()
         ->runInBackground();

* * * * * cd /path-to-your-project && php think schedule:run >> /dev/null 2>&1

php think schedule:work

$schedule->command('email:send')
         ->daily()
         ->sendOutputTo($filePath);

$schedule->command('emails:send')
         ->daily()
         ->appendOutputTo($filePath);

$schedule->command('report:generate')
         ->daily()
         ->sendOutputTo($filePath)
         ->emailOutputTo('[email protected]');

$schedule->command('report:generate')
         ->daily()
         ->emailOutputOnFailure('[email protected]');

$schedule->command('email:send')
         ->daily()
         ->before(function () {
             // 任务即将执行。。。
         })
         ->after(function () {
             // 任务已经执行。。。
         });

$schedule->command('email:send')
         ->daily()
         ->onSuccess(function () {
             // 任务执行成功。。。
         })
         ->onFailure(function () {
             // 任务执行失败。。。
         });

$schedule->command('email:send')
         ->daily()
         ->pingBefore($url)
         ->thenPing($url);

$schedule->command('email:send')
         ->daily()
         ->pingBeforeIf($condition, $url)
         ->thenPingIf($condition, $url);

$schedule->command('email:send')
         ->daily()
         ->pingOnSuccess($successUrl)
         ->pingOnFailure($failureUrl);


'listen' => [
        'schedule\events\ScheduledTaskStarting' => [
            \app\listener\LogScheduledTaskStarting::class
        ],
        'schedule\events\ScheduledTaskFinished' => [
            \app\listener\LogScheduledTaskFinished::class,
        ],
        'schedule\events\ScheduledTaskSkipped' => [
            \app\listener\LogScheduledTaskSkipped::class,
        ],
        'schedule\events\ScheduledTaskFailed' => [
            \app\listener\LogScheduledTaskFailed::class,
        ],
];

php think schedule:init

namespace app;

use schedule\scheduling\ScheduleConsole;
use schedule\scheduling\Schedule;

class ConsoleScheduling extends ScheduleConsole
{
    /**
     * 定义任务计划
     * @param Schedule $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        $schedule->command("test")->onOneServer()->everyMinute();
        $schedule->exec('echo 555')->everyMinute();
        $schedule->call(function () {
            file_put_contents(runtime_path()."console-scheduling.log", time() . PHP_EOL, FILE_APPEND);
        })->everyMinute();
    }
}