Временные файлы создаются на одном сервере при экспорте в очередь
Здравствуйте, я запускаю свое приложение на Laravel Steam (без сервера). При экспорте в очередь временные файлы не сохраняются на диске s3. Я застрял на этом!
Можете ли вы показать, что вы пытаетесь, не могу помочь с этой небольшой информацией.
@patrickbrouwers
'временные_файлы' => [
/*
|--------------------------------------------------------------------------
| Local Temporary Path
|--------------------------------------------------------------------------
|
| When exporting and importing files, we use a temporary file, before
| storing reading or downloading. Here you can customize that path.
|
*/
'local_path' => storage_path('app/public'),
/*
|--------------------------------------------------------------------------
| Remote Temporary Disk
|--------------------------------------------------------------------------
|
| When dealing with a multi server setup with queues in which you
| cannot rely on having a shared local temporary path, you might
| want to store the temporary file on a shared disk. During the
| queue executing, we'll retrieve the temporary file from that
| location instead. When left to null, it will always use
| the local path. This setting only has effect when using
| in conjunction with queued imports and exports.
|
*/
'remote_disk' => 's3',
'remote_prefix' => null,
],
это мой файл конфигурации, здесь я указываю удаленный диск для временных файлов, но временные файлы не сохраняются на этом диске
Конфиг выглядит неплохо. Я недостаточно знаю о Vapor, чтобы дать вам указатели для отладки, но, возможно, ваш файл конфигурации кэширован или что-то в этом роде. Может быть, люди из Laracasts / Stackoverflow быстрее помогут.
@patrickbrouwers на моем локальном компьютере также возникает эта проблема - временные файлы не сохраняются на этом диске (s3)
Попробуйте выполнить код с помощью xdebug / dd (), возможно, в вашей конфигурации что-то не так, чего я не вижу
Соответствующая строка: https://github.com/Maatwebsite/Laravel-Excel/blob/3.1/src/ExcelServiceProvider.php#L79
@patrickbrouwers Я обнаружил один случай, временные файлы записываются на диск, но происходит чтение фрагмента, он не берет временный файл из s3, есть надежда?
@patrickbrouwers, это аналогичная проблема, например # 2655
Тогда попробуйте установить для этого параметра force значение true?
@patrickbrouwers Я не могу этого сделать. потому что моя проблема в том, что, к сожалению, пар не поддерживает хранение каких-либо временных файлов на ходу.
Так что, возможно, мне нужна поддержка чего-то, что называется serverless - это временные файлы, читаемые и записываемые с s3 / любого диска при чтении фрагментов.
Я считаю, что некоторые люди без проблем используют его на Vapor.
Это ошибка, которую я получаю при попытке экспорта в очередь
ErrorException: fopen (/tmp/storage/framework/laravel-excel/laravel-excel-0KCoC8o8oDS1zsMpu927nkeCTzRgCu1E.xlsx): не удалось открыть поток: нет такого файла или каталога в / var / task / vendor / phpoffice / phpsrpreadsheet / Phpsrpreadsheet / Phpsrpreadsheet Писатель / BaseWriter. php: 111
Трассировки стека:
Кажется, что с вашей конфигурацией все еще что-то не так. Он не использует правильный локальный путь, он использует временную папку системы вместо папки хранилища Laravel.
@patrickbrouwers Larevel Steam использует s3 в качестве хранилища по умолчанию, но laravel excel по-прежнему читает из локальной системы / сервера,
@patrickbrouwers Есть ли техническое ограничение, не позволяющее читать файл напрямую из s3?
Да, он всегда будет читать с локального сервера после копирования с s3. PhpSpreadsheet может читать только с локального диска
При правильной конфигурации все должно работать нормально
@patrickbrouwers В парах нет серверов ... Aws lambda обрабатывает весь код. Итак, возможно, для поддержки Excel в очереди нам нужно запустить сервер и, возможно, нужно запустить как микроэкземпляр, например вещь!
Я знаю, что такое Vapor и serverless. Я бы посоветовал вам попробовать Laracasts или Stackoverflow, я не думаю, что мы чего-то добьемся, если вы не попробуете мои предложения.
Я знаю, что такое Vapor и serverless. Я бы посоветовал вам попробовать Laracasts или Stackoverflow, я не думаю, что мы чего-то добьемся, если вы не попробуете мои предложения.
Я попробовал ваши предложения и перепроверил конфигурации согласно документации.
На первом этапе создаются временные файлы,
Но когда мы переходим к случаю чтения электронной таблицы, возникает эта ошибка.
Кроме того, другая зависимость «Laravel snappy» нуждается в такой поддержке локального диска.
Но в моем случае этот локальный диск работать не будет!
Итак, когда я связался с паром по поводу этого дела, они предложили сохранить файл на s3 и использовать его повторно. Что я должен делать ?
Надеюсь, вы понимаете мою ситуацию!
Другие люди могли использовать локальный файл, который синхронизируется с s3. Больше я ничем не могу помочь, извини. Как я предлагал несколько раз, попробуйте форум, связанный с Laravel.
Вот пример того, как кто-то использует экспорт в очередь с Vapor: https://github.com/Maatwebsite/Laravel-Excel/pull/2434
Я попробую вышеуказанное решение
Вот пример того, как кто-то использует экспорт в очередь с Vapor: # 2434
@patrickbrouwers Большое спасибо за предложение! Теперь он работает как шарм!
Я только что изменился
'local_path' => sys_get_temp_dir (),
в excel.php
с удаленным дисковым паром будет работать так
Благодарим за терпение и предложения.
@patrickbrouwers , будут ли эти временные файлы, созданные laravel-excel, автоматически удаляться через определенное время? Что, если я установлю это значение как null
в excel.php?
Самый полезный комментарий
@patrickbrouwers Большое спасибо за предложение! Теперь он работает как шарм!
Я только что изменился
'local_path' => sys_get_temp_dir (),
в excel.php
с удаленным дисковым паром будет работать так
Благодарим за терпение и предложения.