2010-06-24 15 views
0

Ainsi, il semble que lorsqu'un client effectue plus d'une connexion au serveur Web (Windows + Apache 2.0.x + PHP 5.1.6), il meurt. par exemple.Connexions simultanées sur Apache

Je mets 1 appel phpthumb - par ex.

<img src="/library/classes/3rdparty/phpthumb/phpThumb.php?src=/media/images/gallery/cart1.jpg&w=100&h=100" /> 

Cela fonctionne. Mais si je mets 3 comme sur la page, ça charge juste pour toujours (selon firebug) ... et ça ne se voit jamais!

+1

Utilisez-vous des sessions? –

+0

Avez-vous vérifié vos paramètres apache2 dans httpd.conf pour un maximum de connexions? Qu'est-ce que votre error_log vous a dit? – Thariama

+0

Le journal des erreurs Apache n'affiche aucune entrée - le niveau du journal des erreurs est sur "info". Je n'utilise pas de sessions, sauf qu'il ne fonctionne pas sur le site, j'ai fait un fichier vide, avec seulement 3 lignes que j'ai montrées dans mon post original, et il fait la même chose. En utilisant seulement 1 ligne, ou en regardant cette URL phpThumb dans mon navigateur montre l'image cependant. Donc ça marche en faisant seulement 1 requête, mais dès qu'il y en a 2 ou plus ça meurt. De httpd.conf: KeepAlive On MaxKeepAliveRequests 100 ThreadsPerChild 250 MaxRequestsPerChild 0 Werner

Répondre

1

Les navigateurs limitent le nombre de connexions simultanées à un serveur Web, les mettant simplement en file d'attente prêtes à être demandées une fois qu'un "emplacement" devient libre. Le nombre réel de connexions simultanées varie d'un navigateur à l'autre et même d'une version à l'autre, et peut parfois être modifié par l'utilisateur du navigateur. Les serveurs Web peuvent également limiter le nombre de connexions simultanées.

Si chaque requête mise en file d'attente prend beaucoup de temps à s'exécuter, vous risquez de rencontrer des difficultés, ce qui rend l'ensemble très lent. Si vous utilisez des sessions dans votre script PHP, cela peut être encore plus lent, car une seule instance d'un script peut accéder au fichier de session à la fois ... et si elle ne le libère pas, elle est verrouillée jusqu'à ce que c'est fini, alors votre limite de connexion est limitée à 1 à la fois. Une solution possible à cela est de ne pas utiliser session_start() sauf si vous en avez besoin; une autre est de libérer le verrou de la session dès que vous avez fini d'accéder au fichier de session à l'aide session_write_close()

+0

Merci pour la réponse! mais, il doit y avoir quelque chose que je peux faire, serveur sage, pour résoudre ce problème? Parce que cela a fonctionné sur notre serveur précédent, mais cela a complètement échoué en termes de matériel, d'où le nouveau. Les problèmes de sécurité possibles ne seront pas un problème, car il s'agit d'un serveur de développement local. Des idées? (dans le cas où j'ai besoin de sessions et faire session_write_close() partout est hors de mon contrôle) – Werner

0

Essayez d'utiliser session_destroy() dans votre /library/classes/3rdparty/phpthumb/phpThumb.php

0

Quelle version de PHP avez-vous installé, VC6 et thread-safe ou non? Je regarderais dans cela et passer à la bonne en fonction de la façon dont vous l'utilisez (vérifiez http://windows.php.net/download/ - Quelle version dois-je choisir?) ...

Questions connexes