Question

Existe-t-il un paramètre permettant de charger / exécuter automatiquement certains scripts une fois que PHP démarre, ce qui revient à placer quelques constantes dans la mémoire globale.

Existe-t-il également une mémoire globale accessible à tous les utilisateurs? Également au sujet de la mémoire, n'y a-t-il pas de mémoire accessible à tous les utilisateurs? Une personne a le même accès qu'une autre personne ou devrais-je lire et écrire dans un fichier à chaque fois pour que quelque chose soit partagé sur une table temporaire de la base de données.

PHP surpris n'a pas cela?

Merci.

Était-ce utile?

La solution

Si je comprends bien, vous voulez que PHP exécute un script lorsque vous démarrez Apache, pour stocker des valeurs partagées globalement. Si je me trompe, éditez / commentez.

La réponse courte est: non, vous ne pouvez pas faire cela. PHP n'est pas exactement un serveur qui reste en attente des requêtes des clients. Il traite chaque requête HTTP individuellement.

La réponse longue est: eh bien ... vous pouvez utiliser auto_prepend_file pour le faire à chaque demande. Vous pouvez créer un script bash simple et l'utiliser pour démarrer Apache, puis appeler un script PHP, mais cela ne s'exécutera pas dans Apache.

En ce qui concerne la mémoire partagée, il existe quelques choix. Utiliser des fichiers plats, une base de données ou memcached est probablement le plus portable. Certaines installations ont les fonctions Mémoire partagée , mais ce n'est pas garanti.

Autres conseils

PHP ne fournit pas de cache global partagé entre les scripts. Vous pouvez contourner ce problème de différentes manières en fonction de vos besoins.

Si vous souhaitez configurer des constantes globales dont le calcul n’est pas coûteux, vous pouvez écrire un script définissant ces constantes, puis le faire exécuter automatiquement avant le fichier demandé. Ceci est effectué à l'aide de l'option auto_prepend_file dans le fichier php.ini.

Si vous calculez des valeurs coûteuses, vous pouvez utiliser memer mis en cache comme cache global accessible. par tous les scripts PHP. Il existe plusieurs API client pour se connecter à memcached à l'aide de PHP.

Bien sûr, vous pouvez également stocker des valeurs globales dans la session utilisateur . si ces valeurs sont par utilisateur. Ou même utiliser MySQL.

Si vous utilisez une sorte de framework MVC, vous pouvez définir vos variables ici et vous assurer que le fichier est chargé à chaque fois. Vous pouvez utiliser $ GLOBALS ['nom_var' '] = $ valeur; et accéder à cela dans un autre fichier au cours de cette demande.

Chaque instance de script PHP en cours d'exécution a ses propres variables globales, fonctions, constantes, etc. Il n'y a aucun moyen de copier directement une variable d'une instance de script en cours d'exécution. Cependant, il existe des méthodes indirectes telles que l’utilisation de fichiers, une base de données ou memcached.

Si vous utilisez un sous-système (comme la mémoire partagée APC ou même memcached), vous pouvez exécuter le script du générateur de données automatiquement sur Apache Start en modifiant son script de démarrage ( /etc/init.d/ [apache2 | httpd] ). Par exemple, vous pouvez ajouter une requête curl ou wget au script du générateur juste après start | restart.

Il y a une petite probabilité que l'état ne soit pas initialisé lors de la première demande 'externe', mais je suis sûr que vous pouvez le gérer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top