Cron jobs scheduler for Spiral Framework

Overview

Cron jobs scheduler for Spiral Framework

PHP Latest Version on Packagist GitHub Tests Action Status Total Downloads

This is a cron jobs scheduler that can be easily integrated with your project based on spiral framework. The idea was originally inspired by the Laravel Task Scheduling.

Requirements

Make sure that your server is configured with following PHP version and extensions:

  • PHP 8.0+
  • Spiral framework 2.9+

Installation

You can install the package via composer:

composer require spiral-packages/scheduler

After package install you need to add bootloader from the package to your application.

use Spiral\Scheduler\Bootloader\SchedulerBootloader;

protected const LOAD = [
    // ...
    SchedulerBootloader::class,
];

At first you need to create config file app/config/scheduler.php



declare(strict_types=1);

$generator = \Butschster\CronExpression\Generator::create();

return [
    'queueConnection' => env('SCHEDULER_QUEUE_CONNECTION', 'sync'),
    'cacheStorage' => env('SCHEDULER_CACHE_STORAGE', 'redis'), // for mutexes
    'timezone' => 'UTC',
    'expression' => [
        'aliases' => [
            '@everyFiveMinutes' => (string)$generator->everyFiveMinutes(),
            '@everyFifteenMinutes' => (string)$generator->everyFifteenMinutes(),
        ],
    ],
];

Add a cron configuration entry to our server that runs the schedule:run command every minute.

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

If you don't have crontab or you want to run schedule via RoadRunner, you may use the schedule:work command.This command will run in the foreground and invoke the scheduler every minute until you terminate the command:

php app.php schedule:work

Or via RoadRunner

service:
  cron_worker:
    command: "php app.php schedule:work"
    process_num: 1
    exec_timeout: 0
    remain_after_exit: true
    restart_sec: 1

Read more about RoadRunner configuration in the official documentation

Usage

Create a new bootloader, for example, SchedulerBootloader in your application

use Spiral\Boot\Bootloader\Bootloader;
use App\Scheduling\Schedule;
use Psr\Log\LoggerInterface;

final class SchedulerBootloader extends Bootloader
{
    public function start(Schedule $schedule): void
    {
        // Run command by name
        $schedule->command('ping', ['https://google.com'])
            ->everyFiveMinutes()
            ->withoutOverlapping()
            ->appendOutputTo(directory('runtime').'logs/cron.log');
            
            
        // Run command by class
        $schedule->command(Command\PingCommand::class, ['https://google.com'])
            ->everyFiveMinutes()
            ->withoutOverlapping()
            ->appendOutputTo(directory('runtime').'logs/cron.log');
            
        // Run callable command
        $schedule->call('Ping url', static function (LoggerInterface $logger, string $url) {
            $headers = @get_headers($url);
            $status = $headers && strpos($headers[0], '200');

            $logger->info(sprintf('URL: %s %s', $url, $status ? 'Exists' : 'Does not exist'));

            return $status;
        }, ['url' => 'https://google.com'])->everyFiveMinutes()->withoutOverlapping();
    }
}

You can also register scheduler jobs via PHP attributes

use Spiral\Scheduler\Attribute\Schedule;

#[Schedule(
    expression: '@everyFiveMinutes',
    name: 'Ping url', 
    parameters: ['url' => 'https://google.com'],
    withoutOverlapping: true,
    runAs: 'root',
    runInBackground: true
)]
class SimpleJob
{
    public function __construct(
        private LoggerInterface $logger
    )  {
        
    }
    
    public function run(LoggerInterface $logger, string $url)
    {
        $headers = @get_headers($url);
        $status = $headers && \strpos($headers[0], '200');

        $this->logger->info(\sprintf('URL: %s %s', $url, $status ? 'Exists' : 'Does not exist'));
    }
}

Testing

composer test

If you are using spiral/testing package in your application, you can additionally use trait Spiral\Scheduler\Testing\InteractsWithSchedule in your tests cases.

class MyJobSchedulingTest extends TestCase
{
    use \Spiral\Scheduler\Testing\InteractsWithSchedule;

    public function testCheckIfJobRun(): void
    {
        $scheduler = $this->runScheduler('*/15 * * * *');
        
        $scheduler->assertHandled(function (\Spiral\Scheduler\Job\Job $job) {
            return $job->getName() === 'My super job';
        });
        
        $scheduler->assertHandledTotalJobs(5);
    }
}

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.

Comments
  • Bump nick-invision/retry from 2.8.1 to 2.8.2

    Bump nick-invision/retry from 2.8.1 to 2.8.2

    Bumps nick-invision/retry from 2.8.1 to 2.8.2.

    Release notes

    Sourced from nick-invision/retry's releases.

    v2.8.2

    2.8.2 (2022-10-15)

    Bug Fixes

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 1
  • Bump nick-invision/retry from 2.6.0 to 2.8.1

    Bump nick-invision/retry from 2.6.0 to 2.8.1

    Bumps nick-invision/retry from 2.6.0 to 2.8.1.

    Release notes

    Sourced from nick-invision/retry's releases.

    v2.8.1

    Refactor to make testing easier

    v2.8.0

    Use spawn rather than exec to support much larger outputs

    v2.7.1

    2.7.1 (2022-08-03)

    This release contains mostly dependency updates. There are a few very minor changes to runtime code based on development quality of life improvements from newly configured linting and styling.

    v2.7.0

    2.7.0 (2022-04-26)

    Features

    • retry only on specific exit code (#58) (f227091)

    Misc

    • Various dependabot updates
    Commits
    • b4fa575 Refactor to make testing easier (#90)
    • 616fa81 Use spawn not exec to run commands (#88)
    • a25f198 Setup tests (#87)
    • 0f986c4 [Snyk] Upgrade @​actions/core from 1.8.2 to 1.9.0 (#81)
    • 3dad7de Setup prettier and eslint and run pre-commit (#86)
    • 14b6b46 patch: update typescript to latest (#85)
    • f2eb0f4 build(deps): bump npm from 8.7.0 to 8.12.2 (#78)
    • 2762157 build(deps): bump semver-regex from 3.1.3 to 3.1.4 (#72)
    • ce44dab [Snyk] Upgrade @​actions/core from 1.5.0 to 1.8.2 (#73)
    • 40cf388 build(deps-dev): bump semantic-release from 19.0.2 to 19.0.3 (#75)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 1
  • Bump nick-invision/retry from 2.7.0 to 2.8.1

    Bump nick-invision/retry from 2.7.0 to 2.8.1

    Bumps nick-invision/retry from 2.7.0 to 2.8.1.

    Release notes

    Sourced from nick-invision/retry's releases.

    v2.8.1

    Refactor to make testing easier

    v2.8.0

    Use spawn rather than exec to support much larger outputs

    v2.7.1

    2.7.1 (2022-08-03)

    This release contains mostly dependency updates. There are a few very minor changes to runtime code based on development quality of life improvements from newly configured linting and styling.

    Commits
    • b4fa575 Refactor to make testing easier (#90)
    • 616fa81 Use spawn not exec to run commands (#88)
    • a25f198 Setup tests (#87)
    • 0f986c4 [Snyk] Upgrade @​actions/core from 1.8.2 to 1.9.0 (#81)
    • 3dad7de Setup prettier and eslint and run pre-commit (#86)
    • 14b6b46 patch: update typescript to latest (#85)
    • f2eb0f4 build(deps): bump npm from 8.7.0 to 8.12.2 (#78)
    • 2762157 build(deps): bump semver-regex from 3.1.3 to 3.1.4 (#72)
    • ce44dab [Snyk] Upgrade @​actions/core from 1.5.0 to 1.8.2 (#73)
    • 40cf388 build(deps-dev): bump semantic-release from 19.0.2 to 19.0.3 (#75)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 1
  • Bump nick-invision/retry from 2.6.0 to 2.7.0

    Bump nick-invision/retry from 2.6.0 to 2.7.0

    Bumps nick-invision/retry from 2.6.0 to 2.7.0.

    Release notes

    Sourced from nick-invision/retry's releases.

    v2.7.0

    2.7.0 (2022-04-26)

    Features

    • retry only on specific exit code (#58) (f227091)

    Misc

    • Various dependabot updates
    Commits
    • e88a999 Merge pull request #60 from nick-fields/dependabot/npm_and_yarn/trim-off-newl...
    • 5f63400 Merge pull request #61 from nick-fields/dependabot/npm_and_yarn/tar-4.4.19
    • c0687a0 Merge pull request #59 from nick-fields/dependabot/npm_and_yarn/node-fetch-2.6.7
    • 102f21a Merge pull request #56 from nick-fields/dependabot/npm_and_yarn/minimist-1.2.6
    • 752366e build(deps): bump tar from 4.4.13 to 4.4.19
    • a3da592 build(deps): bump trim-off-newlines from 1.0.1 to 1.0.3
    • 7c5cca7 build(deps): bump node-fetch from 2.6.1 to 2.6.7
    • f227091 feat: retry only on specific exit code (#58)
    • 6183d5c build(deps): bump minimist from 1.2.5 to 1.2.6
    • 7106228 Merge pull request #55 from jameswald/patch-1
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 1
  • Bump actions/cache from 2.1.7 to 3

    Bump actions/cache from 2.1.7 to 3

    Bumps actions/cache from 2.1.7 to 3.

    Release notes

    Sourced from actions/cache's releases.

    v3.0.0

    • This change adds a minimum runner version(node12 -> node16), which can break users using an out-of-date/fork of the runner. This would be most commonly affecting users on GHES 3.3 or before, as those runners do not support node16 actions and they can use actions from github.com via github connect or manually copying the repo to their GHES instance.

    • Few dependencies and cache action usage examples have also been updated.

    Commits
    • 4b0cf6c Merge pull request #769 from actions/users/ashwinsangem/bump_major_version
    • 60c606a Update licensed files
    • b6e9a91 Revert "Updated to the latest version."
    • c842503 Updated to the latest version.
    • 2b7da2a Bumped up to a major version.
    • deae296 Merge pull request #651 from magnetikonline/fix-golang-windows-example
    • c7c46bc Merge pull request #707 from duxtland/main
    • 6535c5f Regenerated examples.md TOC
    • 3fdafa4 Update GitHub Actions status badge markdown in README.md
    • 341e6d7 Merge branch 'actions:main' into fix-golang-windows-example
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 1
  • Bump actions/checkout from 2 to 3

    Bump actions/checkout from 2 to 3

    Bumps actions/checkout from 2 to 3.

    Release notes

    Sourced from actions/checkout's releases.

    v3.0.0

    • Update default runtime to node16

    v2.4.0

    • Convert SSH URLs like org-<ORG_ID>@github.com: to https://github.com/ - pr

    v2.3.5

    Update dependencies

    v2.3.4

    v2.3.3

    v2.3.2

    Add Third Party License Information to Dist Files

    v2.3.1

    Fix default branch resolution for .wiki and when using SSH

    v2.3.0

    Fallback to the default branch

    v2.2.0

    Fetch all history for all tags and branches when fetch-depth=0

    v2.1.1

    Changes to support GHES (here and here)

    v2.1.0

    Changelog

    Sourced from actions/checkout's changelog.

    Changelog

    v2.3.1

    v2.3.0

    v2.2.0

    v2.1.1

    • Changes to support GHES (here and here)

    v2.1.0

    v2.0.0

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 1
  • Bump nick-invision/retry from 1 to 2.6.0

    Bump nick-invision/retry from 1 to 2.6.0

    Bumps nick-invision/retry from 1 to 2.6.0.

    Release notes

    Sourced from nick-invision/retry's releases.

    v2.6.0

    2.6.0 (2021-12-10)

    v2.5.1

    2.5.1 (2021-10-24)

    Bug Fixes

    • incorrect option for continue_on_error (e80198a)

    v2.5.0

    2.5.0 (2021-10-07)

    v2.4.1

    2.4.1 (2021-06-10)

    v2.4.0

    2.4.0 (2021-01-04)

    Dependency Bumps

    Features

    • Add optional on_retry_command input to allow command to return before a retry is attempted. (7c68161)

    v2.3.0

    2.3.0 (2021-01-02)

    Bug Fixes

    • dont require OS input and use correct shell per os (d0aac35)

    Features

    • add SHELL input support (877a0ac)

    v2.2.0

    2.2.0 (2020-11-18)

    ... (truncated)

    Commits
    • 7f8f3d9 Merge pull request #50 from asnewman/new-command-on-retry-feature
    • bf1736e minor: regenerate dist
    • f7cf641 Add new_command_on_retry
    • 002ef57 Merge pull request #49 from lwhiteley/patch-1
    • e80198a fix: incorrect option for continue_on_error
    • c77dc43 Merge pull request #48 from nick-invision/nrf/continue-on-error
    • 0019811 docs: update README with new input and usage
    • a63662d patch: refresh from master
    • 67e1bdf minor: add continue_on_error input option
    • 45ba062 Merge pull request #42 from nick-invision/nrf/add-multiline-example
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 1
  • Bump actions/cache from 1 to 2.1.7

    Bump actions/cache from 1 to 2.1.7

    Bumps actions/cache from 1 to 2.1.7.

    Release notes

    Sourced from actions/cache's releases.

    v2.1.7

    Support 10GB cache upload using the latest version 1.0.8 of @actions/cache

    v2.1.6

    • Catch unhandled "bad file descriptor" errors that sometimes occurs when the cache server returns non-successful response (actions/cache#596)

    v2.1.5

    • Fix permissions error seen when extracting caches with GNU tar that were previously created using BSD tar (actions/cache#527)

    v2.1.4

    • Make caching more verbose #650
    • Use GNU tar on macOS if available #701

    v2.1.3

    • Upgrades @actions/core to v1.2.6 for CVE-2020-15228. This action was not using the affected methods.
    • Fix error handling in uploadChunk where 400-level errors were not being detected and handled correctly

    v2.1.2

    • Adds input to limit the chunk upload size, useful for self-hosted runners with slower upload speeds
    • No-op when executing on GHES

    v2.1.1

    • Update @actions/cache package to v1.0.2 which allows cache action to use posix format when taring files.

    v2.1.0

    • Replaces the http-client with the Azure Storage SDK for NodeJS when downloading cache content from Azure. This should help improve download performance and reliability as the SDK downloads files in 4 MB chunks, which can be parallelized and retried independently
    • Display download progress and speed

    v2.0.0

    Initial v2 release

    What's new in v2

    v1.2.0

    Bug Fixes

    • Fall back to GNU tar on older versions of Windows that do not have BSD tar installed (#252)
    • Fixed chunk upload retry logic (#305)

    Improvements

    • Improved reliability of the download cache APIs (#269)
    • Added retries to API calls that failed due to retryable errors (#306)
    • Improved error handling during both cache upload (#300) and download (#284)

    ... (truncated)

    Commits
    • 937d244 bumping up action version to 2.1.7 (#683)
    • eb0698d Bumping up @​actions/cache version to 1.0.8 (#682)
    • 67b6d52 (R renv) Remove unused renv-cache-path variable (#663)
    • 92f67a4 (R renv) Fix Renv package cache location in examples (#660)
    • 6bbe742 Use existing check-dist implementation (#618)
    • c9db520 Create check-dist.yml (#604)
    • 10906ba Bump ws from 5.2.2 to 5.2.3 (#610)
    • 2ebdcff Add "see more" link to GHE-not-supported warning (#609)
    • 5807af2 Fix bugs in example of how to use with pipenv (#607)
    • 0638051 Golang example tweak - add go-build path - rebuild page TOC (#577)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 1
  • Adding CacheBootloader to the DEPENDENCIES

    Adding CacheBootloader to the DEPENDENCIES

    If we don't manually add Spiral\Cache\Bootloader\CacheBootloader, an error has occurred:

    [Spiral\Core\Exception\Container\NotFoundException]                                                                             
     Can't resolve `Spiral\Scheduler\JobsLocatorInterface`: undefined class or binding `Spiral\Cache\CacheStorageProviderInterface`.
     Container trace list:
     - action: 'resolve from binding'
       alias: 'Spiral\Scheduler\JobsLocatorInterface'
       context: 'locator'
       binding: [
         0: 'Spiral\Scheduler\JobsLocator',
         1: true
       ]
       - action: 'resolve from binding'
         alias: 'Spiral\Scheduler\JobsLocator'
         context: 'locator'
         binding: [
           0: [
             0: 'Spiral\Scheduler\Bootloader\SchedulerBootloader',
             1: 'initJobsLocator'
           ],
           1: true
         ]
         - action: 'resolve from binding'
           alias: 'Spiral\Scheduler\Mutex\JobMutexInterface'
           context: 'mutex'
           binding: [
             0: [
               0: 'Spiral\Scheduler\Bootloader\SchedulerBootloader',
               1: 'initEventMutex'
             ],
             1: true
           ]
           - action: 'autowire'
             alias: 'Spiral\Cache\CacheStorageProviderInterface'
             context: 'provider'
    
    
    bug 
    opened by msmakouz 0
Releases(2.1.0)
Owner
Non official Spiral framework packages
Non official Spiral framework packages
Slim 3 skeleton working with Google App Engine include cron configuration.

Slim3 GAE Skeleton Slim 3 skeleton working with Google App Engine include cron configuration. Demo https://slim3-gae-skeleton.appspot.com/health_check

Jared Chu 2 May 10, 2018
CleverStyle Framework is simple, scalable, fast and secure full-stack PHP framework

CleverStyle Framework is simple, scalable, fast and secure full-stack PHP framework. It is free, Open Source and is distributed under Free Public Lice

Nazar Mokrynskyi 150 Apr 12, 2022
I made my own simple php framework inspired from laravel framework.

Simple MVC About Since 2019, I started learning the php programming language and have worked on many projects using the php framework. Laravel is one

null 14 Aug 14, 2022
PHPR or PHP Array Framework is a framework highly dependent to an array structure.

this is new repository for php-framework Introduction PHPR or PHP Array Framework is a framework highly dependent to an array structure. PHPR Framewor

Agung Zon Blade 2 Feb 12, 2022
I made my own simple php framework inspired from laravel framework.

Simple MVC About Since 2019, I started learning the php programming language and have worked on many projects using the php framework. Laravel is one

Rizky Alamsyah 14 Aug 14, 2022
Framework X – the simple and fast micro framework for building reactive web applications that run anywhere.

Framework X Framework X – the simple and fast micro framework for building reactive web applications that run anywhere. Quickstart Documentation Tests

Christian Lück 620 Jan 7, 2023
Framework X is a simple and fast micro framework based on PHP

Framework X is a simple and fast micro framework based on PHP. I've created a simple CRUD application to understand how it works. I used twig and I created a custom middleware to handle PUT, DELETE methods.

Mahmut Bayri 6 Oct 14, 2022
Sunhill Framework is a simple, fast, and powerful PHP App Development Framework

Sunhill Framework is a simple, fast, and powerful PHP App Development Framework that enables you to develop more modern applications by using MVC (Model - View - Controller) pattern.

Mehmet Selcuk Batal 3 Dec 29, 2022
A PHP framework for web artisans.

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

The Laravel Framework 72k Jan 7, 2023
The Symfony PHP framework

Symfony is a PHP framework for web and console applications and a set of reusable PHP components. Symfony is used by thousands of web applications (in

Symfony 27.8k Jan 2, 2023
Open Source PHP Framework (originally from EllisLab)

What is CodeIgniter CodeIgniter is an Application Development Framework - a toolkit - for people who build web sites using PHP. Its goal is to enable

B.C. Institute of Technology 18.2k Dec 29, 2022
Yii 2: The Fast, Secure and Professional PHP Framework

Yii 2 is a modern framework designed to be a solid foundation for your PHP application. It is fast, secure and efficient and works right out of the bo

Yii Software 14k Dec 31, 2022
CakePHP: The Rapid Development Framework for PHP - Official Repository

CakePHP is a rapid development framework for PHP which uses commonly known design patterns like Associative Data Mapping, Front Controller, and MVC. O

CakePHP 8.6k Dec 31, 2022
Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs.

Slim Framework Slim is a PHP micro-framework that helps you quickly write simple yet powerful web applications and APIs. Installation It's recommended

Slim Framework 11.5k Jan 4, 2023
High performance, full-stack PHP framework delivered as a C extension.

Phalcon Framework Phalcon is an open source web framework delivered as a C extension for the PHP language providing high performance and lower resourc

The Phalcon PHP Framework 10.7k Jan 8, 2023
Official Zend Framework repository

Welcome to the Zend Framework 3.0 Release! RELEASE INFORMATION Zend Framework 3.0.1dev This is the first maintenance release for the Zend Framework 3

Zend Framework 5.6k Dec 29, 2022
🚀 PHP Microservice Full Coroutine Framework

PHP microservice coroutine framework 中文说明 Introduction Swoft is a PHP microservices coroutine framework based on the Swoole extension. Like Go, Swoft

Swoft Cloud 5.5k Dec 28, 2022
Open Source PHP Framework (originally from EllisLab)

CodeIgniter 4 Development What is CodeIgniter? CodeIgniter is a PHP full-stack web framework that is light, fast, flexible and secure. More informatio

CodeIgniter 4 web framework 4.5k Jan 2, 2023
FuelPHP v1.x is a simple, flexible, community driven PHP 5.3+ framework, based on the best ideas of other frameworks, with a fresh start! FuelPHP is fully PHP 7 compatible.

FuelPHP Version: 1.8.2 Website Release Documentation Release API browser Development branch Documentation Development branch API browser Support Forum

Fuel 1.5k Dec 28, 2022