PHP & NODE.JS

Est-ce vraiment une mauvaise pratique?

a marqué ce sujet comme résolu.

Salut à tous!

J'ai une question qui me turlupine:

J'ai créer un site web (plateforme sociale) que je présenterais sans doute en fin d'année sur OC et ZDS en php ( avec jQuery etc bref un site moderne en php quoi). J'ai découvert en milieu d'année node.js, et j'ai vachement kiffé, j'ai commencé par créer des simples tchat jusqu'à des trucs plus développés avec sail.js…

Et j'ai eu des idées de fonctionnalités avec mon site en php AVEC node.js ( node.js pour le real time sans raffraichissement lourd pour le serv comme avec ajax, la puissance). J'ai réussi sans difficultés à allier proprement la communication 'php' node.js. Pour tout dire, je voudrais utiliser node.js pour un assistant personnel style JARVIS que j'ai créer ( du même genre que le célèbre projet Gladys mais avec des différences significatives), les notifications (actuellement en ajax php mais solution lourde pour le serv), puis des instances de messages instantanés.

Je pourrais faire en sorte que tout mon site soit fait avec node.js, mais j'avoue que le recodage full node.js me fait flipper ( comment se débrouiller avec les sessions par ex), j'ai déjà coder la base du concept de mon site en php donc ça me donne un peu le bourdon de devoir tout recoder, puis enfin si je code full node.js, je dois coder avec sail.js pour un code propre mais je ne maitrise pas encore toute la subtilité de celui-ci.

Est-ce une réelle mauvaise idée d'allier php et node.js, sachant que j'y arrive plutôt correctement?

Merci pour vos réponses les zesteurs.

+0 -0

Salut,

Alors pour ce qui est de lié Node.js et PHP, ça peut bien se passer. Après niveau perf… Je sais pas si c'est vraiment valable ou pas. Sachant que tu est donc plus ou moins obligé de faire tourné Apache & co qui consomme quand même au niveau de ton serveur.

Pour tout te dire, j'étais (il y a encore 2/3 ans) développeur PHP que j'ai rapidement abandonné pour passer sous Node.js/Sails.js justement.

Concernant les sessions & co, Sails.js est très complet/puissant et pas mal de modules sont dispo pour les authentifications (Passport.js). Après, que ce soit en PHP ou en JS ton code sera relativement le même.

Personnellement je déconseillerais de faire un site complèt en Node.js. Pas tellement du point de vue de la conception, mais plus du point de vue de l'administration du serveur lui-même. Un serveur Apache est plus simple à manipuler que Node.js, et plus simple à gérer en cas de plantage. Je trouve que les outils d'administration ne sont pas encore au point. Et c'est surtout que c'est tout un pan qu'il faut gérer, ce qui est moins le cas sur de l'Apache.

Ceci étant, mon point de vue sur Node.js est mitigé. Le fait de devoir passer par des modules pour à peu près tout n'est pas bon pour la pérennité du code, la plupart des modules étant déjà obsolètes et incomplets. J'attends que tout ait pris en maturité avant d'envisager de l'utiliser réellement en production.

PS : un 4e Seb pour me répondre ? ^^

+4 -0

Non c'est le 2ème qui répond :p

Tu peut pas comparé un serveur Node.js et un serveur Apache. L'architecture est complètement différente. En cas de plantage, si tu a relativement bien codé, tu peut sortir les dernières erreurs sans aucun soucis. Mais il est vrai que Node.js est encore très jeune par rapport à Apache/PHP.

Concernant les modules, rien ne t'oblige à les mettre à jours. Par contre, quand tu fait une mise à jour majeur, il faut faire attentions aux nouveautés/changements de tes modules.

Il est donc très important de réaliser ses propres tests unitaires quand tu fait une application d'assez grosse envergure. Ca permet de connaître rapidement les problèmes en cas de mise à jour de module ;) (j'en sais quelque chose ^^, je réalise actuellement mon éditeur de carte avec).

Je dirais donc pour finir que… Apache est plus stable et la réalisation d'un site est plus facile et rapide mais en revanche beaucoup plus lourd et lent.

Quant à Node.js, il n'est pas destiné aux débutants mais se prend quand même relativement facilement en mains. De nombreux frameworks émergent comme Sails.js et bien d'autres suivant ce que tu souhaite faire. Tu peut facilement créer et publier tes modules perso pour les utiliser dans tous tes projets futurs.

Voici quelques statistiques concernant Node.js vs Apache

On peut donc voir que Node.js est bien plus rapide. Après, ça dépend vraiment de ce que l'utilisateur souhaite faire.

Merci pour vos réponses :p , J'ai eu une réponse de Spoke44 et de Monkey3d sur Oc ( oui je poste également sur Oc car j'aime avoir bcp d'avis :) ), ils sont de l'avis de Seb n°3 ^^.

Bref, je pense que je vais allier proprement php & node.js car il y a un truc que vous dites qui m'embête pas mal c l'utilisation des multiples modules svt obsolètes, incomplets… Puis je n'ai pas l'impression d'avoir une totale maîtrise de mon projet.

Cela ne m'empêchera pas de bidouiller avec les modules, peut être qu'un jour je ferais comme Seb n°2 !

Aussi, je sais que php ne sera jamais aussi rapide que node.js mais il paraîtrait que php7 sort en fin d'année, la perf de php devrait clairement s' améliorer ;)

+0 -0

Bref, je pense que je vais allier proprement php & node.js car il y a un truc que vous dites qui m'embête pas mal c l'utilisation des multiples modules svt obsolètes, incomplets… Puis je n'ai pas l'impression d'avoir une totale maîtrise de mon projet.

En faite, les modules c'est super simple d'utilisation. Tu a ce qu'on appelle un package qui contient la totalités des modules que tu utilise ainsi que la version que tu utilise. Les modules se mettront à jours uniquement si tu change les numéro de version. Sinon, tu peut utiliser une version d'un module autant de temps que tu le souhaite, ça pose aucun soucis! Tu est donc bien maître de ton projet ;)

Après, c'est une question de choix et d'utilisation :) Bon courage pour ton projet en tout cas :)

Aussi, je sais que php ne sera jamais aussi rapide que node.js mais il paraîtrait que php7 sort en fin d'année, la perf de php devrait clairement s' améliorer ;)

Seb

Oui, la version finale de PHP 7 devrait être publiée le 12 novembre de cette année. Cette nouvelle version, dont le but principal est en effet d'améliorer les performances, devrait les améliorer jusqu'à 70%. Si c'est du vrai, j'aimerais bien voir ce que ça donne. Sinon, si tu ne veux pas attendre jusqu'au mois de novembre, tu peux déjà commencer à utiliser les versions alphas.

+0 -0

Salut Loic,

En fait je cherchais à savoir si le fait de combiner 2 techs est une mauvaise pratique et également éventuellement si cette solution est performante.

Perso, ça désalourdit vachement le serv apache en enlevant les req ajax répétitives ( genre avec les notifs, le rafraîchissement des messages real time ).

Puis j'utilise également node.js pour sa puissance ainsi pour les modules obligatoires pour le fonctionnement de l'intelligence de l'assistant personnel présent sur ma plateforme (pour la domotique 'arduino' etc…).

+0 -0

Salut

Merci pour ton retour.

Combiner plusieurs technologies n'est pas interdit. Si c'est bien fait, il n'y a pas de raisons que ce soit mauvais (au contraire). Ce qui est moche, c'est d'utiliser des technologies pas adaptées à tes besoins.

En revanche, renseigne toi sur les autres options qui peuvent exister : si apache est trop lent, peut-être tu pourrais adapter ta configuration ou passer sur un autre serveur (au hasard… nginx ?). Regarde aussi les caches. Ça allègera pas mal la charge du serveur.

Tu peux aussi "spécialiser" certaines parties de ton application : tu sais que ça c'est lourd, n'existe t-il pas quelque chose qui peut réduire la charge sans avoir à tout ré-écrire ? Si oui, tant mieux, si non, comment l'améliorer (tout ré-écrire dans un autre langage ? Seulement une partie ? Etc.).

Regarde aussi ce qui demande des ressources. Ta base de données (tu dois en avoir une, non ?) n'est-elle pas sollicitée ? Peut-être que la mettre sur un serveur à part peut être bénéfique ?

Bref, as-tu songé à toutes les options avant ? Utiliser nodejs parce que c'est la mode, c'est pas forcément la meilleure option ^^

Bye

Salut :) ,

Ce que je fais actuellement :

  • Je minify tous les fichiers css, js

  • Je travaille avec la mise en cache

  • Toutes les photos sont optimisées : traitement de l'image pour ttes les images mises sur mon serv

  • Moins je fais de rèq sql, mieux c'est ( je m'arrange tjrs à faire le moins de rèq pour le mm résultat)

Ce que j'avais essayé de mettre en place, c'est le même procédé que Facebook , ce qu'on appelle Bigpipe Plus d'information ici . Mais j'ai pas réussi à mettre ceci correctement en place :/ Je vais persévérer tt de mm. Tout ce que j'ai dit juste à présent, c'est au niveau de mon serveur apache.

Pour revenir à node.js, je me suis pas bien expliqué. Dans peu de tps, je vais créer un discret post de mon projet, vous comprendrez exactement mon objectif et l'exact pourquoi du comment utilisation faites avec node.js et php.

+0 -0

Je ne connais pas Bigpipe, je vais aller voir ça ^^. Pourquoi n'essaies tu pas avec nginx ? Si tu as du contenu static, ça va le délivrer très rapidement. Après le reste en configurant bien, ça doit pouvoir s'optimiser encore un peu (soit en gardant nginx, soit en utilisant au passage Apache. Mais je sais pas ce que donne le mélange des deux).

Tout en ayant un assistant intelligent hors norme : Vous avez en effet la capacité d’interagir que cela soit vocalement que par écrit, à cette intelligence artificiel qui vous surprendra de jours en jours : une recherche google, une recherche wikipedia, une playlist spotify, un itinéraire google map et bien plus encore…

A quel niveau se situe ton intelligence ? Est-ce plutôt un système intelligent, qui pour répondre à une tâche effectue une action prédéfinie à l'avance, ou plutôt une véritable intelligence, qui apprend d'elle même ?

C'est une intelligence faible, c'est à dire qu'il anticipe les besoins de l'utilisateur grâce à son code mais n'a pas de réel intelligence, cependant il apprend à répondre aux besoins de l'utilisateurs grâce à ce qu'il lui fournit (informations). J'utilise des stratagèmes afin de rendre le bot plus 'vrai', un peu comme ELIZA, j'essaye de créer de faire ressentir une émotion à l'utilisateur, par exemple, j'utilise les smileys, ça à l'air stupide, mais cela crée un lien émotionnel. Le deep learning m'intéresse beaucoup ainsi que les réseaux de neurones, mais je n'ai pas encore la capacité de créer une intelligence forte. Puis si je voulais faire de l'intelligence forte, il me faudrait bcp bcp de données ( ce que je n'ai pas) ou alors, faut que je fasse un crawler style googlebot…

+0 -0

Pour les fichiers statiques, Nginx est en effet plus rapide. Tu peux aussi utiliser Nginx comme reverse-proxy si tu n'as qu'une seule machine. Dans ce cas, Nginx redirige soit vers Apache, soit vers Node.js, soit c'est lui qui sert le contenu statique. Nginx ne peut remplacer Apache car il est plus lent au niveau de l'exécution du PHP.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte