Le Mercredi 30 Octobre 2002 19:04, Pascal Perez - LHA a �crit : > Bonjour, > > J'ai un petit probl�me que je n'arrive pas � r�soudre.... j'ai plusieurs > scripts PHP qui demandent tout le temps les m�me variables et j'aimerais > faire en sorte qu'elles deviennent des variables d'environnement au m�me > titre que, par ex., $HOSTNAME ou $MACHTYPE.
Salut, Tu peu utiliser les fonctionaliters de partage m�moire ipc, ceci te permet de cr�er un segment m�moire patageable par plusieurs processus, ces segements sont indentifi� par un num�ros. Pour ceci php propose les fonctions d�crites � la page internet suivante: http://www.php.net/manual/fr/ref.sem.php . Le seul petit probl�me et de trouver un num�ros (cl�s de la memoire) qui n'est et ne sera pas utiliser par d'autres applications. Avec php4 > 4.2 tu peus utiliser la function ftok sinon faut la faire au pif en regardant les num�ros d�j� utiliser avec la commande cat /proc/sysvipc/sh ou ipcs. J'ai mis un petit example ci dessous qui fonctionne chez moi, il suffit de d'appeler le script depuis un explorateur avec optionnelement le parametre oper=init pour r�initiliser le conteur ( http://xxxx/xxxx.php?oper=init). Tu peus �galement utiliser la commande $php xxxx.php [init] . Par ailleur rien n'emp�che d'utiliser d'autre langages c (fonctions shmget, shmat) pour acceder au m�me segment m�moire mais dans ce cas il faudra regarder comment php enregistre ces variables dans le segment memoire. Naturelement ce segment se volatilise si l'ordi s'arrete ou si tu utilise la commande $ipcrm sur le segment mais tu peus faire un petit script appeler au shutdown qui sauve la valeur et un autre qui la restore au boot. A+ Martial Example de script php4 <? // header("Content-Type: text/html; charset=ISO-8859-1"); // si php >= 4.2 $shmkey = ftok( // $HTTP_SERVER_VARS["SCRIPT_FILENAME"],"smhtest"); $shmkey = 0x100; $shmid = shm_attach ( $shmkey, 100, 0600); $shmvarkey = 0; if ((isset($argv[1]) && $argv[1] == "init") || (isset($oper) && $oper == 'init')){ $cnt = 0; shm_put_var( $shmid, $shmvarkey, $cnt); } $cnt = shm_get_var ( $shmid, 0); echo "Valeur du compteur global = $cnt<BR>\n"; $cnt++; shm_put_var( $shmid, $shmvarkey, $cnt); shm_detach ( $shmid ); // optionnel car le detach se fait d'office // quand le process s'arrete. ?> -- MuTECH Martial Guex Rue des Alpes 1452 Les Rasses Switzerland Tel: +41 (24) 454 46 35 GSM: +41 79 473 16 39 Fax: +41 (24) 454 46 32 -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question. Ouais, pour se d�sabonner aussi.
