variables projets en PHP

Eléphant du PHP | 245 Messages

21 janv. 2011, 10:45

Je me posais une question.
En PHP il existe des variables locales, des variables globales avec $GLOBALS[], des variables de session avec $_SESSION[]
Mais je n'ai pas trouvé un type de variable assez particulier.

Existe-il en PHP des variables projets?
C'est à dire des variables qu'on initialiserait au lancement d'apache par exemple, et qui seraient stockées quelque part pour être utilisables quelque soit le script et quelque soit la session qui l'utilise.

J'ai testé un peu $_ENV, getenv() et putenv(), cela n'a pas été probant.
Même en modifiant des directives du fichier PHP_INI. tels que passer le safe_mode à on et le register_globals à on, je n'arrive pas à définir
putenv("PHP_testVariableEnvironnement=test1"); dans un script et la récupérer avec getenv("PHP_testVariableEnvironnement") dans le script suivant.

ViPHP
xTG
ViPHP | 7331 Messages

21 janv. 2011, 11:03

Pour un problème de ce genre j'utiliserai un fichier ini pour ma part. ;)
$varProjet = parse_ini_file("configuration_projet.ini");

ViPHP
ViPHP | 2577 Messages

21 janv. 2011, 12:34

Bonjour,

Ca n'existe pas à ma connaissance.

En général j'utilise un fichier config.php pour initialiser mes variables ou mes constantes.
Rien ne t'empêche d'avoir un répertoire include définit via include_path dans php.ini qui permettent à tout les sites d'accéder à ce fichier.

Eléphant du PHP | 245 Messages

21 janv. 2011, 18:50

En fait Marzini, j'ai déjà un fichier environnement.php ou je définis des constantes et les variables globales.
Mais il est chargé dans chacun de mes scripts.
Du coup, je ne fait que définir des constantes et des variables en dur.
Je me garde bien d'y faire des requètes en BDD par exemple pour initialiser les variables afin d'optimiser les performances.

Mais du coup , je n'ai pas de variables globales dont la valeur pourrait être mise à jour au cours du temps sans la stocker en BDD ou dans un fichier, mais qui serait stockée dans un endroit mémoire de PHP un peu comme sont stocké $_SERVER['PHP_AUTH_USER'] et $_SERVER['PHP_AUTH_PW'] par exemple.

A défaut de pouvoir paramétrer ce genre de variable, je peux donc utiliser parse_ini_file() mais, du coup, je dois modifier le fichier ini à chaque fois que mes variables sont modifiées ...
Mouais...
bon, en tous cas merci les amis.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 janv. 2011, 04:26

hum, il n'y a pas de sauvegarde entre les différents page d'un site oueb en php hors mis les sessions, il est possible de mettre tous cela en session mais ça pose un problème de sécurité certain :) mais ça ne sera pas partagé entre les scripts, la seule solution est le fichier inclus.


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 245 Messages

27 janv. 2011, 19:03

arh , c'est dommage ça!
parce que SSJS et JEE le font ça!
mais bon, c'est pas grave, je crois que je vais essayer de bricoler un truc avec des fichiers très simples format texte, pour optimiser la rapidité de sélection des données.

merci.

ViPHP
ViPHP | 5462 Messages

27 janv. 2011, 19:05

tu peux utiliser APC sinon :wink:

Eléphant du PHP | 245 Messages

27 janv. 2011, 19:23

ça a l'air pas mal ça, mais je ne connais pas du tout.
Je t'avoue, je débarque là...

Je suis sous windows d'ailleurs (php5.3).

C'est pas un peu compliqué à installer?
Tu t'en sers toi?
t'as un exemple d'utilisation à me donner?

ViPHP
ViPHP | 5462 Messages

27 janv. 2011, 19:27

ça a l'air pas mal ça, mais je ne connais pas du tout.
Je t'avoue, je débarque là...

Je suis sous windows d'ailleurs (php5.3).

C'est pas un peu compliqué à installer?
Tu t'en sers toi?
t'as un exemple d'utilisation à me donner?
sous windows tu trouver l'extension ici : http://downloads.php.net/pierre/
pour l'installation les info sont par la : http://www.php.net/manual/fr/install.pecl.windows.php

APC est un système de cache de fichier et de donnée, donc tu peux très bien t'en servir pour partager des données.

Eléphant du PHP | 245 Messages

27 janv. 2011, 19:29

ok merci, je vais regarder tout ça!

Eléphant du PHP | 245 Messages

27 janv. 2011, 19:52

bon APC installé, il reste plus qu'à savoir comment je vais m'en servir
print_r(apc_cache_info(null,true));
Ca me donne un tableau avec plein de données bizzarres.
Je vais regarder ça plus précisement.

Ouais, pas mal.
C'etait un truc du genre que je cherchais.

On peut envisager des pool de connexions aux bases de données avec ça?
(Même si dans un premier temps, c'est à une autre utilisation que je pensais.)

ViPHP
ViPHP | 5462 Messages

27 janv. 2011, 20:19

c'est un système de cache, pour mettre une variable c'est apc_store, pour la récupérer c'est apc_fetch :wink:

Administrateur PHPfrance
Administrateur PHPfrance | 149 Messages

29 janv. 2011, 11:09

C'est typiquement ce qu'on utilise dans une appli ZendFramework mais moi je m'en suis fait ma petite version

sur chaque machine j'ai des

dans le vhost (ou plus souple dans le .htaccess)

Code : Tout sélectionner

SetEnv APPLICATION_Name "nomDeLAppli" SetEnv APPLICATION_ENV "dev" SetEnv HOST_ENV "LenomdelaMachine"
dans le php
                $strStaging = (isset($_SERVER['APPLICATION_ENV']) ? $_SERVER['APPLICATION_ENV'] : 'prod');
               // il vaudrait mieux gérer le else avec un trigger ou une exception

puis tu utilises un Zend_Config_Ini
avec des sections basées sur tout ca.

Code : Tout sélectionner

; Ceci est un fichier de configuration ; Les commentaires commencent par ';', comme dans php.ini [prod] one = 1 five = 5 animal = BIRD affiche_le_debug = 0 [dev : prod] affiche_le_debug = 1
   
      $options = new Zend_Config_Ini('/chemin/vers/config.ini', $strStaging );
$options->affiche_le_debug contiendra 1 si prod et 0 si dev
$options->one contiendra 1 en prod ET en dev
--
Moosh - ancêtre de la communauté
http://www.phpfrance.com

Eléphant du PHP | 245 Messages

31 janv. 2011, 11:44

Salut Moosh, ton post m'a l'air très interessant.
Je n'utilise pas ZEND framework, mais bon, ça fait une bonne occasion de s'y mettre.

Sinon, avec ton système la modification de ces "variables projets" est elle simple?
Car le but est aussi de pouvoir les modifier régulièrement sans avoir à les stocker en BDD ou dans des fichiers lents à l'accès.

Administrateur PHPfrance
Administrateur PHPfrance | 149 Messages

31 janv. 2011, 13:45

Salut Moosh, ton post m'a l'air très interessant.
Je n'utilise pas ZEND framework, mais bon, ça fait une bonne occasion de s'y mettre.

Sinon, avec ton système la modification de ces "variables projets" est elle simple?
Car le but est aussi de pouvoir les modifier régulièrement sans avoir à les stocker en BDD ou dans des fichiers lents à l'accès.
C'est par facilité qu'on installe tout Zend Framework (alors qu'avec PEAR on installe ce dont on a besoin)

Mais ici c'est une utilisation simple ici d'un module. Ce n'est pas faire "du Zend Framework" ne "t'effraie" pas.

Donc tu peux stocker en DB. puis générer les fichiers qui seront utilisé par ton code :-)

mais généralement on modifie le fichier lui même.
--
Moosh - ancêtre de la communauté
http://www.phpfrance.com