Почему хранилище не работает внутри работы? - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть пользователи, которым нужно извлечь большой объем данных из базы данных. Я создаю работу, которая получает параметры, запрашивает базу данных и записывает данные в текстовый файл. И когда файл будет готов, я отправлю уведомление по электронной почте.

Для локального хранения файла я использую фасад Storage внутри задания.

Если я запускаю свой код на обычном контроллере, файл генерируется, но когда я выполняю ту же команду внутри задания, файл не генерируется (даже если задание обработано).

Я использую laravel 5.4 на php 7.2. и связали хранилище (хранилище php artisan: ссылка)

Поскольку мой код очень сложен (консультации с моделями, почта и т. Д.), Я создал простой тестовый контроллер и простое тестовое задание, чтобы изолировать создание файла от остальной части кода. Та же проблема происходит в простой версии.

Вот контроллер:

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');
    }
}

Я проверил конфигурацию файловой системы, и это значения по умолчанию.

Я ожидал иметь 2 файла в папке «Storage / App» testFile.txt и testFileQueue.txt, но у меня есть только testFile.txt.

...