【问题标题】:Laravel Supervisord cannot create fileLaravel Supervisord 无法创建文件
【发布时间】:2018-05-22 18:27:27
【问题描述】:

我正在使用 Laravel Supervisor 作为导出 excel 文件的工作。
使用时正常动作成功
php artisan queue:work
该文件已在“public/excel”目录中成功生成。

但是在使用supervisor的时候,job执行了,但是没有生成文件。
我检查了文件夹权限,已经是 0777。
这是配置文件。我做的和文档中的完全一样

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/xxxx/www/xxxx/artisan queue:work 
--sleep=3 --tries=3
autostart=true
autorestart=true
username=xxxx
password=xxxx
numprocs=8
redirect_stderr=true
stdout_logfile=/home/xxxx/www/xxxx/worker.log

这里是worker.log

[2017-12-08 20:44:42] Processing: App\Jobs\ExportExcel
[2017-12-08 20:44:44] Processed:  App\Jobs\ExportExcel

我有一些命令可以在 ExportExcel 作业中写入数据库,它实际上工作正常。但是没有生成文件。 laravel.log 也没有错误

【问题讨论】:

  • supervisor进程启动成功了吗?能不能也放个配置?顺便说一句,日志中有任何内容吗?
  • 已经启动,可以使用了,但是好像没有生成文件。手动使用php artisan queue:work时,文件生成
  • 需要写入的文件夹路径上 ls -la 的输出是什么?
  • 现在好了,因为我没有清除缓存

标签: laravel supervisord


【解决方案1】:

我通过以下方式找到了解决方案:

-Laravel 作业 '/' 路径不引用公共因此我将导出的数据移动到存储路径
https://laravel.io/forum/07-11-2014-file-permission-problems-in-queue-jobs

-显然服务器没有使用我更新的代码并且仍然使用旧路径。通过使用

php artisan config:clear
php artisan cache:clear

缓存将被清除并使用新代码。感谢此视频中的一条评论
https://youtu.be/_SndYcQvIuQ

-当我发布这个问题时,文件实际上是在其他文件夹中生成的,但是控制器从旧代码中引用了新路径,所以它找不到文件。

干杯

【讨论】:

  • 每次部署代码或拉取代码后,您应该清除缓存和配置
【解决方案2】:

就我而言:
php: 7.4.2
Laravel:6.14
maatwebsite/excel:3.1.18

我所要做的就是为 store 方法传递第三个参数。

Excel::store(new UsersExport(), 'users_2020.xlsx', 'local');

这是它的供应商文件。这是第三个参数 $diskName 默认为空。即使我的 filesystem.php 将 'default' => env('STORAGE_DRIVER', 'local') 设置为本地。

public function store($export, string $filePath, string $diskName = null, string $writerType = null, $diskOptions = [])

【讨论】:

    猜你喜欢
    • 2018-01-03
    • 2022-07-05
    • 2023-02-06
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 2018-05-06
    相关资源
    最近更新 更多