J'ai rencontré un problème avec une version précédente lié à un rapport de traitement de données volumineux. J'avais déjà résolu ce problème avec le code du gestionnaire de synchronisation, mais il s'exécutait très lentement, ce qui m'obligeait à prolonger la durée maximale d'exécution du script de 10 à 15 minutes. Existe-t-il une meilleure façon de gérer de grandes quantités de données dans les sites PHP ? Idéalement, j'aimerais l'exécuter en arrière-plan et le rendre aussi rapide que possible. Ce processus comprenait le traitement de milliers de données financières. J'ai utilisé Laravel pour reconstruire le site.
Les gens vous disent d'utiliser les files d'attente et ainsi de suite, c'est une bonne idée, mais le problème ne semble pas venir de PHP. Laravel/OOP est génial, mais le programme qui génère les rapports dont vous parlez ne semble pas que vous devriez avoir de problème. Pour une perspective différente, j'aimerais voir la requête SQL que vous avez utilisée pour obtenir ces données. Comme d'autres l'ont dit, si votre formulaire comporte des milliers de lignes, votre rapport ne devrait pas prendre 10 à 15 minutes. En fait, si vous faites tout correctement, vous pouvez probablement traiter des milliers d’enregistrements et terminer le même rapport en une minute.
1. Si vous effectuez des milliers de requêtes, voyez si vous pouvez d'abord effectuer seulement quelques requêtes. J'ai déjà utilisé une fonction PHP pour réduire 70 000 requêtes à une douzaine de requêtes, réduisant ainsi son temps d'exécution de quelques minutes à une fraction de seconde.
2. Exécutez EXPLAIN sur votre requête pour voir s'il vous manque des index. Une fois, j'ai fait une requête et l'efficacité s'est améliorée de 4 ordres de grandeur en ajoutant un index. Ce n'est pas une exagération. Si vous utilisez MySQL, vous pouvez apprendre ceci. Cette compétence de « magie noire » vous étourdira, vous et vos amis.
3. Si vous effectuez une requête SQL et obtenez les résultats et rassemblez beaucoup de nombres, voyez si vous pouvez utiliser quelque chose comme SUM() et Des fonctions comme AVG() appellent l'instruction GROUP BY. En règle générale, laissez la base de données gérer autant de calculs que possible. Un conseil très important que je peux vous donner est le suivant : (au moins dans MySQL) les expressions booléennes prennent une valeur de 0 ou 1, et si vous êtes vraiment créatif, vous pouvez le faire en utilisant SUM() et ses amis. Des choses très surprenantes.
4. D'accord, voici un dernier conseil du côté PHP : vérifiez si vous avez calculé plusieurs fois ces chiffres tout aussi chronophages. Par exemple, disons que le coût de 1 000 sacs de pommes de terre est coûteux à calculer, mais vous n'avez pas besoin de calculer ce coût 500 fois avant de stocker le coût de 1 000 sacs de pommes de terre dans une rangée ou quelque chose comme ça, donc vous ne le faites pas. Je n'ai pas besoin de répéter les mêmes calculs encore et encore. Cette technique est appelée mnémotechnique et elle fait souvent des merveilles lorsqu'elle est utilisée dans des rapports comme le vôtre.
Recommandations associées :
Solutions pour le Big Data, le trafic important et la concurrence élevée dans les sites Web PHP
Six tutoriels Javascript de base Explication détaillée de l'utilisation des types de données
Articles recommandés sur les tests de grands volumes de données
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!