如何解决Laravel 8 如何使用 schedule:test
我对命令 schedule:list
和 schedule:test
有疑问,在我的 linux 服务器上,我创建了 3 个不同的作业,这些作业简单地调用命令。现在使用 schedule:list
我看到这个:
php artisan schedule:list
+---------+---------------+----------------------+---------------------+
| Command | Interval | Description | Next Due |
+---------+---------------+----------------------+---------------------+
| | 32 8-20 * * * | App\Jobs\importItems | 2021-06-16 11:32:00 |
| | 0 8 * * * | App\Jobs\deleteItems | 2021-06-17 08:00:00 |
| | 0 22 * * * | App\Jobs\removeItems | 2021-06-16 22:00:00 |
+---------+---------------+----------------------+---------------------+
这是正确的,所以我尝试使用测试手动运行作业:
php artisan schedule:test
Which command would you like to run?:
[0]
[1]
[2]
>
如果我按回车,第一个执行没有任何问题,但我不明白如何启动第二个或第三个,我试着把 1
,[1]
,App\Jobs\deleteItems
,deleteItems
但没有成功。
这是工作代码:
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Console\Command\startImport;
class importItems implements ShouldQueue,ShouldBeUnique
{
use Dispatchable,InteractsWithQueue,Queueable,SerializesModels;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct()
{
set_time_limit(80);
//
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
\Log::info("Cron is working fine!");
\Artisan::call('start:import',['limit'=>50]);
}
}
知道如何解决这个问题吗?
提前致谢 罗伊
解决方法
我相信这是 Laravel 的一个错误,因为它为计划创建回调事件的方式。它“命名”了事件,但它设置了描述。理想情况下,它还可以为您设置命令。
我通过在控制台内核中为预定作业设置命令来暂时解决这个问题。我还没来得及提交错误报告。当我这样做时,我会在此处链接到它/更新我的答案。
例如,在您的情况下,您只需在创建作业后设置 command
属性。
$importItems = $schedule->job(importItems::class)->dailyAt('01:00');
$importItems->command = 'importItems';
设置属性后,在使用 artisan:test
时按 0 或 1 等即可。
我相信起点是弄清楚您是否真的正确设置了它。正如其他人所说,您应该有一个非空的命令列。请参阅我的服务器上的以下图片。除了运行常规功能外,我还运行队列,因为我在共享主机上无法运行 supervisor
。
我一直在使用以下代码来安排 queues
$schedule->command("queue:work")->everyMinute()
->withoutOverlapping()->emailOutputOnFailure('cool@bananas.com');
// restart the queue worker periodically to prevent memory issues
$schedule->command('queue:restart')->hourly();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。