Laravel 5.6删除代码中的时间表
Laravel 5.6 Delete schedules in the code
我有一个 API 用户创建集成的地方。
这些集成可能会重复出现(每 6 个月重复一次,每 2 天重复一次,等等)。
- 在 UI 中,当用户选择何时重复时会生成一个 cron(例如:* * * * *)。
- 重复由 laravel 计划管理 (https://laravel.com/docs/5.6/scheduling)
- 该 cron 保存在该用户集成的配置中
EX: 然后在 Kernel.php :
$schedule->job(new IntegrateJob, 'integrationId')->cron('* * * * *');
简单...我工作!!!
但是如果用户删除了集成(软删除),那么我不想 运行 在选定的 cron 中执行该作业。
我想在 laravel 调度程序中删除该条目。
但是该信息不会保存在任何地方,不在数据库中,不在缓存中,不在管理作业的 redis 服务器中...
如果找不到它们,我就无法删除它们...有什么解决方案吗?谢谢你
我认为这样做的正确方法是更改您的设计,以便为所有用户设置事件 运行,然后确定哪些用户 运行 事件(如果任何)。此外,Laravel 处理计划任务的方式与 Linux 处理 Cron 作业的方式不同。
举个例子:
如果你在app/Console/Kernel.php
文件中有如下代码并且运行php artisan schedule:run
,作业是运行.
$schedule->job(new IntegrateJob, 'integrationId')->cron('* * * * *');
如果你把上面的代码拿出来运行 php artisan schedule:run
一分钟后,作业就不会运行因为Laravel不会持久化作业。
我有一个 API 用户创建集成的地方。
这些集成可能会重复出现(每 6 个月重复一次,每 2 天重复一次,等等)。
- 在 UI 中,当用户选择何时重复时会生成一个 cron(例如:* * * * *)。
- 重复由 laravel 计划管理 (https://laravel.com/docs/5.6/scheduling)
- 该 cron 保存在该用户集成的配置中
EX: 然后在 Kernel.php :
$schedule->job(new IntegrateJob, 'integrationId')->cron('* * * * *');
简单...我工作!!!
但是如果用户删除了集成(软删除),那么我不想 运行 在选定的 cron 中执行该作业。
我想在 laravel 调度程序中删除该条目。
但是该信息不会保存在任何地方,不在数据库中,不在缓存中,不在管理作业的 redis 服务器中...
如果找不到它们,我就无法删除它们...有什么解决方案吗?谢谢你
我认为这样做的正确方法是更改您的设计,以便为所有用户设置事件 运行,然后确定哪些用户 运行 事件(如果任何)。此外,Laravel 处理计划任务的方式与 Linux 处理 Cron 作业的方式不同。
举个例子:
如果你在app/Console/Kernel.php
文件中有如下代码并且运行php artisan schedule:run
,作业是运行.
$schedule->job(new IntegrateJob, 'integrationId')->cron('* * * * *');
如果你把上面的代码拿出来运行 php artisan schedule:run
一分钟后,作业就不会运行因为Laravel不会持久化作业。