我有一个关于命令schedule:list和schedule:test的问题,在我的linux服务器上,我创建了三个不同的作业,它们简单地调用一个命令。现在使用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 |
+---------+---------------+----------------------+---------------------+这是正确的,所以我尝试使用test手动运行作业:
php artisan schedule:test
Which command would you like to run?:
[0]
[1]
[2]
>如果我按enter键,第一个命令会被执行,没有任何问题,但我不知道如何启动第二个或第三个命令,我尝试放入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]);
}
}有没有办法解决这个问题?
提前感谢罗伊
发布于 2021-07-01 23:01:32
TLDR:更新到>= 8.52.0
--
我认为这是Laravel的一个错误,因为它为时间表创建回调事件的方式。它为事件“命名”,但设置了描述。理想情况下,它还会为您设置命令。
我暂时解决了这个问题,方法是在控制台内核中设置调度作业的命令。我还没来得及提交bug报告。当我这样做时,我会在这里链接到它/更新我的答案。
例如,在您的示例中,只需在创建作业后设置command属性。
$importItems = $schedule->job(importItems::class)->dailyAt('01:00');
$importItems->command = 'importItems';设置属性后,在使用artisan:test时按0或1等键即可工作。
更新
此问题已在https://github.com/laravel/framework/pull/38146中修复
并于2021-07-27在v8.52.0中发布
发布于 2021-07-01 23:06:28
我相信起始点是弄清楚你是否真的正确设置了它。正如其他人所说的,您应该有一个非空的命令列。从我的服务器上看下面的图片。除了运行常规函数之外,我还运行队列,因为我不能运行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();https://stackoverflow.com/questions/67999337
复制相似问题