2010-08-30 36 views
3

Je suis en train de mettre en œuvre une application qui demandera à beaucoup de clients d'interroger beaucoup de petits paquets de données à partir de mon serveur web. Maintenant, je ne sais pas si utiliser des connexions de données persistantes à la base de données ou non. La base de données est actuellement sur le même système que le serveur Web et pourrait se connecter via le socket, mais cela pourrait changer dans un proche avenir.PHP, MySQL et un grand nombre de requêtes simples

Comme je connais quelques versions de PHP, mysqli_pconnect a été supprimé car il se comportait de manière sous-optimale. En attendant, il semble être de retour. Je suppose que je n'aurai pas d'autre chance de gérer des milliers de requêtes par minute, mais avec des connexions persistantes et une configuration MySQL qui ne réserve que peu de ressources par connexion, n'est-ce pas?

Merci pour votre participation!

+1

Notez que tous les clients partageant la connexion persistante partagent également les tables temporaires créées sur celle-ci (les tables temporaires ne sont pas recyclées tant que la connexion ne le fait pas). – Piskvor

Répondre

1

Que s'est-il passé lorsque vous l'avez testé?

Avec l'imbrication dans le monde, il n'y a aucun moyen pratique de transmettre toutes les informations nécessaires pour que les gens fournissent une réponse définitive dans une réponse SO. Cependant généralement il ya très peu de frais généraux dans l'établissement d'une connexion mysql, en particulier si elle réside sur le même système que le client de base de données (dans ce cas, le serveur web). Il y a encore moins de frais généraux si vous utilisez un système de fichiers plutôt qu'un socket réseau. Donc, je suggère de faire abstraction de tous vos appels de base de données afin que vous puissiez facilement basculer entre les types de connexion, mais écrivez votre système pour utiliser les connexions à la demande, et assurez-vous que le code libère explicitement la connexion dès que possible. il se comporte.

C.

+0

D'accord, merci! Ce n'est pas facile de tester le scénario. Je veux juste être préparé au lieu de rencontrer immédiatement des problèmes. – stpn108

1

Are PHP persistant connections evil?

Le problème est qu'il peut y avoir seulement si de connexions actives entre l'hôte « Apache » et hôte « MySQL »

connexions Persistant donnent généralement des problèmes en ce que vous a frappé la nombre maximum de connexions. En outre, dans votre cas, cela ne présente pas un grand avantage puisque votre serveur de base de données est sur le même hôte. Gardez les connexions normales pour l'instant.

1

Comme on dit, votre kilométrage peut varier, mais je ne l'ai jamais eu de bonnes expériences à l'aide de connexions persistantes de PHP, y compris MySQL et Oracle (à la fois ODBC et OCI8). Chaque fois que je l'ai testé, le système ne parvient pas à réutiliser les connexions. Avec une charge élevée, je finis par atteindre la limite supérieure alors que j'ai des centaines de connexions inactives. Par conséquent, je vous conseille de l'essayer et de vérifier si votre installation réutilise correctement les connexions. Si ça ne marche pas comme prévu, ça ne sera pas une grosse perte de toute façon: l'ouverture d'une connexion MySQL n'est pas particulièrement coûteuse par rapport aux autres SGBD. De plus, n'oubliez pas de réinitialiser tous les paramètres pertinents le cas échéant (quelle que soit la valeur de la session que vous modifiez, elle vous attendra la prochaine fois pour établir une connexion et réutiliser celle-ci.).