python - Comment résoudre le problème lorsque le navigateur est à moitié bloqué lors de l'exportation d'Excel avec plus de 10 000 éléments?
習慣沉默2017-06-14 10:49:44
0
13
2017
Les exigences commerciales nécessitent parfois l'exportation de dizaines de milliers d'éléments Puis-je utiliser python pour le traiter ?? C'est trop bloqué Et si j'utilise python pour le traiter ?
Les tâches serveur chronophages comme celle-ci ne doivent pas être conçues comme 浏览器->同步->服务器devraient être sous la forme de tâches asynchrones : ;
Navigateur : Je veux un fichier Excel, veuillez d'abord le générer pour moi
Serveur : OK, la mission a commencé
Navigateur : laissez-moi le rafraîchir et voir (vous pouvez utiliser une longue connexion à la place), il semble terminé. Donnez-moi l'URL (l'URL peut être reflétée dans la tâche, pas besoin de l'obtenir à nouveau), je veux. pour le télécharger
Utilisez un mode asynchrone ou multi-processus, le navigateur soumet la tâche, indiquant que la tâche est en cours de traitement, le script multi-processus en arrière-plan la traite lentement et, une fois terminé, envoie un message au navigateur pour inviter l'utilisateur à effectuer l'opération d'exportation. est terminé et peut être téléchargé. Message push du navigateur : http://www.workerman.net/web-... Cadre multi-processus : http://doc3.workerman.net/ins...
Plus de dix mille, ce n'est pas beaucoup. Vous pouvez en utiliser
.PHPExcel
这个第三方库. 或者直接导出csv
, 函数:fputcsv
.Si vous souhaitez exporter, exportez-le simplement directement en mode CVS.
Vous n’avez pas besoin de tout exporter en même temps. Exporter par lots
Les tâches serveur chronophages comme celle-ci ne doivent pas être conçues comme
浏览器->同步->服务器
devraient être sous la forme de tâches asynchrones :;
N'est-il pas suffisant d'avoir plus de 10 000 entrées ? Quelle est la taille du fichier ?
Vous pouvez segmenter la génération... écrire 1000 éléments par 1000 éléments.
De plus, si php expire, vous pouvez modifier set_time_limit()
Asynchrone, toutes les opérations d'exportation doivent être rendues asynchrones
Écrit en pagination, par exemple, actualisé une fois tous les 1000 éléments
Utilisez le script pour exécuter, php -f export.php
Utilisez un mode asynchrone ou multi-processus, le navigateur soumet la tâche, indiquant que la tâche est en cours de traitement, le script multi-processus en arrière-plan la traite lentement et, une fois terminé, envoie un message au navigateur pour inviter l'utilisateur à effectuer l'opération d'exportation. est terminé et peut être téléchargé.
Message push du navigateur : http://www.workerman.net/web-...
Cadre multi-processus : http://doc3.workerman.net/ins...