2009-08-30 6 views
1

Je crée un nouveau framework PHP en fonction de Zend Framework. Ce sera un framework MVC généraliste pour le développement web. Je suis inquiet au sujet 2 aspects:A propos de la journalisation générale, de la mise en cache et des performances dans un nouveau framework

  1. Exploitation forestière:
    Dois-je utiliser l'enregistrement? Y a-t-il des problèmes de performances importants lors de l'utilisation de la journalisation?

  2. Requêtes de base de données de mise en cache:
    Je cache certaines requêtes de la base de données. Je suis préoccupé par la mise en cache des informations relatives aux utilisateurs. Supposons qu'il existe des informations relatives aux utilisateurs. Comme leurs informations personnelles, etc. Si je cache de telles données, pour chaque utilisateur un fichier de cache sera généré dans mon dossier de données. Supposons maintenant qu'il y ait entre 10 000 et 20 000 utilisateurs en ligne en 2 heures. Cela signifie qu'il y aura 20000 fichiers sur mon dossier.
    Ma question est la suivante, est-ce que cela affectera les performances de mon serveur. Y at-il une limite supérieure sur le nombre de fichiers qu'un dossier peut avoir sur le serveur.

Répondre

2

N'utilisez pas de cache basé sur un fichier. Les opérations du système de fichiers sont exceptionnellement lentes: http://imgur.com/X1Hi1.gif. Utilisez memcached, vous n'avez pas besoin de beaucoup de mémoire contrairement à ce que dit le post précédent, la quantité de mémoire dont vous avez besoin est totalement proportionnelle à la quantité de choses que vous voulez stocker, et memcached peut réduire les données en fonction de la fréquence d'accès.

1

1) Vous voulez absolument la journalisation, je recommanderais xdebug disponible à http://www.xdebug.org/. Vous pouvez en savoir plus sur les frais généraux de performance sur leur site. (plus il s'intègre bien avec la version PHP d'Eclipse)

2) Je ne suis pas vraiment sûr de vouloir mettre en cache beaucoup d'informations utilisateur, mais memcache est probablement l'un des meilleurs choix pour la mise en cache dans php (http://se2.php.net/memcache). Et oui, il n'y a aucune limite sur le nombre de fichiers, et vous ne dépasserez probablement pas la limite de taille de fichier 32 bits = =)

+0

Si j'utilise la journalisation. Alors pourquoi ne devrais-je pas utiliser Zend_Log? Y a-t-il des problèmes avec ça? –

0

La mise en cache est un vrai problème, il est presque impossible de le faire correctement du point de vue d'un utilisateur/programmeur . Je ne mettrais pas en cache des choses aussi simples que des données utilisateur. Ceci est déjà mis en cache dans la base de données. Concentrez-vous davantage sur les requêtes complexes et complétez les pages Web (ou des parties de celles-ci). Sauf si vous avez une page comme stackoverflow où je vois vraiment peu de façons de mettre en cache quelque chose que vous avez à chercher dur et vérifiez vos fichiers journaux sur ce que les utilisateurs font sur votre site et vous verrez bientôt des hotspots.

Memcache n'est pas recommandé par mes soins sauf si vous avez beaucoup de mémoire (> 8 Go) sur votre machine. Memcache fonctionne mieux si vous lancez des serveurs Memcache avec 16 Go en ne faisant rien d'autre pour les mettre en cache. Pour les sites, le matériel et les exigences plus petits, vous devriez envisager APC car il s'agit d'un cache de données très faible et il accélère l'exécution de php en même temps (vous ne voulez pas exécuter un serveur de production sans cache de bytecode).

Questions connexes