|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : février 2010 Messages : 6 ![]() |
Bonjour à tous,
je rencontre des difficultés dans un script php dans lequel j'utilise la libraire php multi process. La libraire ne pose pas de problème en soi. J'aimerai simplement passer un zip handle (Classe ZIPARCHIVE) aux scripts fils afin qu'ils y copient des fichiers. Les portions de code : script père : Code :
Code :
Avez vous des idées pour que mes scripts fils puissent tous accéder au même zip handle ? Merci |
||||
|
|
00
|
|
|
#2 | |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Citation:
Bref, tu ne peux pas passer un handle de type Ressource car ils ne sont pas sérializable (regarde la doc de PHP pour plus de détails). En fait, les variables qui transitent entre les scripts par $_SESSION par exemple sont toujours encodées et décodées sous forme de chaine de caractères, or une ressource ne peut pas subir un tel traitement. Ce qu'il faut donc que tu fasses pour palier à ça serait de créer une structure de données (un tableau ou un objet pourraient faire l'affaire) et que cette structure permette de "recréer" le handle dans l'état ou il était dans le script parent. Regarde du coté de __sleep et __wakeup ça te donnera des idées.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : février 2010 Messages : 6 ![]() |
Merci pour ta réponse.
J'avoue qu'utiliser une DB comme espace global est limitant en terme de vitesse, mais c'était la seule chose que j'appréhendais correctement. A ce sujet, je vais aller me renseigner sur Redis et memcached. Citation:
EDIT : Redis ne gère au final que des variables de types string int array ... mais pas de handle de fichier, non ? Citation:
|
||
|
|
00
|
|
|
#4 | |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Citation:
-- Edit Je pense que ce que tu cherches à faire peut être rattaché au design pattern Chain of responsibilities, tu devrais y jeter un oeil.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Inscription : février 2010 Messages : 6 ![]() |
Ouai effectivement ça annule l'utilité du pseudo parallélisme.
Du coup c'est pas terrible, puisque mon but premier c'est d'aller plus vite qu'avec la 1 ère version du script. Avec memcached ce bout de code me permettrait il de stocker et récupérer un handle ? Code :
Le père attends que tous les fils aient finis et balance le zip en dl via un header('location : blabla.zip') |
||
|
|
00
|
|
|
#6 | |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Citation:
La solution pour toi est de n'avoir qu'un seul script à lancer en "arrière plan" du script parent.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
|
00
|
|
|
#7 | ||
|
Invité de passage
![]() Inscription : février 2010 Messages : 6 ![]() |
OK.
Le problème c'est que j'ai pensé à cette pseudo parallélisation car le script initial tournait avec un foreach, dans le style : Code :
D'où mon idée de pseudo paralléliser ce foreach. Je suppose que ça doit être pareil en Perl au niveau du passage d'handle d'un script à un script fils ... ? |
||
|
|
00
|
|
|
#8 | |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Citation:
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : février 2010 Messages : 6 ![]() |
J'ai repris le script de mon prédécesseur et je suis ouvert à toute proposition.
J'ai même tenter de créer l'arborescence et les fichiers directement sur le serveur, dans un répertoire temporaire via les scripts fils. Et de d'archiver le tout dans le script père ... C'est pas terrible ... Les lenteurs sont toujours là.... Mais je pense creuser dans cette voie en essayant d'aller plus loin. Merci pour vos conseils! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com