Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

stocker donnees residentes en ram serveur

6 réponses
Avatar
NTH
Bonjour

J'aimerais savoir comment stocker des données de façon permanent au serveur
http et pouvoir y accéder via php.
Je m'explique :
Supposons qu'en php la racine carrée sqrt() n'existe pas, donc je veux qu'au
démarrage du serveur http, celui ci initialise un module spécial qui calcule
toutes les racines entières de 1 à 1000000. Et ensuite, il le garde en
mémoire définitivement pour servir tous les autres scripts.
Exemple :
function initRacine() {
for ($i = 1 ; $i < 1000000 ; $i++) {
$RACINE[$i] = ma_fonction_racine_carrée($i);
}
MemRegister($RACINE, "RACINE");
}

Ensuite, dans N'IMPORTE quel script php :
test.php
<?
$RACINE = MemGet("RACINE");
echo "la racine carrée de 2 est ".$RACINE[2];
?>

J'insiste : MemRegister et MemGet ne sont pas les fonctions session_register
... car contrairement aux fonctions sessions, mes fonctions "gravent" dans
la
mémoire static (résidente en ram du serveur pour accélérer) l'array
"RACINE".

Merci
PS : la fonction "initRacine" doit forcément être écrite en C, puis intégrée
comme module à apache (par ex...) ?
ou il y a moyen de coder ça en php? (auquel cas, le démarrage automatique
serait possible?)

6 réponses

Avatar
Davel_x
"NTH" a écrit dans le message de
news:400eeb6f$0$19271$
| Bonjour
|
| J'aimerais savoir comment stocker des données de façon permanent au
serveur
| http et pouvoir y accéder via php.
| Je m'explique :
| Supposons qu'en php la racine carrée sqrt() n'existe pas, donc je veux
qu'au
| démarrage du serveur http, celui ci initialise un module spécial qui
calcule
| toutes les racines entières de 1 à 1000000. Et ensuite, il le garde en
| mémoire définitivement pour servir tous les autres scripts.

Pourquoi ne pas générer directement un .php qui contient pas de boucle ou de
code si ce n'est la création d'une array avec les valeurs que tu veux ? (que
tu auras généré avec un script si tu veux)
ça évitera au serveur des calculs inutiles, tu auras toutes tes valeurs dans
un fichier statique et tout devrait rouler non ?

--
**davel_x**
http://www.lerpg.com
Avatar
NTH
"Davel_x" a écrit dans le message de
news:40100312$0$19270$
"NTH" a écrit dans le message de
news:400eeb6f$0$19271$
| Bonjour
|
| J'aimerais savoir comment stocker des données de façon permanent au
serveur
| http et pouvoir y accéder via php.
| Je m'explique :
| Supposons qu'en php la racine carrée sqrt() n'existe pas, donc je veux
qu'au
| démarrage du serveur http, celui ci initialise un module spécial qui
calcule
| toutes les racines entières de 1 à 1000000. Et ensuite, il le garde en
| mémoire définitivement pour servir tous les autres scripts.

Pourquoi ne pas générer directement un .php qui contient pas de boucle ou
de

code si ce n'est la création d'une array avec les valeurs que tu veux ?
(que

tu auras généré avec un script si tu veux)
ça évitera au serveur des calculs inutiles, tu auras toutes tes valeurs
dans

un fichier statique et tout devrait rouler non ?
Tu parles d'un code de ce type ?

$RACINE[0] = 0;
$RACINE[1] = 1;
$RACINE[2] = 1.4142...;
$RACINE[3] = 1.7...;
$RACINE[4] = 2;
...
$RACINE[1000000] = 1000;
etc. ?
il y a 1000000 d'affectations comme ça.
Tu crois qu'une affectation c'est gratuit pour la cpu? sans parler de la
précompilation de 1 millions de lignes d'affectation du php...
Et en plus si je veux que ce soit pseudo dynamique : genre une fois par jour
ça change à minuit?

Non il me faut un mécanisme de conservation de variables en mémoire
résidente. Un VRAI mécanisme, pas du bidouillage...


Merci bcp pour ta participation qd même !

Avatar
Harry Cover
On 23 Jan 2004 09:48:49 GMT, NTH wrote:


Non il me faut un mécanisme de conservation de variables en mémoire
résidente. Un VRAI mécanisme, pas du bidouillage...


Et stocker tout ca dans une base QSL (je propose, hein ;) )
Parce stocker un tableau dans un fichier, c'est moyen...
En SQL ca risque d'aller un peu plus vite
Et pas besoin de compiler tout le tableau en php

Avatar
Johann Dantant
"NTH" a écrit dans le message de
news:400eeb6f$0$19271$
Bonjour

J'aimerais savoir comment stocker des données de façon permanent au
serveur

http et pouvoir y accéder via php.


Je comprends à peu près ton besoin mais je pense que ce n'est pas une bonne
approche de l'envisager en "pur PHP". L'environnement PHP n'existe à la base
que dans le contexte du requête client du serveur Web. Envisager une
allocation de mémoire partagée et son maintien pendant toute la "durée de
vie" du serveur n'est donc pas un problème spécifique PHP mais un besoin
d'utiliser les mécanismes intrinsèques de l'OS (et plus précisément, les
mécanismes intrinsèques de l'OS autorisés dans l'environnement du serveur
Web, ce qui peut être très restrictif selon la configuration).

Donc, pour apporter une réponse concrête, je séparerais le problème en 2
sous-problèmes :
1) allouer, initialiser et maintenir les données en mémoire, c'est a priori
le rôle d'un programme "permanent" (service Windows ou démon Unix).
2) accéder à ces données depuis le script PHP lancé par le serveur Web.

A priori sur un système UNIX conforme Systeme V tu peux allouer un segment
de mémoire partagée par le programme (1), y accéder dans le script PHP (2)
par shm_attach. Pour que dans (2) shm_get_var puisse directement retrouver
les variables dans la mémoire partagée, il faut que (1) les ait écrit
conformément à ce que fait ou ferait shm_put_var (sérialisation conforme
PHP).

Sur un système Windows et pour la partie PHP, tu devras te tourner vers des
fonctions spécifiques (Win32 API ou .NET) à instancier à la main pour
accéder aux objets mémoires partagés de l'OS...

Il va sans dire que ton script devient fortement dépendant de l'OS et
surtout ne tournera que sur une machine dédiée que tu maîtrises...

Une solution indépendante de l'OS serait plutôt de concevoir (1) comme un
serveur TCP, et d'utiliser les sockets en PHP pour implémenter en (2) un
mécanisme de type requête / réponse.

Bonne journée sur le parc...


-- J.D.
LG> qui pourrait me renseigner ou je pourrais trouver un site web avec
LG> des liste de noms pour envoi de mailing
NP> Demande à , les listes de noms, ca les connaît..
-+- LG In Guide du Neuneu d'Usenet : Neuneu ne doute de rien -+-

Avatar
Davel_x
| Tu crois qu'une affectation c'est gratuit pour la cpu? sans parler de la
| précompilation de 1 millions de lignes d'affectation du php...

et un $RACINE= array(...........) ???

--
**davel_x**
http://www.lerpg.com
Avatar
Pierre GOIFFON
Johann Dantant wrote:
J'aimerais savoir comment stocker des données de façon permanent au
serveur http et pouvoir y accéder via php.


Je comprends à peu près ton besoin mais je pense que ce n'est pas une
bonne approche de l'envisager en "pur PHP". L'environnement PHP
n'existe à la base que dans le contexte du requête client du serveur
Web. Envisager une allocation de mémoire partagée et son maintien
pendant toute la "durée de vie" du serveur n'est donc pas un problème
spécifique PHP mais un besoin d'utiliser les mécanismes intrinsèques
de l'OS


Euh, pas tout à fait d'accord avec celà ! C'est un mécanisme classique de
variables d'application, et c'est implémenté très simplement en ASP par
exemple. Je n'arrive pas à mettre la main dessus pour PHP ??

Sinon, dans la suite de ce que vous suggérez, il est éventuellement
possible, suivant le serveur utilisé, de modifier des variables
d'environnement.

--
Pour me répondre par mail privé, merci de supprimer _NOSPAM_ de mon
adresse.

Un grand merci à OE Quote Fix pour rendre OE utilisable :)
=> http://home.in.tum.de/~jain/software/quotefix.php