2009-12-11 10 views
0

J'utilise la technique d'interrogation longue comète avec apache, php, jquery.Comment puis-je tester un site ajax de comète sur un seul hôte et contourner la limite de connexion simultanée du navigateur?

J'ai une mise à jour de comète de base en cours d'exécution et cela fonctionne très bien. Je tente maintenant de construire un script de comète plus complexe, et je veux un meilleur moyen de déboguer. Mes scripts de comète utilisent $ .ajax() avec un long délai, et le côté serveur ne dort que jusqu'à ce qu'il atteigne le délai d'attente ou qu'il ait un événement à envoyer au client. Les demandes de comètes vont à un sous-domaine différent de celui des requêtes ajax principales.

Pour les pages normales, j'édite et teste sur un ordinateur portable linux. J'ai apache, mysql et php avec une base de données de test et une image miroir du site. Je peux éditer, enregistrer et voir les changements sans aucune étape de téléchargement. Pour les trucs de comète que j'ai dû télécharger sur un serveur pour tester. Cela m'oblige à mettre en place quelques faux serveurs, mais la plupart du temps cela m'oblige à télécharger les fichiers modifiés pour chaque test. J'ai un script de chargement principalement automatique, mais c'est encore trop lent.

Le test de problème localement est le délai d'expiration long. Le navigateur n'ouvre pas une autre connexion au même serveur tant que la demande de comète est toujours ouverte. Je n'ai pas de sous-domaine localement, donc toutes les demandes sont envoyées au même serveur, donc elles se bloquent les unes les autres.

J'ai essayé un certain nombre de choses pour faire ce travail et personne ne le fait vraiment. J'ai d'abord essayé de changer le réglage de mon navigateur pour le nombre de connexions simultanées. Cela n'a pas fonctionné dans Firefox sur Linux, et je n'ai rien trouvé à propos de changer cette limite sur d'autres navigateurs.

J'ai essayé de définir mon fichier hosts pour me donner deux noms qui correspondent à mon adresse IP. Ensuite, j'ai essayé de configurer les directives conf VirtualHost dans Apache, mais cela n'a pas fonctionné. Je pense qu'apache cherche un vrai serveur DNS pour lui dire le nom d'hôte, pas seulement mon fichier/etc/hosts. Peut-être que je peux faire tourner un serveur DNS local pour tromper apache en pensant que ma boîte a deux noms, mais cela semble juste un long chemin autour de ce problème. Alors, est-ce que quelqu'un a une idée de la façon de faire ce travail sur une adresse IP/hôte? Je suis nouveau à la chose comète, alors peut-être que je viens de me tromper sur quelque chose. Peut-être que ce n'est même pas possible. De toute façon, il est temps de demander si c'est déjà un problème résolu.

Répondre

2

Il devrait vraiment être possible d'utiliser/etc/hosts pour tromper Apache. Il fonctionne certainement sur Ubuntu Hardy avec Apache 2.2. Essayez de donner un nom d'hôte différent à votre adresse locale. Il suffit d'ajouter une ligne comme celle-ci/etc/hosts:

127.0.0.1 a.example.com b.example.com c.example.com d.example.com 

(Remarque: utilisez un onglet après IP)

Valider cela avec un ping

ping a.example.com 

En vous la configuration apache, vous peut utiliser un alias générique avec un hôte virtuel nommé:

<VirtualHost *:80> 
    ServerName example.com 
    ServerAlias *.example.com 
    ## snip ## 
<VirtualHost> 

Au lieu d'utiliser example.com, vous pouvez utiliser quelque chose qui est sous votre contrôle. J'utilise le sous-domaine local du domaine de notre société (c'est-à-dire quelque chose.local.molindo.at).

Maintenant, vous pouvez utiliser différents sous-domaines pour votre test, chacun avec ses propres limites sur les connexions simultanées.

Vous devrez peut-être redémarrer votre navigateur pour que cela fonctionne.

+0

Je ne suis toujours pas sûr de comprendre les directives NameVirtualHost et VirtualHost, mais je l'ai réussi. Merci! – Mnebuerquo

0

J'ai fait quelque chose de similaire et mon hébergement donne à mes requêtes max la limite atteinte ce qui ne devrait pas arriver. Mais j'ai lu que si mon code php est en boucle infinie .. ie le mode veille l'hébergeur le détecte et rend l'utilisateur de connexion db comme utilisant plus de requêtes que permis. C'est beaucoup à présumer mais j'ai trouvé une solution à cela avec les mêmes spéculations.

+0

Je ne suis pas sûr d'avoir compris cela, mais ce n'est pas un problème d'hébergement. C'est une limitation du navigateur. – Mnebuerquo