Laravel 队列立即执行,不会延迟
我使用postgresql作为db,在.env中我设置了QUEUE\u CONNECTION=database 例如,我从url下载一张图片,并将其传输到队列中,以便在存储器laravel中上载 在web.php中,我注册了到队列的路由Laravel 队列立即执行,不会延迟,laravel,Laravel,我使用postgresql作为db,在.env中我设置了QUEUE\u CONNECTION=database 例如,我从url下载一张图片,并将其传输到队列中,以便在存储器laravel中上载 在web.php中,我注册了到队列的路由 Route::get('/job', function () { App\Jobs\FileAdd::dispatch("https://www.example.com/example.jpg")->delay(now()-&g
Route::get('/job', function () {
App\Jobs\FileAdd::dispatch("https://www.example.com/example.jpg")->delay(now()->addMinute(25));
});
在job中,我写了以下内容:
<?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\Support\Facades\Storage;
class FileAdd implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $File;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($File)
{
$this->File = $File;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
info($data = $this->File);
$pos = strripos($data, '/');
$link = substr($data, 0 , $pos+1);
$filename = substr($data, $pos+1);
$expansion = substr($filename, -4);
$tempImageTwink = tempnam('..\storage\app\public', $filename);
$tempImage = substr($tempImageTwink, 0, -4) . $expansion;
copy($link . '/' . $filename, $tempImage);
Storage::delete('exa3BBD.tmp');
response()->download($tempImage, $filename);
unlink(($tempImageTwink ));
}
}
如果您只是在.env文件中更改缓存,
可能会出现问题。Laravel缓存.env文件并查看缓存(如果可用),而不是.env文件本身。因此,除非清除缓存或创建新缓存,否则更改不会处于活动状态。请尝试用以下方法清除缓存:
php artisan optimize:clear
或
因此可以加载.env文件中的新数据。在延迟方法中尝试此方法,如delay(Carbon::now()->addMinutes(25))
他已经这样做了,now()
是Carbon::now()
的别名,您还有today()
作为Carbon::today()
…这回答了您的问题吗?
php artisan cache:clear