Dispatcher is a Laravel artisan command scheduling tool used to schedule artisan commands within your project so you don't need to touch your crontab when deploying.

Overview

Dispatcher

Dispatcher allows you to schedule your artisan commands within your Laravel project, eliminating the need to touch the crontab when deploying. It also allows commands to run per environment and keeps your scheduling logic where it should be, in your version control.

use Indatus\Dispatcher\Scheduling\ScheduledCommand;
use Indatus\Dispatcher\Scheduling\Schedulable;
use Indatus\Dispatcher\Drivers\DateTime\Scheduler;

class MyCommand extends ScheduledCommand {
	public function schedule(Schedulable $scheduler)
	{
        //every day at 4:17am
        return $scheduler
            ->daily()
            ->hours(4)
            ->minutes(17);
    }
}

Latest Stable Version Total Downloads Build Status Code Coverage Scrutinizer Code Quality

README Contents

## Features
  • Schedule artisan commands to run automatically
  • Scheduling is maintained within your version control system
  • Single source of truth for when and where commands run
  • Schedule commands to run with arguments and options
  • Run commands as other users
  • Run commands in certain environments
  • Use custom drivers for custom scheduling contexts
## Tutorial

By Ben Kuhl at the Laravel Louisville meetup (@lurvul): Video - Slides

By Jefferey Way at Laracasts: Recurring Tasks the Laravel Way

## Installation

NOTICE: Laravel 5 now includes scheduling out of the box. This package will no longer be maintained for Laravel 5 and above

Requirements 1.4.* 2.*
Laravel 4.1/4.2 5.x
PHP 5.3+ 5.4+
HHVM 3.3+ 3.3+
Install with Composer... ~1.4 [email protected]

If you're using Laravel 4 view the readme in the 1.4 branch

Add this line to the providers array in your config/app.php file :

        'Indatus\Dispatcher\ServiceProvider',

Add the following to your root Crontab (via sudo crontab -e):

* * * * * php /path/to/artisan scheduled:run 1>> /dev/null 2>&1

If you are adding this to /etc/cron.d you'll need to specify a user immediately after * * * * *.

You may add this to any user's Crontab, but only the root crontab can run commands as other users.

### Upgrading from 1.4 to 2.0

In all scheduled commands...

## Usage
scheduled
  scheduled:make              Create a new scheduled artisan command
  scheduled:run               Run scheduled commands
  scheduled:summary           View a summary of all scheduled artisan commands

If commands are not visible via php artisan then they cannot be scheduled.

### Generating New Scheduled Commands

Use php artisan scheduled:make to generate a new scheduled command, the same way you would use artisan's command:make. Then register your command with Laravel.

### Scheduling Existing Commands

You may either implement \Indatus\Dispatcher\Scheduling\ScheduledCommandInterface or follow the below steps.

  1. Add use statements to your command. If you're using a custom driver you will use a different Scheduler class.
use Indatus\Dispatcher\Scheduling\ScheduledCommand;
use Indatus\Dispatcher\Scheduling\Schedulable;
use Indatus\Dispatcher\Drivers\DateTime\Scheduler;
  1. Extend \Indatus\Dispatcher\Scheduling\ScheduledCommand
  2. Implement schedule():
	/**
	 * When a command should run
	 *
	 * @param Scheduler $scheduler
	 *
	 * @return Scheduler
	 */
	public function schedule(Schedulable $scheduler)
	{
		return $scheduler;
    }

For details and examples on how to schedule, see the DateTime Driver.

### Running Commands As Users

You may override user() to run a given artisan command as a specific user. Ensure your scheduled:run artisan command is running as root.

    public function user()
    {
        return 'backup';
    }

This feature may not be supported by all drivers.

### Environment-Specific Commands

You may override environment() to ensure your command is only scheduled in specific environments. It should provide a single environment or an array of environments.

    public function environment()
    {
        return ['development','staging'];
    }
### Maintenance Mode

By default, cron commands will not run when application is in Maintenance Mode. This will prevent all sorts of weird output that might occur if a cron command is run while you are migrating a database or doing a composer update.

You may override runInMaintenanceMode() to force your command to still be run while the application is in maintenance mode.

    public function runInMaintenanceMode()
    {
        return true;
    }
### Advanced scheduling

You may schedule a given command to to run at multiple times by schedule() returning multiple Schedulable instances.

	public function schedule(Schedulable $scheduler)
	{
        return [
            // 5am Mon-Fri
            $scheduler->everyWeekday()->hours(5),

            // 2am every Saturday
            App::make(get_class($scheduler))
                ->daysOfTheWeek(Scheduler::SATURDAY)
                ->hours(2)
        ];
    }

You may also schedule a command to run with arguments and options.

	public function schedule(Schedulable $scheduler)
	{
		return [
            // equivalent to: php /path/to/artisan command:name /path/to/file
            $scheduler->args(['/path/to/file'])
                ->everyWeekday()
                ->hours(5),

            // equivalent to: php /path/to/artisan command:name /path/to/file --force --toDelete="expired" --exclude="admins" --exclude="developers"
            $scheduler->args(['/path/to/file'])
                ->opts([
                    'force',
                    'toDelete' => 'expired',
                    'exclude' => [
                        'admins',
                        'developers'
                    ]
                ])
                ->daysOfTheMonth([1, 15])
                ->hours(2)
        ];
	}

NOTE: Both args() and opts(), whichever is called first, will internally create a new Schedulable instance for you so you don't need to App::make().

## Drivers

Drivers provide the ability to add additional context to your scheduling. Building custom drivers is a great way to customize this context to your application's needs.

### DateTime (Default)

Examples of how to schedule:

	public function schedule(Schedulable $scheduler)
	{
        //every day at 4:17am
        return $scheduler->daily()->hours(4)->minutes(17);
    }
	public function schedule(Schedulable $scheduler)
	{
        //every Tuesday/Thursday at 5:03am
        return $scheduler->daysOfTheWeek([
                Scheduler::TUESDAY,
                Scheduler::THURSDAY
            ])->hours(5)->minutes(3);
    }
	public function schedule(Schedulable $scheduler)
	{
        //the second and third Tuesday of every month at 12am
        return $scheduler->monthly()->week([2, 3])->daysOfTheWeek(Day::TUESDAY);
    }
## Custom Drivers

Custom drivers allow you to provide application context within scheduling. For example, an education-based application may contain scheduling methods like inServiceDays(), springBreak() and christmasBreak() where commands are run or don't run during those times.

Create a packagepath such as \MyApp\ScheduleDriver\ and create two classes:

  • Scheduler that implements Indatus\Dispatcher\Scheduling\Schedulable. This class should provide a useful interface for programmers to schedule their commands.
  • ScheduleService that extends \Indatus\Dispatcher\Services\ScheduleService. This class contains logic on how to determine if a command is due to run.

Publish the configs using php artisan config:publish indatus/dispatcher. Then update your driver configuration to reference the package in which these 2 classes are included (do not include a trailing slash):

    'driver' => '\MyApp\ScheduleDriver'
## FAQ

I need to deploy to multiple servers representing a single environment. How can I be sure my command is only run by a single server and not run on each server?

Schedule scheduled:run to run every minute with rcron:

* * * * * /usr/bin/rcron php /path/to/artisan scheduled:run 1>> /dev/null 2>&1

Why are my commands not running when I've scheduled them correctly? I'm also not seeing any error output

  1. Verify that mcrypt is installed and working correctly via the command php -i | mcrypt.

  2. Utilizing php artisan scheduled:run --debug will tell you why they're not running. If you do not see your command listed here then it is not set up correctly.

Example:

$ php artisan scheduled:run --debug                                                                                        
Running commands...
     backup:avatars: No schedules were due
     command:name: No schedules were due
     myTestCommand:name: No schedules were due
     cache:clean: /usr/bin/env php /Users/myUser/myApp/artisan cache:clean > /dev/null &
     mail:subscribers: /usr/bin/env php /Users/myUser/myApp/artisan mail:subscribers > /dev/null &

I have commands that extend ScheduledCommand but why don't they appear in when I run scheduled:summary?

Commands that are disabled will not appear here. Check and be sure isEnabled() returns true on those commands.

Comments
  • exception 'InvalidArgumentException' with message 'There are no commands defined in the

    exception 'InvalidArgumentException' with message 'There are no commands defined in the "xxx" namespace.'

    I'm getting this error:

    [2014-08-24 20:19:02] staging.ERROR: exception 'InvalidArgumentException' with message 'There are no commands defined in the "trusty" namespace.' in /home/trustywebapp/public_html/stagingtrusty/vendor/symfony/console/Symfony/Component/Console/Application.php:516 Stack trace: #0 /home/trustywebapp/public_html/stagingtrusty/vendor/symfony/console/Symfony/Component/Console/Application.php(550): Symfony\Component\Console\Application->findNamespace('trusty') #1 /home/trustywebapp/public_html/stagingtrusty/vendor/symfony/console/Symfony/Component/Console/Application.php(190): Symfony\Component\Console\Application->find('trusty:log') #2 /home/trustywebapp/public_html/stagingtrusty/vendor/symfony/console/Symfony/Component/Console/Application.php(124): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #3 /home/trustywebapp/public_html/stagingtrusty/artisan(58): Symfony\Component\Console\Application->run() #4 {main} [] []

    This is what I put in the cpanel cron job: php /home/trustywebapp/public_html/stagingtrusty/artisan scheduled:run 1>> /dev/null 2>&1

    Pls help.

    opened by nebestpal 27
  • 'ErrorException' with message 'Use of undefined constant STDOUT - assumed 'STDOUT'

    'ErrorException' with message 'Use of undefined constant STDOUT - assumed 'STDOUT'

    I'm just setting up Dispatcher to take over from our cron jobs but I'm seeing this error in my logs whenever a scheduled command is meant to run. The command does not end up completing any of the tasks it was meant to.

    Any ideas what could be going wrong here?

    [2014-05-23 12:28:02] production.ERROR: exception 'ErrorException' with message 'Use of undefined constant STDOUT - assumed 'STDOUT'' in /home/laravel/vendor/wp-cli/php-cli-tools/lib/cli/Shell.php:51
    Stack trace:
    #0 /home/laravel/vendor/wp-cli/php-cli-tools/lib/cli/Shell.php(51): Illuminate\Exception\Handler->handleError(8, 'Use of undefine...', '/home/laravel/...', 51, Array)
    #1 /home/laravel/vendor/wp-cli/php-cli-tools/lib/cli/Table.php(69): cli\Shell::isPiped()
    #2 [internal function]: cli\Table->__construct(NULL, NULL, NULL)
    #3 /home/laravel/bootstrap/compiled.php(254): ReflectionClass->newInstanceArgs(Array)
    #4 /home/laravel/bootstrap/compiled.php(212): Illuminate\Container\Container->build('Indatus\\Diipatt...', Array)
    #5 /home/laravel/bootstrap/compiled.php(586): Illuminate\Container\Container->make('Indatus\\Diipatt...', Array)
    #6 /home/laravel/bootstrap/compiled.php(283): Illuminate\Foundation\Application->make('Indatus\\Diipatt...')
    #7 /home/laravel/bootstrap/compiled.php(266): Illuminate\Container\Container->resolveClass(Object(ReflectionParameter))
    #8 /home/laravel/bootstrap/compiled.php(253): Illuminate\Container\Container->getDependencies(Array, Array)
    #9 /home/laravel/bootstrap/compiled.php(212): Illuminate\Container\Container->build('Indatus\\Diipatt...', Array)
    #10 /home/laravel/bootstrap/compiled.php(586): Illuminate\Container\Container->make('Indatus\\Diipatt...', Array)
    #11 /home/laravel/bootstrap/compiled.php(3163): Illuminate\Foundation\Application->make('Indatus\\Diipatt...')
    #12 /home/laravel/vendor/indatus/dispatcher/src/Indatus/Dispatcher/ConfigResolver.php(50): Illuminate\Support\Facades\Facade::__callStatic('make', Array)
    #13 /home/laravel/vendor/indatus/dispatcher/src/Indatus/Dispatcher/ConfigResolver.php(50): Illuminate\Support\Facades\App::make('Indatus\\Diipatt...')
    #14 /home/laravel/vendor/indatus/dispatcher/src/Indatus/Dispatcher/ServiceProvider.php(53): Indatus\Dispatcher\ConfigResolver->resolveServiceClass()
    #15 /home/laravel/bootstrap/compiled.php(240): Indatus\Dispatcher\ServiceProvider->Indatus\Dispatcher\{closure}(Object(Illuminate\Foundation\Application), Array)
    #16 /home/laravel/bootstrap/compiled.php(212): Illuminate\Container\Container->build(Object(Closure), Array)
    #17 /home/laravel/bootstrap/compiled.php(586): Illuminate\Container\Container->make('Indatus\\Diipatt...', Array)
    #18 /home/laravel/bootstrap/compiled.php(283): Illuminate\Foundation\Application->make('Indatus\\Diipatt...')
    #19 /home/laravel/bootstrap/compiled.php(266): Illuminate\Container\Container->resolveClass(Object(ReflectionParameter))
    #20 /home/laravel/bootstrap/compiled.php(253): Illuminate\Container\Container->getDependencies(Array, Array)
    #21 /home/laravel/bootstrap/compiled.php(212): Illuminate\Container\Container->build('Indatus\\Diipatt...', Array)
    #22 /home/laravel/bootstrap/compiled.php(586): Illuminate\Container\Container->make('Indatus\\Diipatt...', Array)
    #23 /home/laravel/bootstrap/compiled.php(3163): Illuminate\Foundation\Application->make('Indatus\\Diipatt...')
    #24 /home/laravel/vendor/indatus/dispatcher/src/Indatus/Dispatcher/ServiceProvider.php(81): Illuminate\Support\Facades\Facade::__callStatic('make', Array)
    #25 /home/laravel/vendor/indatus/dispatcher/src/Indatus/Dispatcher/ServiceProvider.php(81): Illuminate\Support\Facades\App::make('Indatus\\Diipatt...')
    #26 /home/laravel/bootstrap/compiled.php(125): Indatus\Dispatcher\ServiceProvider->Indatus\Dispatcher\{closure}(Object(Illuminate\Foundation\Application))
    #27 /home/laravel/bootstrap/compiled.php(240): Illuminate\Container\Container->Illuminate\Container\{closure}(Object(Illuminate\Foundation\Application), Array)
    #28 /home/laravel/bootstrap/compiled.php(212): Illuminate\Container\Container->build(Object(Closure), Array)
    #29 /home/laravel/bootstrap/compiled.php(586): Illuminate\Container\Container->make('command.schedul...', Array)
    #30 /home/laravel/bootstrap/compiled.php(363): Illuminate\Foundation\Application->make('command.schedul...')
    #31 /home/laravel/vendor/laravel/framework/src/Illuminate/Console/Application.php(134): Illuminate\Container\Container->offsetGet('command.schedul...')
    #32 /home/laravel/vendor/laravel/framework/src/Illuminate/Console/Application.php(149): Illuminate\Console\Application->resolve('command.schedul...')
    #33 /home/laravel/bootstrap/compiled.php(2912): Illuminate\Console\Application->resolveCommands(Array)
    #34 [internal function]: Illuminate\Support\ServiceProvider->Illuminate\Support\{closure}(Object(Illuminate\Console\Application))
    #35 /home/laravel/bootstrap/compiled.php(5805): call_user_func_array(Object(Closure), Array)
    #36 /home/laravel/vendor/laravel/framework/src/Illuminate/Console/Application.php(71): Illuminate\Events\Dispatcher->fire('artisan.start', Array)
    #37 /home/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Artisan.php(45): Illuminate\Console\Application->boot()
    #38 /home/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Artisan.php(57): Illuminate\Foundation\Artisan->getArtisan()
    #39 /home/laravel/bootstrap/compiled.php(3163): Illuminate\Foundation\Artisan->__call('add', Array)
    #40 /home/laravel/bootstrap/compiled.php(3163): Illuminate\Foundation\Artisan->add(Object(Books\AmazonOfferCommand))
    #41 /home/laravel/app/start/artisan.php(14): Illuminate\Support\Facades\Facade::__callStatic('add', Array)
    #42 /home/laravel/app/start/artisan.php(14): Illuminate\Support\Facades\Artisan::add(Object(Books\AmazonOfferCommand))
    #43 /home/laravel/vendor/laravel/framework/src/Illuminate/Console/Application.php(63): require('/home/laravel/...')
    #44 /home/laravel/vendor/laravel/framework/src/Illuminate/Console/Application.php(33): Illuminate\Console\Application->boot()
    #45 /home/laravel/artisan(45): Illuminate\Console\Application::start(Object(Illuminate\Foundation\Application))
    #46 {main} [] []
    
    opened by dwightwatson 22
  • Jobs never run

    Jobs never run

    I was really excited to see this come across Twitter today and started playing with it this afternoon. Unfortunately though, it doesn't look like it works at this point.

    I created a simple Artisan task to add a message to the log file. I manually set up a cronjob to run every minute that called the specific command and it did as expected. Updated the job to run through Dispatcher and nothing ever happens. I can run the job manually, but no matter what I change (setting it to run every minute, setting it on a schedule, running the scheduled:run command manually, etc.), the job never runs.

    Let me know what you need from me to help debug what might be going on. Thanks for the package!

    opened by agentphoenix 22
  • Class 'Orchestra\Testbench\TestCase' not found

    Class 'Orchestra\Testbench\TestCase' not found

    I'm a novice developer. I get the following error when I try to run PHPUnit on my project:

    PHP Fatal error: Class 'Orchestra\Testbench\TestCase' not found in .../laravel/vendor/indatus/dispatcher/tests/TestCase.php

    I'm not sure why it would look here for that file but I did not develop this app and the people that did are not reachable.

    My TestCase.php file DOES extend Orchestra/Testbench/TestCase so I have no idea why this error is being thrown. Sorry if this isn't the appropriate forum for this issue. Thanks in advance.

    opened by bpfruin 13
  • No alias in crontab

    No alias in crontab

    Hi again,

    In Unix system crontab "php .../artisan command" wont work. Need "/usr/bin/env php". Its defined in artisan.

    Can you fix this? I'm editing your class for this in my vendor folder.

    opened by mavci 13
  • Laravel 5.0

    Laravel 5.0

    Using Laravel 4.3, when I run composer update I am presented with the following error:

    PHP Fatal error: Class 'Illuminate\Foundation\Console\CommandMakeCommand' not found in /home/vagrant/Acme/vendor/indatus/dispatcher/src/Indatus/Dispatcher/Commands/Make.php on line 21

    opened by brandonleepeterson 12
  • Cannot get Laracast example to fire MAC OSX Mavricks

    Cannot get Laracast example to fire MAC OSX Mavricks

    Hi,

    I create the cron command file and start crontab. But it never fires. If I enter the command manually, it works. When do crontab -l it shows the job????

    • * * * * php /Users/jimm/WebProjects/laravel42/artisan scheduled:run 1>> /dev/null 2>&1
    opened by jimmck 12
  • Adding --env option to the run command

    Adding --env option to the run command

    Hi,

    What will be the best way to set scheduled:run to a custom environment? It is more of a feature request than an Issue.

    If I am not mistaken most of Laravel's commands can accept the --env option.

    enhancement 
    opened by MaxShv 12
  • L5 support broken?

    L5 support broken?

    Hi! Just got following error when tried to execute php artisan scheduled:run or scheduled:summary Latest laravel from "laravel/framework": "dev-master", dispatcher from "indatus/dispatcher": "dev-master",

    Fatal error: Call to undefined method App\Console\Kernel::all() in /home/vagrant/Code/gas/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php on line 205

    Call Stack: 0.0005 223472 1. {main}() /home/vagrant/Code/gas/artisan:0 0.1878 2488256 2. App\Console\Kernel->handle() /home/vagrant/Code/gas/artisan:46 0.1878 2488320 3. Illuminate\Foundation\Console\Kernel->handle() /home/vagrant/Code/gas/app/Console/Kernel.php:28 1.9346 14466744 4. Symfony\Component\Console\Application->run() /home/vagrant/Code/gas/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:69 1.9347 14467856 5. Symfony\Component\Console\Application->doRun() /home/vagrant/Code/gas/vendor/symfony/console/Symfony/Component/Console/Application.php:126 1.9348 14468776 6. Symfony\Component\Console\Application->doRunCommand() /home/vagrant/Code/gas/vendor/symfony/console/Symfony/Component/Console/Application.php:195 1.9348 14468944 7. Illuminate\Console\Command->run() /home/vagrant/Code/gas/vendor/symfony/console/Symfony/Component/Console/Application.php:874 1.9348 14469312 8. Symfony\Component\Console\Command\Command->run() /home/vagrant/Code/gas/vendor/laravel/framework/src/Illuminate/Console/Command.php:100 1.9350 14472848 9. Illuminate\Console\Command->execute() /home/vagrant/Code/gas/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:252 1.9350 14472960 10. Indatus\Dispatcher\Commands\Run->fire() /home/vagrant/Code/gas/vendor/laravel/framework/src/Illuminate/Console/Command.php:112 1.9464 14491880 11. Indatus\Dispatcher\Services\CommandService->runDue() /home/vagrant/Code/gas/vendor/indatus/dispatcher/src/Indatus/Dispatcher/Commands/Run.php:77 1.9532 14500720 12. Indatus\Dispatcher\Services\ScheduleService->getQueue() /home/vagrant/Code/gas/vendor/indatus/dispatcher/src/Indatus/Dispatcher/Services/CommandService.php:42 1.9599 14507104 13. Indatus\Dispatcher\Services\ScheduleService->getScheduledCommands() /home/vagrant/Code/gas/vendor/indatus/dispatcher/src/Indatus/Dispatcher/Services/ScheduleService.php:61 1.9626 14515224 14. Illuminate\Support\Facades\Artisan::all() /home/vagrant/Code/gas/vendor/indatus/dispatcher/src/Indatus/Dispatcher/Services/ScheduleService.php:38 1.9626 14515408 15. Illuminate\Support\Facades\Facade::__callStatic() /home/vagrant/Code/gas/vendor/indatus/dispatcher/src/Indatus/Dispatcher/Services/ScheduleService.php:38

    opened by kuramori 11
  • Command executing when not scheduled to do so...

    Command executing when not scheduled to do so...

    I have a command in my laravel project that is executing at midnight when it is not scheduled to do so. Does anyone know why this would happen?

    Here's my "schedule" function:

    public function schedule(Schedulable $scheduler) { return $scheduler->daily()->hours(7); }

    ...And here's the log output for today:

    [2014-10-17 00:00:19] production.INFO: Market Report for October, 2014 : TO USER #101 [] [] [2014-10-17 07:00:03] production.INFO: Market Report for October, 2014 : TO USER #101 [] []

    Not to complicate things, but the "every minute" cron is also setup to run as "root" (as suggested in the docs), and that causes other errors to occur when apache (via Laravel) tries to write to the log file later on.

    ANY help, suggestions or advice would be much appreciated.

    Thanks everyone!

    • Hugh
    opened by injeqt 11
  • Maintenance mode

    Maintenance mode

    I'm wondering if perhaps when the app is in "maintenance mode" that any attempts at running a cron should be blocked?

    Currently I now have to put something like this in all my commands

        public function fire()
        {
            if (App::isDownForMaintenance())
            {
                echo 'In maintenance mode - no cron task was run.';
            }
            else
            {
                // do cron task
            }
        }
    

    Otherwise there is a risk that if a cron task occurs during a Laravel upgrade, you'll get all sorts of weird output.

    Although I can see that perhaps some people do what a cron to run, even if in maintenance mode, so perhaps it needs to be a configurable option? Perhaps even a flag in the command itself, so some crons run in maintenance mode, while others do not?

    Happy to discuss - open to ideas/thoughts...

    opened by laurencei 10
Releases(v1.4.3)
  • v1.4.3(Mar 26, 2015)

  • v1.4.2(Mar 17, 2015)

  • v1.4.1(Sep 22, 2014)

    • Added a new config setting to customize the path to the php/hhvm executable - See #43

    Dispatcher will now be working towards a 2.0 release which will require PHP 5.4 and be compatible with Laravel 5 which is planned to be released in November. If you plan to continue using Laravel 4 for some time, you must configure your composer.json to use "indatus/dispatcher": "1.*". You may use the master branch to track progress towards 2.0.

    Source code(tar.gz)
    Source code(zip)
  • v1.4(Jul 28, 2014)

  • v1.3.1(Jul 17, 2014)

    • Fixed issue where a dependency loaded with the CRON driver was utilizing STDOUT in the constructor, leading to errors when using Artisan::call()
    Source code(tar.gz)
    Source code(zip)
  • v1.3(Jun 23, 2014)

    • Added full HHVM support
    • Added --debug flag for scheduled:run to output exactly why commands are not being executed
    • Fixed issue with commands not properly running on Windows
    Source code(tar.gz)
    Source code(zip)
  • v1.2.4(May 25, 2014)

  • v1.2.3(May 15, 2014)

    • Several methods that were accepting Indatus\Dispatcher\Scheduling\ScheduledCommand as parameter types are now properly accepting Indatus\Dispatcher\Scheduling\ScheduledCommandInterface
    • A newly initialized Indatus\Dispatcher\Scheduling\Schedulable instance is now provided for each command
    Source code(tar.gz)
    Source code(zip)
  • v1.2.2(Apr 22, 2014)

  • v1.2.1(Apr 14, 2014)

  • v1.2.0(Apr 9, 2014)

  • v1.1.3(Mar 26, 2014)

    • Updated README to more clearly communicate drivers and their purpose
    • Resolved an issue with schedule:make where the generated command was invalid.
    Source code(tar.gz)
    Source code(zip)
  • v1.1.2(Mar 24, 2014)

    • responsibility of printing the schedule summary now belongs to the driver
    • commands now only need to implement ScheduledCommandInterface rather than extending ScheduledCommand
    • added example to README for using raw cron
    • $scheduler->setSchedule() now properly returns an instance of $scheduler
    Source code(tar.gz)
    Source code(zip)
  • v1.1.1(Mar 22, 2014)

  • v1.1.0(Mar 21, 2014)

    • The cron driver for February was incorrectly running commands in March instead of February
    • Cron driver months and days of the week are now constants
    • Copyright/license information is in every file
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1(Mar 8, 2014)

    • Fixed an issue with readme installation instructions
    • Dependency on "jlogsdon/cli" is now version 0.9.4 instead of "dev-master"
    • Removed "x active of x scheduled commands" from scheduled:summary
    • cron driver now translates $scheduler->everyMinutes(1) to * instead of */1*
    • scheduled:make's generated command now includes use Indatus\Dispatcher\Scheduler; correctly
    Source code(tar.gz)
    Source code(zip)
Owner
Indatus
Indatus
Manage your Laravel Task Scheduling in a friendly interface and save schedules to the database.

Documentation This librarian creates a route(default: /schedule) in your application where it is possible to manage which schedules will be executed a

Roberson Faria 252 Dec 1, 2022
A course database lookup tool and schedule building web application for use at Rochester Institute of Technology.

CSH ScheduleMaker A course database lookup tool and schedule building web application for use at Rochester Institute of Technology. Built, maintained

Computer Science House 55 Nov 8, 2022
Laravel Cron Scheduling - The ability to run the Laravel task scheduler using different crons

Laravel Cron Scheduling Laravel Task Scheduling is a great way to manage the cron. But the documentation contains the following warning: By default, m

Sergey Zhidkov 4 Sep 9, 2022
Task Scheduling with Cron Job in Laravel

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

Shariful Islam 1 Oct 16, 2021
Manage Your Laravel Schedule From A Web Dashboard

Introduction Manage your Laravel Schedule from a pretty dashboard. Schedule your Laravel Console Commands to your liking. Enable/Disable scheduled tas

ⓒⓞⓓⓔ ⓢⓣⓤⓓⓘⓞ 1.6k Nov 25, 2022
Manage Your Laravel Schedule From A Web Dashboard

Introduction Manage your Laravel Schedule from a pretty dashboard. Schedule your Laravel Console Commands to your liking. Enable/Disable scheduled tas

ⓒⓞⓓⓔ ⓢⓣⓤⓓⓘⓞ 1.6k Nov 25, 2022
Schedule and unschedule eloquent models elegantly without cron jobs

Laravel Schedulable Schedule and Unschedule any eloquent model elegantly without cron job. Salient Features: Turn any Eloquent Model into a schedulabl

Neelkanth Kaushik 104 Sep 17, 2022
Crunz is a framework-agnostic package to schedule periodic tasks (cron jobs) in PHP using a fluent API.

Crunz Install a cron job once and for all, manage the rest from the code. Crunz is a framework-agnostic package to schedule periodic tasks (cron jobs)

Reza Lavarian 1.4k Dec 1, 2022
Easily implement optimistic Eloquent model locking feature to your Laravel app.

quarks/laravel-locking Easily implement optimistic Eloquent model locking feature to your Laravel app. Installation composer require quarks/laravel-lo

Quarks 2 Jun 21, 2022
Laravel-Tasks is a Complete Build of Laravel 5.2 with Individual User Task Lists

An app of tasks lists for each individual user. Built on Laravel 5.2, using 5.2 authentication and middleware. This has robust verbose examples using Laravel best practices.

Jeremy Kenedy 26 Aug 27, 2022
A better way to create complex batch job queues in Laravel.

Relay A better way to create complex batch job queues in Laravel. Installation composer require agatanga/relay Usage Example Let's say you have the fo

Agatanga 10 Sep 15, 2022
Dispatcher is a Laravel artisan command scheduling tool used to schedule artisan commands within your project so you don't need to touch your crontab when deploying.

Dispatcher Dispatcher allows you to schedule your artisan commands within your Laravel project, eliminating the need to touch the crontab when deployi

Indatus 1.1k Nov 25, 2022
Laracon Schedule a command-line tool that gives you the Laracon Online schedule in your timezone.

Laracon Schedule a command-line tool that gives you the Laracon Online schedule in your timezone. ?? Quick start Requires PHP 7.4+ # First, install: c

Nuno Maduro 101 Sep 16, 2022
👨🏻‍🚀 A command-line tool that gives you the Alpine Day 2021 schedule in your timezone. 🚀

Alpine Day Schedule a command-line tool that gives you the Alpine Day 2021 schedule in your timezone. ?? Quick start Requires PHP 7.4+ # First, instal

Nuno Maduro 11 Jun 10, 2021
The swiss army knife for Magento developers, sysadmins and devops. The tool provides a huge set of well tested command line commands which save hours of work time. All commands are extendable by a module API.

netz98 magerun CLI tools for Magento 2 The n98 magerun cli tools provides some handy tools to work with Magento from command line. Build Status Latest

netz98 750 Nov 27, 2022
Manage all your cron jobs without modifying crontab. Handles locking, logging, error emails, and more.

Jobby, a PHP cron job manager Install the master jobby cron job, and it will manage all your offline tasks. Add jobs without modifying crontab. Jobby

null 1k Nov 27, 2022
This Laravel Nova tool lets you run artisan and bash commands directly from Nova 4 or higher.

Laravel Nova tool for running Artisan & Shell commands. This Nova tool lets you run artisan and bash commands directly from nova. This is an extended

Artem Stepanenko 16 Nov 17, 2022
Simple PHP/Laravel app that displays Todoist tasks in a view designed for a Kindle Touch

productivity-dashboard Just a simple PHP/Laravel app that retrieves (so far) tasks from Todoist and displays them in a simple view designed for a Kind

null 6 Mar 29, 2022
Simple PHP/Laravel app that displays Todoist tasks in a view designed for a Kindle Touch

productivity-dashboard Just a simple PHP/Laravel app that retrieves (so far) tasks from Todoist and displays them in a simple view designed for a Kind

null 3 Dec 27, 2021
Parse and validate crontab expressions in PHP

Standard (V7) compliant crontab expression parser/validator with support for time zones; see "man 5 crontab" for possible expressions.

René Pollesch 42 Sep 23, 2022