IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Une extension PHP pour créer un serveur réseau [PHP 5.4]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Developpeur PHP Magento e-commerce
    Inscrit en
    Juin 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Developpeur PHP Magento e-commerce
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 53
    Par défaut Une extension PHP pour créer un serveur réseau
    Bonjour,

    Je suis à la recherche d'une extension PHP qui permettrait de mettre en place un serveur réseau, mais sans avoir à gérer explicitement les sockets en PHP (en quelque sorte équivalent à Node.js).

    L'idée serait que le script PHP n'aurait plus qu'à paramétrer l'instanciation et d'implémenter des méthodes pour gérer les protocoles des couches OSI 5 à 7.

    Le but final est (entre autres) de pouvoir mettre en place un serveur WebSocket. Chaque connexion à ce serveur pourrait, d'une part notifier les autres d'un évènement particulier, et d'autre part le serveur pourrait nativement partager des objets entre toutes ces connexions.

    J'ai déjà créé une implémentation en PHP avec ext_socket, mais l'API de ce module est difficile à exploiter efficacement.

    PS : le serveur web interne de PHP présent à partir de la version 5.4 est transparent pour les scripts PHP et il ne peut pas être exploité pour ce besoin.

    Merci.

    Greg

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Je ne comprends pas bien pourquoi essayer de travestir PHP pour un besoin pour lequel il n'est absolument pas conçu est plus intéressant qu'utiliser une technologie 1000x plus adaptée comme Java ou NodeJS ??

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Si c'est uniquement pour les websocket tu peux jeter un oeil sur : http://socketo.me/
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre averti
    Profil pro
    Developpeur PHP Magento e-commerce
    Inscrit en
    Juin 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Developpeur PHP Magento e-commerce
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 53
    Par défaut
    Je ne comprends pas bien pourquoi essayer de travestir PHP pour un besoin pour lequel il n'est absolument pas conçu est plus intéressant qu'utiliser une technologie 1000x plus adaptée comme Java ou NodeJS ??
    Javascript a évolué pour devenir un langage système/serveur avec NodeJS, V8 (plus anciennement avec Rhino). Java, Python, Rails et Perl font du web depuis un certain temps sans que ça ne choque personne.

    Pourquoi PHP devrait-il se cantonner à de la génération de HTML alors que des fonctions du langage ou des API introduites avec les versions successives de PHP 5 ne sont pas toutes présentes dans la majorité des langages cités?

    @grunk : merci pour ce lien, c'est typiquement le genre d'API que je recherche, mais implémentée en C, dans une extension PHP.

  5. #5
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Javascript a évolué pour devenir un langage système/serveur avec NodeJS, V8 (plus anciennement avec Rhino). Java, Python, Rails et Perl font du web depuis un certain temps sans que ça ne choque personne.

    Pourquoi PHP devrait-il se cantonner à de la génération de HTML alors que des fonctions du langage ou des API introduites avec les versions successives de PHP 5 ne sont pas toutes présentes dans la majorité des langages cités?
    Parce que PHP à été créé au départ comme un pré-processeur hypertexte (d'ou son nom), son mode de fonctionnement se prête assez mal aux exercices que tu veux lui voir faire. Le cas de JavaScript est différent, ECMAScript n'est pas un langage web à proprement parler: c'est un langage destiné à fournir du scripting à une application hôte comme un navigateur, un serveur d'application ou même un jeu. JavaScript peut donc être utilisé dans d'autres contexte que celui du web, PHP quand à lui n'a que deux modes de fonctionnement: en CLI et en Web au sein d'un serveur web.

    C'est pour cela que vouloir réaliser un serveur d'application avec PHP va à l'encontre de sa nature. On ne démonte pas un pneu avec une cuillère et on ne bois pas sa soupe avec un démonte-pneu, simple question de bon sens.

  6. #6
    Membre averti
    Profil pro
    Developpeur PHP Magento e-commerce
    Inscrit en
    Juin 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Developpeur PHP Magento e-commerce
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 53
    Par défaut
    Ce sont de curieuses réponses pour quelqu'un qui implémente de la programmation orientée prototype en php alors que les classes, interfaces, traits et closures utilisés ensemble permettent de faire bien plus. Tu fais des essais toi-même, mais tu me donnes l'impression de rester fermé aux idées des autres dès qu'elles sortent du cadre que tu t'es fait de PHP. J'espère au moins me tromper sur ce point.

    Une extension permet déjà de créer des socket BSD pour un serveur depuis au minimum PHP 4.1, voire peut être avant sous la forme d'une extension PECL.

    PHP a été créé pour générer des pages HTML, il a évolué pour servir de langage de script système en mode CLI. Un serveur réseau est un script CLI, je ne déroge pas à la règle que tu as inventée plus haut.

    Quoi qu'il en soit, j'ai des besoins spécifiques qui ne peuvent pas être résolus par une solution qui utiliserait Node, à moins de réécrire l'ensemble de mon application en javascript, avec un résultat incertain.

  7. #7
    Membre chevronné Avatar de Lunixinclar
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 416
    Par défaut
    Citation Envoyé par Grégory PLANCHAT Voir le message
    Je suis à la recherche d'une extension PHP qui permettrait de mettre en place un serveur réseau
    Salut PHP dispose de l'appel système select().
    J'ai écrit pas mal de serveurs en C (serveurs de chat, jeux vidéos, jeu d'échec, vidéoconférence, etc...) et sincèrement si je devais le faire en PHP ce serait avec select.

  8. #8
    Membre averti
    Profil pro
    Developpeur PHP Magento e-commerce
    Inscrit en
    Juin 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Developpeur PHP Magento e-commerce
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 53
    Par défaut
    Bonjour,

    Merci pour ta réponse.

    Oui, la première implémentation que j'ai fait utilise l'extension socket et la fonction socket_select(), mais je trouve l'API de cette extension pas très pratique.

    Les valeurs présentes dans les tableaux sont des ressources PHP brutes, rien ne peut y être attaché, pas même un identifiant de connexion qui permettrait simplement et rapidement de retrouver un objet qui gère cette connexion (pour la gestion de session par exemple).

    Le problème se résout avec un appel à array_search, mais ca ne me parait ni optimal, ni pratique.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 20/09/2008, 21h56
  2. [Spip] créer une page php pour chaque enregistrement ajouté à la base
    Par ecdxml dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 05/06/2008, 17h33
  3. Réponses: 4
    Dernier message: 17/04/2007, 19h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo