Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

[HTTP] connexion entre deux serveurs



  1. #1
    kishkaya

    Arrow [HTTP] connexion entre deux serveurs


    ------

    Bonjour,
    J'ai un probleme d'ordre technique, peut être l'un d'entre vous connait il une solution.

    Je vous présente tout d'abord l'application que j'ai développée et comment je veux la faire evoluer.
    J'ai monté un serveur appache http sur une distribution ubuntu. Le client accède à une page sur mon serveur où une applet flash lui permet de streamer son micro. Je recupere le flux et je le stocke dans un wav.
    JE dois effectuer une transformation lourde de ce wav qui necessite beaucoup de cpu. Pour cela j'ai mis un autre serveur sur lequel sont les algorythmes de conversion.
    Actuellement l'applet flash envoie des ordres à mon serveur (elle accede à des pages php) qui lance la conversion une fois le son enregistré. La page php accedée envoie le wav enregistré puis lance la conversion. Pour cela j'utilise le protocole ssh car c'est celui que je sais le mieux mettre en place en php (c'est carrement inadapté comme protocole ici).
    LE probleme est que les deux serveurs ne dialoguent pas, c'est toujours un dialogue unilateral. Je ne peux pas savoir quand la conversion est finie ou si le fichier a bien été receptionné qu'en demandant par l'intermediaire du premier serveur si le fichier existe ou si le fichier final existe.

    J'aimerais mettre en place une communication entre ces deux serveurs mais je n'en ai pas du tout les competences, j'ai pensé que pour faire simple je pourrais mettre un serveur http sur le deuxieme serveur aussi et les deux serveurs dialogueraient en http. Mais je ne sais pas comment mettre ca en place.

    La plus grosse question que je me pose est : quand j'accede à une page sur internet en envoyant une requete http, si je renvoie une autre requete avant d'avoir recu la reponse du serveur, la premiere requete est oubliée.
    D'ou la question, Si les deux serveurs dialoguent en http, sachant qu'ils auraient tous les deux une IP fixe, et que les processus de conversion demande 4-5secondes, pourrais je faire la conversion de plusieurs fichiers son en même temps (plusieurs utilisateurs auraient streamé un son) ??

    Auriez vous des idées au niveau fondamental (serveur, protocole, architecture) pour mettre ca en place ? auriez vous également des solutions de langage pour l'implementation ??

    Merci de votre patience (pour la lecture)

    Kheraud

    -----

  2. Publicité
  3. #2
    Aneldo

    Re : [HTTP] connexion entre deux serveurs

    Pour établir une conversation entre deux serveurs, utilise des sockets.
    cf http://www.php.net/manual/fr/ref.sockets.php

    Ton premier serveur peut envoyer au second le fichier à traiter. Celui ci dit ou il en est par linterédiaire d'une socket. Ou plutot dit ou il en est si on l'interoge sur un certain port par une socket.
    Le programme qui tourne sur le deuxieme serveur n'a pas besoin d'etre un programme php. Java gere tres bien les sockets.

  4. #3
    kishkaya

    Re : [HTTP] connexion entre deux serveurs

    C'est pas mal comme idée.
    Le programme que je fais tourner est un fichier compilé par matlab c'est dur d'y inclure des sockets.
    La question queje me pose est : le premier serveur peut il etablir plusieurs connexions avec le deuxieme en même temps ???

    Le programme sur le deuxieme serveur peut etre lancé avec une commande php genre exec() ou system().
    C'est une bonne idée.

    Je vais me renseigner plus profondement sur les sockets.

    Merci

  5. #4
    Aneldo

    Re : [HTTP] connexion entre deux serveurs

    Citation Envoyé par kishkaya Voir le message
    La question que je me pose est : le premier serveur peut il etablir plusieurs connexions avec le deuxieme en même temps ???
    Oui bien sure, le mieu est de faire comme ceci :

    server1 veut etablir une connexion sur le port n de server2, il se duplique (à l'aide de fork pour créer un processus fils identique qui continuera à sa place)

    C'est le processus fils de server1 qui établiera la connexion avec server2.

    server2, se duplique aussi (toujours fork), et le processus fils utilise le port n2 pour communiquer au processus fils de server1 tandis que le processus pere de server2 continue d'écouter le port n pour si jamais une nouvelle connexion doit etre établie.

    Bon courage.

  6. A voir en vidéo sur Futura
  7. #5
    kishkaya

    Re : [HTTP] connexion entre deux serveurs

    Merci pour toutes ces infos.
    Je ne comprends pas l'utilité de fork (ni a quoi cela fait reference) mais ce n'est pas grave.
    Ton idée de socket est tres bonne en lisant rapidement un article sur developpez.com je me rend compte que c'est exactement ce qu'il me faut.
    L'article en question est celui ci : http://stephaneey.developpez.com/tutoriel/php/sockets/

    Je vais faire a peu pres pareil meme si l'architecture n'est pas la même est je vais lancer des exec(mon processus) pour faire les transformations de son dont j'ai besoin.

    Merci pour ton aide.

    PS : si t'as 5 min pourrais tu m'expliquer, pour ma culture personnelle et peut etre l'amelioration de ce que je fais, ce vers quoi tu as voulu m'aiguiller avec fork ??

  8. #6
    Aneldo

    Re : [HTTP] connexion entre deux serveurs

    bonjour kishkaya

    fork te permettrai d'avoir plusieurs connexions simultannées entre server1 et server2.

    cette fonction permet de dupliquer un processus.

    Petit exemple :
    Sur server2 un processus (socket) tourne en attente d'une requete sur un certain port (n).
    La requette arrive, le processus la traite puis se remet en attente de requettes sur ce port.
    Dans ce cas, pendant que la requete est traitée, toutes les nouvelles qui arrivent sont ignorées (cela peut poser probleme).

    Ainsi il est intéressant de duppliqer le processus sur server2 quand une requete arrive : on aura alors un processus père et un processus fils. Le processus pere continuera à écouter le port n et le processus fils traitera la requete sur un autre port (n').
    La création du processus fils par le processus pere se fait via la fonction fork (pcntl_fork - http://fr.php.net/manual/fr/function.pcntl-fork.php - en php).


    C'est sure qu'il faut déjà faire quelque chose qui tourne avant d'y introduire la duplication de processus.
    Je pense que pour le server2, le php n'est pas le langage aproprié, mais il l'est pour le server1.



    Pour en revenir aux sockets : les sockets te permettent aussi de transférer un fichier (en plus de connaitre l'état du traitement du fichier par le server2)


    As tu mieux compris mon explication?

  9. Publicité
  10. #7
    kishkaya

    Re : [HTTP] connexion entre deux serveurs

    Bonjour,
    Oui j'ai tout compris. C'est tres simpa de m'avoir expliquer tout ca.
    J'ai monté mon deuxieme serveur et ca marche plutot bien.
    Malherureusement je n'ai pas eu le temps de tester la dupplication de processus.


    Je vais regarder en java si ca serait pas mieux de faire le daemon du deuxieme serveur avec cette implementation.

    J'avoue que l'interet du php est qu'il ne necessite aucune compilation et qu'en ce sens il est plutot pas mal pour le prototypage.

    Merci encore pour ton aide Ca m'a été plus que utile.

    Kheraud

  11. #8
    Aneldo

    Re : [HTTP] connexion entre deux serveurs

    En java, il n'y a pas de fork, mais tu peux faire la meme chose (créer d'autre processus à partir d'un) : en utilisant les threads (j'ai utilisé les threads java avant de connaitre fork et je les ai trouvé très maniables).

    Mais si tu veux garder l'avantage de la non compilation et l'utilisation de la fonction fork, utilise perl (tres pres de php ). Il suffit qu'il y ait perl d'installer sur ton server2.

  12. #9
    kishkaya

    Re : [HTTP] connexion entre deux serveurs

    Bonjour,
    Bon aujourd'hui j'ai acheté un bouquin sur perl justement et j'ai commencé à le lire.

    J'avais une question plus simple que j'ai essayé de resoudre ce matin mais dont je ne suis pas venu a bout.

    en utilisant socket_read() coté serveur2 et socket_write() cote serveur1 en php j'envisage d'envoyer au deuxieme serveur l'ordre de telecharger un fichier sur le serveur1 ou alors envoyer directement le fichier du serveur1.

    Je bloque pas mal la dessus. J'ai essayé de regarder avec un application serveur la commande envoyé par un navigateur quand on veut uploader des fichiers. Mais je la comprends pas vraiment (je comprends la synthaxe mais pas comment ca provoque le telechargement).
    Et quand bien même, si je recupere cette commande, sur le serveur 2, je la recupere dans une string. A partir de la je vois pas comment recuperer le fichier.

    Je me rend bien compte que je pose des questions de debutant, mais ma formation de départ est plutot l'electronique que les reseaux, j'effectue un stage actuellement pour gagner des competences.

    Merci encore pour ton aide. J'espere ne pas abuser.
    La solution que k'ai trouvé pour l'instant est de lire le fichier wav avec fread() de la mettre dans une string d'envoyer cette string au serveur2, de la mettre dans un fichier du même nom. Ca marche mais ca reste du bricolage. Peut etre que Php a une fonction pour telecharger un fichier distant mais dans la doc de php.net je ne trouve pas vraiment comment faire.

    kheraud

  13. #10
    kishkaya

    Re : [HTTP] connexion entre deux serveurs

    BOnjour,
    J'ai réglé mon probleme, la fonction copy() de php autorise les adresses distantes sur des repertoires avec le chmod adequat. ca marche pas mal pour l'instant juste le probleme de processus, actuellement les connexions sont mises en file d'attente.

    Merci pour ton aide, j'arriverai a en venir a bout seul

    Kheraud

Discussions similaires

  1. Connexion entre 2 serveurs + ligne ASDl
    Par parsy dans le forum Internet - Réseau - Sécurité générale
    Réponses: 1
    Dernier message: 19/11/2007, 18h16
  2. Connexion entre 2 serveurs (windows 2003)
    Par parsy dans le forum Internet - Réseau - Sécurité générale
    Réponses: 0
    Dernier message: 15/11/2007, 14h39
  3. Probleme de connexion entre deux ordinateurs
    Par skyline dans le forum Internet - Réseau - Sécurité générale
    Réponses: 10
    Dernier message: 11/07/2006, 20h20
  4. Connexion entre PC
    Par Pavilion dans le forum Internet - Réseau - Sécurité générale
    Réponses: 9
    Dernier message: 24/07/2005, 16h05
  5. Connexion simple de deux ordinateurs
    Par Michael dans le forum Internet - Réseau - Sécurité générale
    Réponses: 6
    Dernier message: 17/01/2005, 17h01
Découvrez nos comparatifs produits sur l'informatique et les technologies.