Communauté Informatique NDFR.net : Rendre une opération indépendante d'un script PHP - Programmation Web (HTML, PHP, ASP, Java, XML, etc.)
Reply
Rendre une opération indépendante d'un script PHP
Thread Tools Display Modes
  #1  
Old 03-09-2005, 15:41
KnuX's Avatar
KnuX KnuX is offline
Membre senior
 
Join Date: 08-12-2002
Age: 39
Posts: 1,117
Rendre une opération indépendante d'un script PHP

Salut à tous,
Le sujet sans doute pas clair, mais je vais m'expliquer plus ici...

J'ai fait un client IRC en PHP. Ce client a certaines opérations à effectuer, notamment une requête vers une base de données créées avec SQLite (www.sqlite.org) et les drivers PDO+PDO_SQLITE disponibles sur www.php.net.

Comme le client se connecte à un serveur IRC, il doit répondre régulièrement à la requête "PING" envoyée par le serveur, par un "PONG". Souvent, le délai de réponse est de 3 minutes avant que le serveur considère la connection comme perdue.

Seulement voilà, il arrive que la requête puisse prendre plus de 3 minutes (pitié, ne pas décaler mon problème en rétorquant que la base n'est pas optimisée ou je ne sais quoi, ce n'est pas la clé du problème). Dans cette situation, le serveur coupe donc la connexion puisque la lecture/écriture sur la socket est "suspendue" le temps que PHP attende la réponse d'SQLite.

Je cherche donc à pouvoir dire à PHP d'aller exécuter la requête tout en le laissant continuer son travaille d'écoute et d'écriture sur la socket. En fait, j'imagine ça comme une fonction qui s'occuperait de la requête et qui en appellerait une autre une fois celle-ci terminée (ce qui est parfois appelé un "callback" donc).

Quelqu'un aurait-il une idée ? On m'a proposé d'utiliser le "fork", je ne m'y connais pas trop et je voudrais savoir s'il n'y a pas des solutions envisageables...

Merci d'avance
__________________
http://max.skyrock.com/
Reply With Quote
  #2  
Old 04-09-2005, 18:53
fonji fonji is offline
Membre senior
 
Join Date: 01-07-2003
Age: 39
Posts: 1,627
Si j'ai bien tout compris, tu cherches à faire de la programmation concurrente en php...
Ca m'étonnerai fortement que ce soit possible...

Désolé mais j'ai pas tant d'idée... L'ouverture temporaire d'une nouvelle fenêtre pour effectuer le pong ne répondrait pas au serveur car ça changerait le port du client et donc le serveur prendrait ceci comme venant d'ailleurs...
Reply With Quote
  #3  
Old 04-09-2005, 23:37
KnuX's Avatar
KnuX KnuX is offline
Membre senior
 
Join Date: 08-12-2002
Age: 39
Posts: 1,117
Toujours pas trouvé non plus
__________________
http://max.skyrock.com/
Reply With Quote
  #4  
Old 05-09-2005, 00:01
Rasqual Rasqual is offline
Membre junior
 
Join Date: 01-06-2005
Age: 42
Posts: 25
Bonjour,
C'est une solution que je n'ai pas testé, donc je ne garantis pas son fonctionnement.
Quelqu'un a récemment commenté sur le manuel en ligne que register_shutdown_function() est la seule manière de faire de la programmation asynchrone (si on exclut PCNTL, qui est non portable, je suppose)
L'idée serait de lancer un autre processus en fond pour effectuer les opérations sur SQLite, en faisant attention à ne pas lancer de tâche concurrente sur la base.
Dès que son travail est terminé, le processus communique avec l'appelant, via une socket. Le gros du boulot ce serait de gérer les erreurs, ce qui risque d'être bordélique si on ne fait pas attention.

Si tu ne vises que *nix (ce qui serait dommage), tu peux essayer de forker, mais là je ne m'y connais pas trop non plus.

Voilà, j'espère que cela t'aidera un peu.
Reply With Quote
  #5  
Old 06-09-2005, 12:25
Fred's Avatar
Fred Fred is offline
00 Agent
 
Join Date: 19-10-2002
Location: MI6 HQ
Age: 41
Posts: 2,452
Send a message via MSN to Fred
Ce genre d'exemple touche à la limite du php : il te faudrait 3 processus, l'un qui assure la liaison avec le serveur IRC, le second qui assure la liaison avec la base SQL et le dernier qui fasse l'interface avec l'utilisateur. Pour du temps réel, le PHP c'est quand même pas génial, mieux vaut sans doute tenter quelque chose en java ... tu as quelles contraintes pour ton projet ?
__________________
Eh y'a une grenouill' sur le bureau !!!
... non Gaston y'a pas d'grenouille sur le bureau
Eh y'a un gorille devant la porte !!!
... non Gaston y'a pas de gorille devant la porte
Weua y'a un p'tit oiseau sur la table !!!
... non Gaston
Reply With Quote
  #6  
Old 06-09-2005, 13:20
KnuX's Avatar
KnuX KnuX is offline
Membre senior
 
Join Date: 08-12-2002
Age: 39
Posts: 1,117
Ce n'est pas un projet, et je n'ai pas de contraintes particulières.

Si je venais à devoir mettre en production cette application, ce serait sur une machine serveur qui ne dispose pas de la JVM

Mais bon, tant pis, pour l'instant je vais me contenter des performances d'sqlite3 qui sont nettement supérieures à celles de sqlite2, mon bot ne met même plus de 40 secondes pour chercher quelque chose

Si un jour je trouve une solution, je vous le dirais, merci pour l'aide
__________________
http://max.skyrock.com/
Reply With Quote
  #7  
Old 06-09-2005, 13:54
fonji fonji is offline
Membre senior
 
Join Date: 01-07-2003
Age: 39
Posts: 1,627
Sauf erreur pour un applet le serveur n'a pas besoin de jvm, mais le client oui...
Par contre, pour un servlet (donc du j2ee en gros), là c'est l'inverse... Je me trompe ?
Reply With Quote
  #8  
Old 06-09-2005, 14:32
KnuX's Avatar
KnuX KnuX is offline
Membre senior
 
Join Date: 08-12-2002
Age: 39
Posts: 1,117
Ce n'est pas une applet

Ca se lance en ligne de commande et il n'y a pas d'interaction avec l'utilisateur (sauf avec d'autres clients IRC sur un salon )
__________________
http://max.skyrock.com/
Reply With Quote
Reply

Bookmarks


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
PHP 4.3.11 et PHP 5.0.4 1for-matik Actualité 0 05-04-2005 13:52
PHP 4.3.10 et PHP 5.0.3 1for-matik Actualité 0 16-12-2004 18:40
PHP 5.0.0 Final Toitoine Actualité 10 18-07-2004 17:16
Problème de lecture de fichier en PHP stan Programmation Web (HTML, PHP, ASP, Java, XML, etc.) 9 12-10-2003 22:47
creer un site en php kenny250 Discussions sur le site et/ou le forum 5 03-11-2002 11:40

All times are GMT +2. The time now is 06:53.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.