为什么存储在工作中无法正常工作?

时间:2019-04-17 21:57:17

标签: queue storage laravel-5.4 php-7.2

我有一些用户需要从数据库中提取大量数据。我正在创建一个接收参数,查询数据库并将数据写入txt文件的作业。文件准备就绪后,我会发送一封通知电子邮件。

要在本地存储文件,我正在作业内部使用Storage门面。

如果我在常规控制器上运行代码,则生成文件,但是当我在作业中运行相同命令时,则不会生成文件(即使已处理作业)。

我正在php 7.2上运行laravel 5.4。并已链接存储(php artisan storage:link)

由于我的代码非常复杂(咨询模型,邮件等),因此我创建了一个简单的测试控制器和一个简单的测试作业,以将文件创建与其余代码隔离开来。简单版本中也会发生同样的问题。

这是控制器:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Storage;
use App\Jobs\testeStorageJob;

class testController extends Controller
{
    public function test(){
        Storage::put('testFile.txt', 'Some Content on a regular controller');
        testeStorageJob::dispatch();
    }
}

这是工作:

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Storage;

class testeStorageJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    public $tries = 1;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        Storage::put('testFileQueue.txt', 'Some content on a queue');
    }
}

我已经检查了文件系统配置,这是默认值。

我原本希望“ Storage / App”文件夹中有两个文件testFile.txt和testFileQueue.txt,但是我只有testFile.txt。

0 个答案:

没有答案