How to remove scheduling in lumen - php

Currently i am using PHP 5.6.32 and Laravel Framework Lumen (5.4.6) (Laravel Components 5.4.*).
I am able to schedule my task as per the specific time like below
$schedule->call('App\Http\Controllers\SubjectController#frickcall', ["request" => $request])
->cron("14:23");
But after scheduling above call how could i remove it from scheduler list?

Just remove that line of code from your schedule.
Schedules are not jobs placed in a work queue in Laravel and Lumen, you are supposed to setup a cron job to run the scheduler every minute with a crontab entry like this:
* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
Then the schedule will be evaluated every minute to determine if anything needs to be run.
If you were meant to be using work queues look at this.

Related

Laravel Scheduler running every minute regardless of specified schedule

I have the Laravel schedule command triggered in the crontab as:
* * * * * php /home/forge/site/artisan schedule:run
This is set via Forge.
Then, in app/Console/Kernel.php I'm triggering my job to run hourly:
$schedule->job(new GetRecentArtists())->hourly();
But it's still running every minute.
My understanding was that the artisan command needs running every minute so that job schedules can then be checked to see if the job needs triggering as per its' specific schedule.
Update
I've tried restarting the queue as suggested in the comment by Sahidul, and have confirmed that none of the built-in schedules (hourly, daily, etc) prevent it from running every minute.
When I remove the schedule from the crontab and run it via php artisan schedule:run, I get 'No scheduled commands are ready to run' but the task runs anyway.
This was a red herring. I had my log message showing the job as running in the __construct method of the job, rather than in the handle method.
The job is constructed when the scheduler runs, then added to the queue to be executed as per the schedule - so the construct method was being called immediately, but the job wasn't actually being handled until the scheduled time.

How to add Cron entries to WAMP localhost in Laravel 5.6

I am going to create Task Shedule in laravel 5.6 in my app. I am working with windows 7 os and my localhost is WAMP. in laravel documentation there is add Cron entries to your server as
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
but I have not any idea about how to add Cron entries with My wamp localhost. my laravel file is in the desktop name as schoolproject then how can add Cron entries with my wamp?
For people who run a local WAMP server and their computer isn't always awake
I spent the past couple months figuring out what would work best.
First, set up your Kernel class and console commands as instructed in the Laravel docs.
In Windows, open Task Scheduler, and create a new task:
In the Triggers section, you can set it like this:
The action should be to run the PHP executable within your WAMP folder (using artisan schedule:run) as the argument:
But then here is an important difference from other tutorials I've seen:
For any tasks that are critical, you'll want to treat them separately.
For example, let's assume you have a task that backs up your database, and you'd like to run this every single day at noon, so your Kernel class has this command in its schedule.
But then you realize a flaw in this approach: if you were out at lunch a few days in a row and left your computer asleep, that noon task would have been missed, and now your backups would be quite stale.
So, remove that daily database backups command from the schedule in Kernel, and instead, then create a second task within Windows Task Scheduler, and set the trigger like:
Then in its Settings tab, you can choose "Run task as soon as possible after a scheduled start is missed":
Therefore, even if your computer is off or asleep at this task's scheduled time, Windows will know to run the task immediately upon waking.

vTigerCRM 7 - Scheduler isn't running any cron jobs unless manually triggered

I'm running vTiger 7.0 and I noticed on the first of the month, none of my invoices were created. I then took a look at the Scheduler and noticed that the "Last scan started" and "Last scan ended" fields show that none of the cron jobs had fired in days. The cron jobs are scheduled to fire in 15 minute intervals, with the exception of "RecurringInvoice" which runs every 12 hours.
If I visit /myvtigerinstall/vtigercron.php, the cron jobs will all fire but nobody wants to have to manually run cron jobs!
Has anyone had a similar issue before with vTiger?
I'm not exactly sure how to troubleshoot this error effectively and efficiently. I've checked permissions and they all seem to be in order.
If you've installed vTiger CRM on a dedicated server, you maybe have added a line in linux crontab so that the cron executes...
For instance :
* * * * * sh home/vtiger/vtigerCRM5/apache/htdocs/vtigerCRM/cron/vtigercron.sh
If the cron doesn't launch automatically, it means it's not launched by the cron bot...
Vtiger minimum cron frequency is 15 minutes.
Add the following line in crontab
*/15 * * * * wget -O- --spider "http://vtigercrmurl/vtigercron.php" >/dev/null 2>&1
or use the following free services
https://www.easycron.com/
https://cron-job.org

Laravel 5.6 Delete schedules in the code

I have a API where a user create integrations.
Those integrations may have recurrence (repeat every 6 months, every 2 days, etc).
In the UI when the user selects when to repeat is generated a cron (ex: * * * * *).
The recurrence is managed by the laravel schedule (https://laravel.com/docs/5.6/scheduling)
That cron is saved in the configurations of that integration of the user
EX: then in the Kernel.php :
$schedule->job(new IntegrateJob, 'integrationId')->cron('* * * * *');
Easy... I works!!!
But if the user deletes the integrations (soft delete), then I dont want to run that job in the selected cron.
I want to delete that entry in the laravel scheduler.
But that info is not saved anywhere, not in the database, not in cache, not in the redis server that manages the jobs...
If I cant find them I cant delete them... Any Solutions? Thank U
I think the proper way to do this would be changing your design so the event runs for all the users and then determines which user(s) to run the event for (if any). Also, the way Laravel handles scheduled tasks in different than the way Linux handles Cron jobs.
As an example:
If you have the following code in the app/Console/Kernel.php file and run php artisan schedule:run, the job is ran.
$schedule->job(new IntegrateJob, 'integrationId')->cron('* * * * *');
If you take out the above code and run php artisan schedule:run after a minute, the job will not be ran because Laravel does not persist the job.

Laravel 5 task scheduler (for mail queue) not working

I'm trying to make Laravel automatically handle the emailing queue but can't make the task scheduler working. The problem is like:
I already got jobs successfully in the database table, and in Kernel.php:
$schedule->command('queue:work')->everyMinute();
on the remote server I've run this command under the project folder:
* * * * * php artisan schedule:run >> /dev/null 2>&1
But the scheduler still refuse to work, as job still remains in the table. If I manually run
artisan queue:work
the email is sent then.
What am I getting wrong here? Many thanks!
Firstly I would suggest you to not use laravel's command scheduler.
Pros and cons of using laravel's task scheduler:
pros
Your cron task gets embedded to your code. So if you change your server you don't need to remember which all cron tasks you had.
cons
Let's say you have several other cron tasks. Task T1 runs every minute but task T2 runs every day while task T3 runs every Tuesday. Now to just check this you will be running a daemon which will check if every minute of you have any task in queue schedule. Also your queue should respect each jobs and their respective timings.
Instead what you can do is create separate commands for every task. And run cron jobs for them.
But even if you wanted to do what you were doing already or want to know why your cron task was not running, then here is what you were forgetting "running the artisan command in your project directory".
* * * * * cd path_to_your_laravel_project & php artisan schedule:run

Categories