【发布时间】:2020-08-31 18:29:08
【问题描述】:
使用 Laravel-Excel 试用队列系统以获得更好的用户上传体验。
.env 已从“同步”更改为“数据库”并运行迁移。所有必要的使用语句都已到位,但上述错误仍然存在。
确切的错误发生在这里:
Illuminate\Queue\Queue.php:97
$payload = json_encode($this->createPayloadArray($job, $queue, $data));
if (JSON_ERROR_NONE !== json_last_error()) {
throw new InvalidPayloadException(
如果我删除 ShouldQueue,文件会在会话中完美导入(大文件,用户等待时间很长。)
我已经阅读了很多关于此的 stackoverflow、github 等 cmets,但我没有深入研究解决我的特定情况的技术技能(他们中的大多数人都在谈论 UTF-8,但如果那是问题在这里;我将excel保存格式更改为UTF-8,但没有解决。)
附言。在运行迁移时,我收到了错误:
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `jobs` add index `jobs_queue_index`(`queue`))
我通过删除“添加索引”绕过了;所以我的作业表没有在队列中编入索引,但我不认为这是原因。
【问题讨论】:
-
我 var_dumped 并注意到 $data 为空,$queue 是一个值为“default”的字符串,$job 是一个巨大的对象,代表分块的 excel 导入。搜索表明摆弄 utf8_encode、mb_convert_encoding 和 iconv 但这将涉及更改框架代码(并且不清楚它如何不会搞砸,例如在解码过程中。
标签: laravel-7 laravel-excel php-7.3 laravel-queue