Journal Quelle technologie pour développer un agent intelligent en ligne ?

Posté par  (site web personnel) .
Étiquettes : aucune
0
24
juin
2004
Je réfléchis à une application en ligne (hébergeable facilement) de type agent intelligent mais ne sait pas trop quelle technologie utiliser.

En gros, les contraintes, c'est de pouvoir faire en ligne des traitements assez longs (analyse de pages HTML) et stocker tout ou partie des résultats dans des fichiers centralisés.

Le PHP n'est donc pas adapté, principalement pour des raisons de PHP Time Out.

J'ai donc tenté un petit développement en Java (langage que je ne pratique plus depuis cinq ans...), sous la forme d'un applet. Le problème, c'est le stockage sur fichier, qui est fortement bridé pour des raisons de sécurité dans les applets.

Je me suis alors dit que le XUL, bien que moins "universel", pourrait faire l'affaire. Mais un programme en XUL permet-il facilement une gestion des I/O sur un serveur ?

Bref, je sèche un peu. Votre avis est donc le bienvenu ! Que choisiriez-vous à ma place ?
  • # Hum

    Posté par  (Mastodon) . Évalué à 5.

    À mon avis tu mélanges tout, non ? XUL c'est pour décrire des interfaces, c'est à priorié géré du côté du client. PHP n'a pas de problème de timeout en lui même, seulement quand il est utilisé pour générer des pages via apache (il existe un interpréteur php que l'on peut utiliser comme ceux de perl, ruby et python). Quant à Java, le problème de stockage se situe, pour ce que j'en sais, côté client quand tu fais une applet. Si ce problème existe aussi côté serveur (mais j'en doute), tu peux le contourner avec une BdD.

    Pour moi le choix à faire dépend de ce dont tu disposes pour héberger ton programme, et de ce que tu veux faire. Je ne suis pas sûr qu'une application de type CGI soit un bon choix. Tu as un moyen d'héberger un programme qui tourne tout le temps ?
    • [^] # Re: Hum

      Posté par  (site web personnel) . Évalué à 3.

      > À mon avis tu mélanges tout, non ?
      Un peu, vu que je m'attaque ici à des technologies que je connais peu (Java) ou pas du tout (XUL). J'ai plus fait dans le passé du C/C++, du Visual Basic (patapé), PHP et de l'ASP (patapé non plus).

      > XUL c'est pour décrire des interfaces
      J'ai plus ou moins compris, mais après avoir vu Robin (http://robin.sourceforge.net/(...)) je me suis demandé ce que tu pouvais réellement implémenter comme traitement en XUL et s'il était possible de faire du stockage durable.

      > PHP n'a pas de problème de timeout en lui même, seulement quand il est utilisé pour générer des pages via apache
      Oui, mais vu que je dois héberger l'application sur Online, je suis confronté au problème de time_out. Pour d'autres choses, je peux passer par l'interpréteur, mais pas dans ce cas-ci.

      > tu peux le contourner avec une BdD
      Une des craintes que j'ai, c'est que le code soit réversé et les paramètres de connexion extrait du bytecode Java. Est-ce une crainte ridicule ou bien ai-je des raisons de m'en faire ?
      Sinon, je pensais à un système de type web services avec un web services PHP pour réaliser le stockage et un applet pour le traitement (qui envoie les données à stocker au web service PHP). Ca te semble propre comme architecture ?

      > ce dont tu disposes pour héberger ton programme
      Un hébergement Online.fr... C'est à dire pas grand chose. Peut-être pourrais-je m'en sortir via un hébergeur gratuit orienté technologies Java (servlets, etc) ou Python, mais j'avoue que c'est un secteur que je connais très mal.

      > Tu as un moyen d'héberger un programme qui tourne tout le temps ?
      Pas vraiment. Surtout, je ne préfère pas me lancer dans l'administration système. Ceci dit, tu pensais à quoi de particulier ?
      • [^] # Re: Hum

        Posté par  (Mastodon) . Évalué à 2.

        «Pas vraiment. Surtout, je ne préfère pas me lancer dans l'administration système. Ceci dit, tu pensais à quoi de particulier ?»

        En gros le problème avec un CGI ou un programme PHP hébergé sur un serveur, c'est que le programme ne s'exécute que quand tu fais une requête dessus. Je ne sais pas ce que ton agent intelligent doit faire, mais peut-être que tu voudras qu'il tourne même quand personne ne fait de requêtes dessus.

        Un exemple, c'est si tu veux faire un crawler pour un moteur de recherche, tu as besoin qu'il tourne tout le temps.

        «Une des craintes que j'ai, c'est que le code soit réversé et les paramètres de connexion extrait du bytecode Java. Est-ce une crainte ridicule ou bien ai-je des raisons de m'en faire ?»

        Mais ton code sera exécuté côté serveur ou côté client ? Effectivement si tu veux stocker côté serveur, et exécuter côté client, il vaut mieux effectivement faire une interface en PHP pour communiquer entre le client et le serveur.
        • [^] # Re: Hum

          Posté par  (site web personnel) . Évalué à 2.

          > tu voudras qu'il tourne même quand personne ne fait de requêtes dessus

          Non, il devra tourner à la demande. Pas besoin de carwler ou de chose équivalente. Je dois réaliser des traitements ponctuels. Mais ces traitements ont besoin de disposer d'un référenciel en vue d'effectuer une comparaison entre ce qui était sur une page et ce qui est au moment du traitement.

          > Mais ton code sera exécuté côté serveur ou côté client ?

          C'est ouvert.

          Le problème côté serveur, c'est que je suis confronté au time_out si je suis en PHP. Le problème côté client, c'est que je suis gêné pour la création de fichiers de stockage.

          Donc, soit il existe des hébergements gratuits / pas chers et fiables me permettant de faire des traitements lourds côté serveur (et donc le problème est résolu) soit il faut que le traitement se fasse côté client (genre applet Java) mais alors comment stocker les infos :

          - base de données (quid du code réversé)
          - webservice PHP appelé par applet pour le stockage,
          - une autre technologie comme JSP + servlets (comment héberger ?)
          - Python / Zope (comment héberger ?) ?
          - CGI en C (comment héberger ?)
          - autre ?

          J'en suis là dans ma réflexion...
  • # TimeOut

    Posté par  . Évalué à 0.

    Le PHP n'est donc pas adapté, principalement pour des raisons de PHP Time Out.

    Le timeout tu peux le gérer dans le configuration ...
    Et même directement à partir de tes scripts (pour personnaliser le timeout suivant le style de ton programme) :

    # void set_time_limit ( int seconds );

    Pour plus d'info : http://fr.php.net/function.set-time-limit(...)
    • [^] # Re: TimeOut

      Posté par  (site web personnel) . Évalué à 2.

      Mon hébergeur (Online.Fr) bloque ce genre de fonctionnalité (j'ai vérifié et c'est bien le cas pour "set_time_limit".
    • [^] # Re: TimeOut

      Posté par  (site web personnel) . Évalué à 1.

      Le timeout tu peux le gérer dans le configuration ...

      Sur les serveurs mutualisés, je pense que les hebergeurs ont desactivé cette fonctionnalité, pour eviter les DOS.
      • [^] # Re: TimeOut

        Posté par  (site web personnel) . Évalué à 2.

        > Sur les serveurs mutualisés, je pense que les hebergeurs ont desactivé cette fonctionnalité, pour eviter les DOS.

        Je suis en train de regarder du côté de Lost Oasis qui offre des hébergements mutualisés mais apparamment avec moins de restrictions (typiquement, les fonctions de modification de la configuration n'ont pas l'air systématiquement bridées) et un support de CGI Perl / Python / C, le tout pour un prix comparable à ce qui est pratiqué par Online.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.