lien C++ entre apache, bdd et client

Questions sur le développement d'Apache et de ses modules.

Modérateur : Modérateurs

Acropole
Nouveau membre
Messages : 5
Inscription : mer. 25 avr. 2007, 22:06

lien C++ entre apache, bdd et client

Messagepar Acropole » mer. 25 avr. 2007, 22:11

Bonjour,

Je suis en train d'essaye de mettre au point un système client/serveur dans lequel un client demande un fichier au serveur. Le serveur, aprés avoir vérifier la validité du client va chercher dans la base de données le lien vers le fichier nécessaire et le renvoi en enregistrant certains données (nombre de fois que tel fichier à été demandé par exemple).
Je souhaite utiliser C++ pour le lien client/serveur/bdd.

Je n'ai pas trouvé de documentation sur le sujet.

Pourriez-vous m'orienter vers une documentation sur le sujet ?

merci

Avatar de l’utilisateur
Gandalf
Sorcier des forums
Sorcier des forums
Messages : 2528
Inscription : jeu. 04 déc. 2003, 22:58

Messagepar Gandalf » sam. 28 avr. 2007, 18:13

pourquoi utiliser C++ pour développer ce genre d'application qui semble pouvoir être développé simplement avec un langage de plus haut niveau tel que PHP, Python, voire Java (avec Tomcat) ?
Celui qui détruit quelque chose pour savoir ce que c'est, a quitté le chemin de la sagesse.

Acropole
Nouveau membre
Messages : 5
Inscription : mer. 25 avr. 2007, 22:06

Messagepar Acropole » sam. 28 avr. 2007, 18:43

la rapidité est primordiale, d'où le choix du C++.
Ceci dit, on peut apparemment gagner énormément en rapidité avec APC mais je n'ai pas encore troué comment l'intsaller avec php

Avatar de l’utilisateur
remifedora
Membre avancé
Membre avancé
Messages : 94
Inscription : mar. 27 févr. 2007, 14:00
Localisation : Champagne
Contact :

Messagepar remifedora » sam. 28 avr. 2007, 19:10

Si la rapidité est le critère principal, le C++ est un très mauvais choix dans ton cas (consultation / mise à jour d'un BD et envoi d'un fichier).

En effet, qui dit C++, dit généralement cgi.
    L'appel d'un CGI est très couteux (chargement de l'exécutable, même si ça peut s'optimiser)..
    La connexion à la base de données est aussi très couteuse


Avec un langage, même interprété, installé en module d'Apache, comme Perl ou Php, pas de chargement à chaque page et tu peux utiliser une connexion permanente à la BD. Donc ce sera forcément plus performant.

A+
Des RPM LAMP pour Fedora / RHEL / CentOS sur http://rpms.famillecollet.com/

Acropole
Nouveau membre
Messages : 5
Inscription : mer. 25 avr. 2007, 22:06

Messagepar Acropole » sam. 28 avr. 2007, 20:01

hmm, il me semble pourtant que, justement, le C++ est pré-compilé et chargé une seule fois. Que je sache les logiciels ne chargent pas les DLL à chaque fois qu'ils ont besoin d'une fonction externe.

Avatar de l’utilisateur
Gandalf
Sorcier des forums
Sorcier des forums
Messages : 2528
Inscription : jeu. 04 déc. 2003, 22:58

Messagepar Gandalf » dim. 29 avr. 2007, 15:25

évidemment, si tu parles d'une DLL, c'est une autre histoire.

je vois deux cas de figure :

- un module apache
- une DLL ISAPI

dans ton cas, un module apache me semble plutot compliqué...

il existe mod_isapi pour apache, qui permet d'utiliser des DLL ISAPI (au départ conçues pour le serveur IIS de microsoft)

J'espère que cela peut t'aider à pointer dans la bonne direction.

Mais pour en revenir aux performances, dans ce type d'applications, la partie traitement en elle-même représente très peu du temps de la requête.
La plupart du temps passé l'est à attendre l'établissement de la connection à la base de données, ainsi qu'à attendre le retour du résultat des requêtes...
le plus important est donc souvent d'établir des connections persistantes à la base, et d'utiliser au maximum des requêtes préparées (pré-compilées).
Celui qui détruit quelque chose pour savoir ce que c'est, a quitté le chemin de la sagesse.

Acropole
Nouveau membre
Messages : 5
Inscription : mer. 25 avr. 2007, 22:06

Messagepar Acropole » dim. 29 avr. 2007, 16:47

il n'y aura pas vraiment d'attente du resultat de la requete.
En fait il s'agit d'un système de diffusion publicitaire (comme les banières web).
Le système n'aura donc a priori à aller chercher dans la base que de temps en temps, lorsque tel fichier aura été envoyé x*1000 fois.
Le reste des accès sql seront surtout l'entrée de statistiques sur les clients(IP, nombre de requetes, fréquence des requetes, etc) pour faire des stats régulièrement.
Ce qu'il faut, par contre, c'est que le client recoive trés rapidement le fichier qu'il aura demandé car il n'y a que 10 a 20 secondes entre le moment de la requete et le moment où la pub n'est plus affichée.
Plus on perd de temps dans la transaction, plus il y'a de chances que la pub soit zappée.
Je me demande si je ferrais pas mieux de confier ça a quelqu'un qui s'y connait vraiment :?

Avatar de l’utilisateur
Gandalf
Sorcier des forums
Sorcier des forums
Messages : 2528
Inscription : jeu. 04 déc. 2003, 22:58

Messagepar Gandalf » mar. 01 mai 2007, 14:43

Dans ce cas, l'important ici serait à mon avis d'utiliser un cache, de manière efficace.

Si le serveur a suffisemment de mémoire vive, tu peux demander à apache de conserver en mémoire les fichiers envoyés, de sorte qu'à chaque requête, apache n'aura pas à relire le disque pour envoyer le fichier au client.

Après, tu peux utiliser memcached pour stocker l'autorisation de téléchargement.
Memcached est un serveur de cache très rapide qui permet de garder des données en mémoire pour une durée fixe, de sorte qu'au bout de X secondes, la donnée sera invalide.
Memcached permet aussi de stocker des valeurs numériques et de les incrémenter simplement.
Celui qui détruit quelque chose pour savoir ce que c'est, a quitté le chemin de la sagesse.

Acropole
Nouveau membre
Messages : 5
Inscription : mer. 25 avr. 2007, 22:06

Messagepar Acropole » mar. 01 mai 2007, 15:10

ok
on vient de me parler de JSP avec tomCat et j'ai vu un truc sur fastCGI en C
Pour isapi, apparemment ça ne gère pas les requetes asynchrones et ça charge/décharge la dll a chaque appel :o d'aprés la doc apache.

difficile de s'y retrouver dans tout ça :D

La solution java semble la plus abordable. J'ai déjà travaillé sur java en cours et je connais assez bien C++, ça devrait aller.

Merci pour tes infos :)


Revenir vers « Développement Apache »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité