Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 16 sur 16
  1. #1
    Invité de passage
    Inscrit en
    mars 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : mars 2007
    Messages : 6
    Points : 0
    Points
    0

    Par défaut Peut-on faire ceci avec Perl ?

    Bnojour à toutes et tous.

    Je programme principalement php/mysql.

    Le "problème" de php est que si l'on veut permettre à 2 utilisateurs connectés d'interagir car il faut nécessairement passer par la base de données ou fichiers texte, etc. bref par une utilisation du disque dur et non pas de la ram.

    Ce qui fait que dans le cas d'un simple chat il faut donc "logger" et "rafraichir"...

    J'aimerais savoir si Perl permet d'utiliser une "partie commune" de la Ram.
    Exemple : je crée un tableau et tout utilisateurs identifié peut y "accéder" et mettre à jour ses propres champs. En gros avoir le fonctionnement d'une base de donnée mais en ram afin que tout a chacun puisse consulter les données des autres en "live" afin avoir un temps de traitement hyper rapide.

    J'espère avoir été assez clair.

  2. #2
    Membre du Club
    Inscrit en
    janvier 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : janvier 2006
    Messages : 42
    Points : 41
    Points
    41

    Par défaut

    Salut,

    Faut que tu sois plus explicite au niveau de ta question... Parce que pour ce que tu veux faire, il y'a plusieurs solutions.

    Si tu comptes utiliser perl en mode CGI, ça n'est pas possible. Ton serveur web te retourne les données générées par ton script une fois qu'il est terminé, et donc basta la portion de mémoire partagée. Faut creuser côté serveur web, s'il peut te donner accès à une portion de mémoire partagée qu'il gère lui même (qui persisterait d'une consultation de page à une autre). Je ne suis pas expert de ce côté, mais à ma connaissance ça n'existe pas (reprenez moi si je me trompe).

    Maintenant tu peux te faire un démon perl qui gère tes discussions avec un client php/perl qui consulte sur la même machine (par socket, fichier ou autre). Finalement ça revient à faire de la BD light sans BD...

    Ou alors tu quittes complètement le mode de fonctionnement par navigateur web et tu développes ton propre couple client/serveur...

    Personnellement, je partirais sur la solution: client PHP/BD. En termes de temps de traitement c'est pas si lourd que ça. Le plus long sera certainement du côté du transfert des données entre le navigateur et le serveur web... Après le temps de saisie de la phrase à envoyer par l'utilisateur
    Maintenant, y'a certainement moyen de mettre à jour dynamiquement ta page (avec Ajax) mais comme je ne suis pas expert là dessus non plus (en fait je ne suis expert en rien ), il faut que tu creuses.

    Bref, tu n'as qu'à choisir... et bon courage !

    PluX59

  3. #3
    Invité de passage
    Inscrit en
    mars 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : mars 2007
    Messages : 6
    Points : 0
    Points
    0

    Par défaut

    merci pour ta réponse mais
    le hic c'est que je veux etre capable de gérer les actions de plus de 1000 personnes en temps réel !!!

    donc avec une base de données c'est impossible quasiment

    d'où la solution ram...

    je veux faire la meme chose qu'une bdd mais en ram et pas avec le dur !
    donc avoir un equivalement de sql en mémoire vive ... avec de temps a autre des sauvegardes par portions en bdd sql afin de garder des traces des dernieres actions des utilisateurs.

    je crois que je vais m'orienter vers une solution c++

  4. #4
    Membre du Club
    Inscrit en
    janvier 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : janvier 2006
    Messages : 42
    Points : 41
    Points
    41

    Par défaut

    Re,

    Juste une question simple... A ton avis, comment est implémenté le forum sur lequel nous sommes en train de discuter ?

    Il n'y a peut-être pas 1000 personnes en temps réel dessus (encore que...), mais comment ça se passe pour les gros sites qui reposent sur des solutions Apache/PHP/BD ?

    Va poser ta question sur le forum approprié (PHP/BD), mais je pense que tu sous-estimes la puissance d'une base de données bien organisée (ie: avec un bon shéma de tables)... A mon avis tu écrouleras le réseau ou ton serveur (apache, iis ou maison) avant d'écrouler ta BD...

    Tiens nous au courant de tes investigations...

    PluX59

  5. #5
    Invité de passage
    Inscrit en
    mars 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : mars 2007
    Messages : 6
    Points : 0
    Points
    0

    Par défaut

    5000 personnes ... 1 requete toutes les 2 secondes en moyenne
    soit ... 2500 requetes secondes...
    je vais bencher sql pour voir si ca tient

  6. #6
    Rédacteur
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 26
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2006
    Messages : 1 076
    Points : 1 867
    Points
    1 867

    Par défaut

    Citation Envoyé par tagomago
    5000 personnes ... 1 requete toutes les 2 secondes en moyenne
    soit ... 2500 requetes secondes...
    je vais bencher sql pour voir si ca tient

    Et tu comptes tenir combien de temps avec 2 Go de RAM à ce rythme là ?

    Pour info, sur dvp : "Le record de connectés est de 2 800" (marqué en bas de la page d'accueil du forum). Bon, je te l'accord, il n'y a pas une requête toute les deux secondes, mais ça tient... Ta RAM elle n'a pas été conçue pour ça.
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

  7. #7
    Membre du Club
    Inscrit en
    janvier 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : janvier 2006
    Messages : 42
    Points : 41
    Points
    41

    Par défaut

    Un peu hors cadre: compter que sur une population de personnes la moitié bosse à un instant t, tous les chefs d'entreprise en rêvent

  8. #8
    Invité de passage
    Inscrit en
    mars 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : mars 2007
    Messages : 6
    Points : 0
    Points
    0

    Par défaut

    c pas pour bosser

    2 gi de ram ? qui parle de 2 gi... c'est pour les notepads ca

  9. #9
    Membre actif Avatar de mobscene
    Inscrit en
    avril 2005
    Messages
    331
    Détails du profil
    Informations forums :
    Inscription : avril 2005
    Messages : 331
    Points : 178
    Points
    178

    Par défaut

    Citation Envoyé par tagomago
    Bnojour à toutes et tous.

    Je programme principalement php/mysql.

    Le "problème" de php est que si l'on veut permettre à 2 utilisateurs connectés d'interagir car il faut nécessairement passer par la base de données ou fichiers texte, etc. bref par une utilisation du disque dur et non pas de la ram.

    Ce qui fait que dans le cas d'un simple chat il faut donc "logger" et "rafraichir"...

    J'aimerais savoir si Perl permet d'utiliser une "partie commune" de la Ram.
    Exemple : je crée un tableau et tout utilisateurs identifié peut y "accéder" et mettre à jour ses propres champs. En gros avoir le fonctionnement d'une base de donnée mais en ram afin que tout a chacun puisse consulter les données des autres en "live" afin avoir un temps de traitement hyper rapide.

    J'espère avoir été assez clair.
    Tu peut faire sa en deux temps trois mouvement en asp.net sans passé par une base de données ou autre truc dans le genre



    Si tu comptes utiliser perl en mode CGI, ça n'est pas possible. Ton serveur web te retourne les données générées par ton script une fois qu'il est terminé, et donc basta la portion de mémoire partagée. Faut creuser côté serveur web, s'il peut te donner accès à une portion de mémoire partagée qu'il gère lui même (qui persisterait d'une consultation de page à une autre). Je ne suis pas expert de ce côté, mais à ma connaissance ça n'existe pas (reprenez moi si je me trompe).

    Si IIS fonctionne avec un système de pool d'application en asp.net tu peut partager des variables entre plusieur session grace a cela suffit de definir la variable que tu veux partager en tant que variable d'application exemple:

    Code :
    Application['machin'] = "blablabla";

    Si tu veut faire du php no problemo phalanger est ton amie il s'agit d'une implementation .Net de php ( encore en beta )

    http://www.codeplex.com/Phalanger


    Sinon pour php pure faudrait dev une extension juste pour sa
    Everybody have in their the potential to be their own god : Marilyn Manson

  10. #10
    Membre actif Avatar de mobscene
    Inscrit en
    avril 2005
    Messages
    331
    Détails du profil
    Informations forums :
    Inscription : avril 2005
    Messages : 331
    Points : 178
    Points
    178

    Par défaut

    Citation Envoyé par tagomago
    merci pour ta réponse mais
    le hic c'est que je veux etre capable de gérer les actions de plus de 1000 personnes en temps réel !!!

    donc avec une base de données c'est impossible quasiment

    d'où la solution ram...

    je veux faire la meme chose qu'une bdd mais en ram et pas avec le dur !
    donc avoir un equivalement de sql en mémoire vive ... avec de temps a autre des sauvegardes par portions en bdd sql afin de garder des traces des dernieres actions des utilisateurs.

    je crois que je vais m'orienter vers une solution c++
    Hummm tu peut faire sa :

    [client] <-> [serveur web] <-> [gestionnaire de dépot]


    --- Gestionnaire de dépot ---
    soluce :
    perl
    module storable
    poe

    quand le client envoie des données a partager au serveur web celui-ci via un script biensur envoie les données vers le dépot via une socket sous forme de table de hashage celui-ci stocke tout sa bien gentillement en ram sous forme séralisé ou non comme tu veut. Puis si tu redemande les données sa fait l'inverse

    donnée a garder :

    $va = {
    'clef' => la clef de stockage
    'données' => les données
    'ser' => 1 ou 0 (1 sa sérialise )
    };

    vala enfin je sais pas si c'est clair mais sa marcherai sans problème comme système après faudrais tester les perf
    Images attachées Images attachées
    Everybody have in their the potential to be their own god : Marilyn Manson

  11. #11
    Invité de passage
    Inscrit en
    mars 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : mars 2007
    Messages : 6
    Points : 0
    Points
    0

    Par défaut

    merci mobscene
    perso je suis pas trop .NET et microsoft en general

    j'ai trouvé un truc : http://www.your-socket.com/
    mais apparement faut payer

  12. #12
    Membre actif Avatar de mobscene
    Inscrit en
    avril 2005
    Messages
    331
    Détails du profil
    Informations forums :
    Inscription : avril 2005
    Messages : 331
    Points : 178
    Points
    178

    Par défaut

    Citation Envoyé par tagomago
    merci mobscene
    perso je suis pas trop .NET et microsoft en general

    j'ai trouvé un truc : http://www.your-socket.com/
    mais apparement faut payer
    J'ai édité mon post au dessus sa t'irais pas sa ??? en plus c'est gratuit sa ce programme en 10 mn

    tu bosse sur quoi comme application parce que

    c pas pour bosser

    2 gi de ram ? qui parle de 2 gi... c'est pour les notepads ca

    Everybody have in their the potential to be their own god : Marilyn Manson

  13. #13
    Invité de passage
    Inscrit en
    mars 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : mars 2007
    Messages : 6
    Points : 0
    Points
    0

    Par défaut

    mobsene je te contacte par mp

  14. #14
    Membre actif Avatar de mobscene
    Inscrit en
    avril 2005
    Messages
    331
    Détails du profil
    Informations forums :
    Inscription : avril 2005
    Messages : 331
    Points : 178
    Points
    178

    Par défaut

    Que compte tu faire avec autant de puissance ?
    Everybody have in their the potential to be their own god : Marilyn Manson

  15. #15
    Membre du Club
    Inscrit en
    janvier 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : janvier 2006
    Messages : 42
    Points : 41
    Points
    41

    Par défaut

    Cartainement un notepad géant...

    oups, désolé, c'est parti tout seul

  16. #16
    Expert Confirmé Sénior
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2003
    Messages
    6 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : avril 2003
    Messages : 6 170
    Points : 7 665
    Points
    7 665

    Par défaut

    Vous semblez oublier mod_perl. mod_perl permet tout à fait d'avoir des variables globales à tous les scripts exécutés par un même thread de Apache, après faut voir de plus près si ça peut te convenir.

    --
    Jedaï

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •