Lors de l'importation de fichiers Excel dans Laravel, la quantité de données est trop importante et le serveur reçoit souvent 500 requêtes. Que dois-je faire ?
我想大声告诉你2017-05-16 16:48:23
0
3
746
Grâce à l'extension Laravel Excel, comment importer rapidement plus de 10 000 données Excel sans modifier la configuration du serveur sans signaler 500 erreurs, merci
Cette situation se produit généralement lorsque l'utilisation de la mémoire dépasse la configuration maximale autorisée de PHP ou que le temps d'exécution est trop long et expire. Si vous utilisez directement l'extension Excel Laravel et importez en fonction du téléchargement Web, le délai d'attente expirera définitivement et dépassera la limite de taille de la mémoire.
La solution consiste à utiliser les tâches planifiées ou les files d'attente de tâches de Laravel.
Tâches chronométrées
上传文件后,定时任务去检查是否有新上传的文件,如果有就执行导入处理。
File d'attente des tâches
上传文件后,发布一个异步事件,由任务listener去异步处理excel内容的导入。
Une fois l'importation finale terminée, écrivez les résultats de l'importation dans la base de données ou dans d'autres méthodes de stockage, afin que l'importation de données asynchrone ne provoque pas d'erreurs dues à la mémoire ou au délai d'attente.
C'est normal. Rencontrez-le souvent. J'ai donc développé une extension. https://git.oschina.net/xavie... https://github.com/xavieryang...
Le problème avec l'importation de xls par PHP est très grave, car xlsx est un package compressé plus XML, il est meilleur que xls. Xls est un fichier binaire qui doit être complètement chargé avant de pouvoir être analysé, et l'analyse est relativement compliquée. Le PHPEXCEL actuellement populaire est très lent dans le traitement des xls, et il échoue souvent lors de l'importation de xls.
Cette situation se produit généralement lorsque l'utilisation de la mémoire dépasse la configuration maximale autorisée de PHP ou que le temps d'exécution est trop long et expire. Si vous utilisez directement l'extension Excel Laravel et importez en fonction du téléchargement Web, le délai d'attente expirera définitivement et dépassera la limite de taille de la mémoire.
La solution consiste à utiliser les tâches planifiées ou les files d'attente de tâches de Laravel.
Tâches chronométrées
File d'attente des tâches
Une fois l'importation finale terminée, écrivez les résultats de l'importation dans la base de données ou dans d'autres méthodes de stockage, afin que l'importation de données asynchrone ne provoque pas d'erreurs dues à la mémoire ou au délai d'attente.
C'est normal. Rencontrez-le souvent. J'ai donc développé une extension.
https://git.oschina.net/xavie...
https://github.com/xavieryang...
Le problème avec l'importation de xls par PHP est très grave, car xlsx est un package compressé plus XML, il est meilleur que xls. Xls est un fichier binaire qui doit être complètement chargé avant de pouvoir être analysé, et l'analyse est relativement compliquée. Le PHPEXCEL actuellement populaire est très lent dans le traitement des xls, et il échoue souvent lors de l'importation de xls.
Vous n'avez pas besoin de lire les éléments 1W dans la mémoire à la fois. Lisez-les un par un et enregistrez-les un par un
.