Maison >développement back-end >tutoriel php >À propos de la solution pour que PHP enregistre aléatoirement mysql rand() provoquant une CPU à 100 %
Cet article présente principalement la solution au CPU 100% causé par PHP enregistrant aléatoirement mysql rand(). Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer
mysql La base de données contient des dizaines de milliers de données et rand() est utilisé pour extraire 10 enregistrements aléatoires, ce qui fait que l'utilisation du processeur du serveur reste élevée jusqu'à ce qu'il plante ~Baidu a consulté certaines informations, combinées à certaines des sa propre expérience, et a adopté la solution suivante Méthode :$idlist=''; for($i=1;$i<=20;$i++){ if($i==1){ $idlist=mt_rand(3,25216); } else{ $idlist=$idlist.','.mt_rand(3,25216); } } $query="select * from table where id in ($idlist) LIMIT 0,10";Le principe est en fait très simple, c'est-à-dire générer un ensemble d'identifiants aléatoires, puis récupérer les enregistrements correspondant à cet ensemble d'identifiants après. une telle optimisation, la vitesse d'ouverture des pages est évidemment beaucoup plus rapide, et l'utilisation du CPU est également faible elle atteint presque 0, haha~ D'ailleurs, j'ai aussi utilisé cette idée pour optimiser le site sqlserver !
Comparaison de vitesse :
Il faut plus de 400 millisecondes pour utiliser rand() pour obtenir 10 enregistrements aléatoires, mais il ne faut qu'environ 0,6 milliseconde pour utiliser la méthode ci-dessus. ! !
Comment résoudre le problème de ThinkPHP implémentant plusieurs connexions à des bases de données
ThinkPHP implémentant le site officiel de l'imitation ajax fonction de recherche
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!