Forum Programmation.php Paralléliser du code PHP ?

Posté par  (site web personnel) .
Étiquettes : aucune
0
7
août
2004
Bonjour,

Je réalise de temps à autre des programmes PHP utilisant l'API de Google. Le problème de ce genre de programme, c'est qu'il passe un temps non négligeable à attendre que Google renvoie la réponse à la recherche faites. Donc, vu que chaque requête contient plusieurs appels à Google, le script PHP butte souvent sur un 'PHP Time Out'.

D'où je me demandais s'il était possible de faire plusieurs appels en même temps en PHP (paralléliser le code). De cette manière, plutôt que d'attendre n x temps_de_reponse_de_Google, je n'attendrais plus que 1 x temps_de_reponse_de_Google.

Merci pour vos réponse.

RV.
  • # marche pas à mon avis

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

    Sauf erreur de ma part il n'y a aucun API de threading en PHP, ce que tu demandes est donc impossible, à moins de de réécrire l'API Google pour qu'il fasse des appels asynchrones.
  • # oui mais sans doute non

    Posté par  . Évalué à 2.

    dans la doc, on trouve la fonction pcntl-fork()

    http://www.nexen.net/docs/php/annotee/function.pcntl-fork.php(...)

    mais dans l'intro du chapitre on trouve en même temps deux limitations :

    • ça ne marche pas sous windows, c'est à savoir si c'est une appli succeptible de tourner sur autre chose que du linux

    • plus ennuyeux on peut lire ceci :

      "Cette extension ne doit pas être activée pour une utilisation en serveur web, car les résultats pourraient être inattendus."

    http://www.nexen.net/docs/php/annotee/pcntl.intro.php(...)
  • # TMTOWTDI

    Posté par  . Évalué à 1.

    Ça ne répondra pas vraiment à ta question, mais néanmoins pour info, tu peux faire ce genre de choses assez facilement en Perl grâce aux modules suivants :
    - CGI (pour facilement gérer les paramètres, etc)
    - WWW::Search::Google ou Net::Google ou ... (pour utiliser facilement l'API de Google)
    - IPC::Shareable (pour partager des données entre différents processes que tu auras créés via des forks au fil de ton prg, notamment pour donner au processus père les résultats des requêtes Google).
    (Voir sur http://search.cpan.org/(...) )

    Et ça marche (normalement) aussi très bien sous WinXX.

    Éventuellement une voie de contournement, donc ;)
    • [^] # Re: TMTOWTDI

      Posté par  . Évalué à 2.

      Non, le fork ne fonctionne pas bien sous Activeperl/win (pas d'api correspondante dans le système pour reproduire la fonctionnalité).
  • # set_time_limit

    Posté par  . Évalué à 1.

    Bonjour,
    si je ne m'abuse tu peux mettre le time_limit à 0 pour le rendre infini:

    set_time_limit(0);

    De cette manière tu n'auras plus de time out :)

    Au revoir,
    Mike M.

Suivre le flux des commentaires

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