Précédent   Forum du club des développeurs et IT Pro > Autres langages > Perl > Langage
Langage Toutes vos questions sur les scripts Perl en général. Avant de poster, veuillez consulter les FAQs perl, les cours Perl, les critiques de livres et les sources Perl.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 01/03/2007, 08h04   #1
tagomago
Invité de passage
 
Inscription : 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.
tagomago est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 11h41   #2
PluX59
Membre du Club
 
Inscription : janvier 2006
Messages : 42
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 42
Points : 41
Points : 41
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
PluX59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 12h00   #3
tagomago
Invité de passage
 
Inscription : mars 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 6
Points : 0
Points : 0
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++
tagomago est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 12h29   #4
PluX59
Membre du Club
 
Inscription : janvier 2006
Messages : 42
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 42
Points : 41
Points : 41
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
PluX59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 12h36   #5
tagomago
Invité de passage
 
Inscription : mars 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 6
Points : 0
Points : 0
5000 personnes ... 1 requete toutes les 2 secondes en moyenne
soit ... 2500 requetes secondes...
je vais bencher sql pour voir si ca tient
tagomago est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 15h13   #6
Woufeil
Rédacteur
 
Avatar de Woufeil
 
Étudiant
Inscription : février 2006
Messages : 1 076
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2006
Messages : 1 076
Points : 2 080
Points : 2 080
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.
Woufeil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 16h21   #7
PluX59
Membre du Club
 
Inscription : janvier 2006
Messages : 42
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 42
Points : 41
Points : 41
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
PluX59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 16h46   #8
tagomago
Invité de passage
 
Inscription : mars 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 6
Points : 0
Points : 0
c pas pour bosser

2 gi de ram ? qui parle de 2 gi... c'est pour les notepads ca
tagomago est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 16h56   #9
mobscene
Membre actif
 
Avatar de mobscene
 
Inscription : avril 2005
Messages : 331
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 331
Points : 178
Points : 178
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



Citation:
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
mobscene est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 17h19   #10
mobscene
Membre actif
 
Avatar de mobscene
 
Inscription : avril 2005
Messages : 331
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 331
Points : 178
Points : 178
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
Type de fichier : png Dessin1.png (20,5 Ko, 9 affichages)
__________________
Everybody have in their the potential to be their own god : Marilyn Manson
mobscene est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 17h20   #11
tagomago
Invité de passage
 
Inscription : mars 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 6
Points : 0
Points : 0
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
tagomago est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 17h31   #12
mobscene
Membre actif
 
Avatar de mobscene
 
Inscription : avril 2005
Messages : 331
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 331
Points : 178
Points : 178
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

Citation:
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
mobscene est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 19h14   #13
tagomago
Invité de passage
 
Inscription : mars 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 6
Points : 0
Points : 0
mobsene je te contacte par mp
tagomago est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2007, 09h31   #14
mobscene
Membre actif
 
Avatar de mobscene
 
Inscription : avril 2005
Messages : 331
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 331
Points : 178
Points : 178
Que compte tu faire avec autant de puissance ?
__________________
Everybody have in their the potential to be their own god : Marilyn Manson
mobscene est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2007, 10h47   #15
PluX59
Membre du Club
 
Inscription : janvier 2006
Messages : 42
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 42
Points : 41
Points : 41
Cartainement un notepad géant...

oups, désolé, c'est parti tout seul
PluX59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2007, 18h21   #16
Jedai
Expert Confirmé Sénior
 
Avatar de Jedai
 
Étudiant
Inscription : avril 2003
Messages : 6 068
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2003
Messages : 6 068
Points : 8 209
Points : 8 209
Envoyer un message via Yahoo à Jedai
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ï
Jedai est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h48.


 
 
 
 
Partenaires

Hébergement Web