Bonjour,
Je me pose la question académique suivante : j'ai un logiciel qui
lit des données dans une base de données, puis enregistre chaque
bloc et passe au suivant, ceci sans détruire quoi que ce soit.
Est-ce qu'il arrive un moment où le logiciel n'aura plus d'espace
mémoire pour travailler ?
une mémoire de 4 Go, un WAMP
, et que j'ai
déjà des scripts qui plantent après 30 secondes et qui lisent des
données sans rien détruire, mais toujours dans des chaînes
réutilisées. Mes scripts avancent dans la base de données et après
30 secondes, recommencent à la fiche où l'itération précédente a
échoué.
En d'autres mots, j'ai une classe Famille, j'y insère des données
de longueur variable (parents, grands-parents, enfants et conjoints)
et je ne nettoie jamais rien. Je construis une famille, puis une
autre, etc. J'ai un manuel du PHP et je ne vois pas de "destructeur"
dans l'index.
Bonjour,
Je me pose la question académique suivante : j'ai un logiciel qui
lit des données dans une base de données, puis enregistre chaque
bloc et passe au suivant, ceci sans détruire quoi que ce soit.
Est-ce qu'il arrive un moment où le logiciel n'aura plus d'espace
mémoire pour travailler ?
une mémoire de 4 Go, un WAMP
, et que j'ai
déjà des scripts qui plantent après 30 secondes et qui lisent des
données sans rien détruire, mais toujours dans des chaînes
réutilisées. Mes scripts avancent dans la base de données et après
30 secondes, recommencent à la fiche où l'itération précédente a
échoué.
En d'autres mots, j'ai une classe Famille, j'y insère des données
de longueur variable (parents, grands-parents, enfants et conjoints)
et je ne nettoie jamais rien. Je construis une famille, puis une
autre, etc. J'ai un manuel du PHP et je ne vois pas de "destructeur"
dans l'index.
Bonjour,
Je me pose la question académique suivante : j'ai un logiciel qui
lit des données dans une base de données, puis enregistre chaque
bloc et passe au suivant, ceci sans détruire quoi que ce soit.
Est-ce qu'il arrive un moment où le logiciel n'aura plus d'espace
mémoire pour travailler ?
une mémoire de 4 Go, un WAMP
, et que j'ai
déjà des scripts qui plantent après 30 secondes et qui lisent des
données sans rien détruire, mais toujours dans des chaînes
réutilisées. Mes scripts avancent dans la base de données et après
30 secondes, recommencent à la fiche où l'itération précédente a
échoué.
En d'autres mots, j'ai une classe Famille, j'y insère des données
de longueur variable (parents, grands-parents, enfants et conjoints)
et je ne nettoie jamais rien. Je construis une famille, puis une
autre, etc. J'ai un manuel du PHP et je ne vois pas de "destructeur"
dans l'index.
On 24/10/11 20:25, Denis Beauregard wrote:Bonjour,
Je me pose la question académique suivante : j'ai un logiciel qui
lit des données dans une base de données, puis enregistre chaque
bloc et passe au suivant, ceci sans détruire quoi que ce soit.
Est-ce qu'il arrive un moment où le logiciel n'aura plus d'espace
mémoire pour travailler ?
Forcément, nos ordinateurs sont limités :)
une mémoire de 4 Go, un WAMP
32bit ou 64bit ? L'espace mémoire que PHP peut allouer à ces petits
dépend de l'OS, de la taille du mot machine et du nombre de pages
mémoire que le matériel et son usage le permettent.
, et que j'ai
déjà des scripts qui plantent après 30 secondes et qui lisent des
données sans rien détruire, mais toujours dans des chaînes
réutilisées. Mes scripts avancent dans la base de données et après
30 secondes, recommencent à la fiche où l'itération précédente a
échoué.
Sont-ce des outils en CLI ou servies par le Web ?
En d'autres mots, j'ai une classe Famille, j'y insère des données
de longueur variable (parents, grands-parents, enfants et conjoints)
et je ne nettoie jamais rien. Je construis une famille, puis une
autre, etc. J'ai un manuel du PHP et je ne vois pas de "destructeur"
dans l'index.
C'est un peu trop vague ;)
On 24/10/11 20:25, Denis Beauregard wrote:
Bonjour,
Je me pose la question académique suivante : j'ai un logiciel qui
lit des données dans une base de données, puis enregistre chaque
bloc et passe au suivant, ceci sans détruire quoi que ce soit.
Est-ce qu'il arrive un moment où le logiciel n'aura plus d'espace
mémoire pour travailler ?
Forcément, nos ordinateurs sont limités :)
une mémoire de 4 Go, un WAMP
32bit ou 64bit ? L'espace mémoire que PHP peut allouer à ces petits
dépend de l'OS, de la taille du mot machine et du nombre de pages
mémoire que le matériel et son usage le permettent.
, et que j'ai
déjà des scripts qui plantent après 30 secondes et qui lisent des
données sans rien détruire, mais toujours dans des chaînes
réutilisées. Mes scripts avancent dans la base de données et après
30 secondes, recommencent à la fiche où l'itération précédente a
échoué.
Sont-ce des outils en CLI ou servies par le Web ?
En d'autres mots, j'ai une classe Famille, j'y insère des données
de longueur variable (parents, grands-parents, enfants et conjoints)
et je ne nettoie jamais rien. Je construis une famille, puis une
autre, etc. J'ai un manuel du PHP et je ne vois pas de "destructeur"
dans l'index.
C'est un peu trop vague ;)
On 24/10/11 20:25, Denis Beauregard wrote:Bonjour,
Je me pose la question académique suivante : j'ai un logiciel qui
lit des données dans une base de données, puis enregistre chaque
bloc et passe au suivant, ceci sans détruire quoi que ce soit.
Est-ce qu'il arrive un moment où le logiciel n'aura plus d'espace
mémoire pour travailler ?
Forcément, nos ordinateurs sont limités :)
une mémoire de 4 Go, un WAMP
32bit ou 64bit ? L'espace mémoire que PHP peut allouer à ces petits
dépend de l'OS, de la taille du mot machine et du nombre de pages
mémoire que le matériel et son usage le permettent.
, et que j'ai
déjà des scripts qui plantent après 30 secondes et qui lisent des
données sans rien détruire, mais toujours dans des chaînes
réutilisées. Mes scripts avancent dans la base de données et après
30 secondes, recommencent à la fiche où l'itération précédente a
échoué.
Sont-ce des outils en CLI ou servies par le Web ?
En d'autres mots, j'ai une classe Famille, j'y insère des données
de longueur variable (parents, grands-parents, enfants et conjoints)
et je ne nettoie jamais rien. Je construis une famille, puis une
autre, etc. J'ai un manuel du PHP et je ne vois pas de "destructeur"
dans l'index.
C'est un peu trop vague ;)
une mémoire de 4 Go, un WAMP
32bit ou 64bit ? L'espace mémoire que PHP peut allouer à ces petits
dépend de l'OS, de la taille du mot machine et du nombre de pages
mémoire que le matériel et son usage le permettent.
64 bits, Windows 7 familial SP1
mysqld prend 180 Mo de mémoire et c'est le plus gros processus relié
à PHP sur mon ordi (valeur lue pendant l'exécution d'un script).
Sont-ce des outils en CLI ou servies par le Web ?
Je suppose que CLI signifie en local. Dans ce projet, j'utilise
EasyPHP comme Wamp sur un PC personnel. C'est donc un serveur en
local. J'ai environ 350 000 lignes à traiter (validation puis
affichage de données).
En d'autres mots, j'ai une classe Famille, j'y insère des données
de longueur variable (parents, grands-parents, enfants et conjoints)
et je ne nettoie jamais rien. Je construis une famille, puis une
autre, etc. J'ai un manuel du PHP et je ne vois pas de "destructeur"
dans l'index.
une mémoire de 4 Go, un WAMP
32bit ou 64bit ? L'espace mémoire que PHP peut allouer à ces petits
dépend de l'OS, de la taille du mot machine et du nombre de pages
mémoire que le matériel et son usage le permettent.
64 bits, Windows 7 familial SP1
mysqld prend 180 Mo de mémoire et c'est le plus gros processus relié
à PHP sur mon ordi (valeur lue pendant l'exécution d'un script).
Sont-ce des outils en CLI ou servies par le Web ?
Je suppose que CLI signifie en local. Dans ce projet, j'utilise
EasyPHP comme Wamp sur un PC personnel. C'est donc un serveur en
local. J'ai environ 350 000 lignes à traiter (validation puis
affichage de données).
En d'autres mots, j'ai une classe Famille, j'y insère des données
de longueur variable (parents, grands-parents, enfants et conjoints)
et je ne nettoie jamais rien. Je construis une famille, puis une
autre, etc. J'ai un manuel du PHP et je ne vois pas de "destructeur"
dans l'index.
une mémoire de 4 Go, un WAMP
32bit ou 64bit ? L'espace mémoire que PHP peut allouer à ces petits
dépend de l'OS, de la taille du mot machine et du nombre de pages
mémoire que le matériel et son usage le permettent.
64 bits, Windows 7 familial SP1
mysqld prend 180 Mo de mémoire et c'est le plus gros processus relié
à PHP sur mon ordi (valeur lue pendant l'exécution d'un script).
Sont-ce des outils en CLI ou servies par le Web ?
Je suppose que CLI signifie en local. Dans ce projet, j'utilise
EasyPHP comme Wamp sur un PC personnel. C'est donc un serveur en
local. J'ai environ 350 000 lignes à traiter (validation puis
affichage de données).
En d'autres mots, j'ai une classe Famille, j'y insère des données
de longueur variable (parents, grands-parents, enfants et conjoints)
et je ne nettoie jamais rien. Je construis une famille, puis une
autre, etc. J'ai un manuel du PHP et je ne vois pas de "destructeur"
dans l'index.
Cela me semble énorme. Chez-moi, mysqld consomme quelques % de la
mémoire. Maintenant, c'est à vide...
Cela me semble énorme. Chez-moi, mysqld consomme quelques % de la
mémoire. Maintenant, c'est à vide...
Cela me semble énorme. Chez-moi, mysqld consomme quelques % de la
mémoire. Maintenant, c'est à vide...
Je ne suis pas sûr d'avoir toute la question mais dans le php.ini, il y
à une directive "memory_limit" qui fixe la taille
limite que le processus peut atteindre en terme de mémoire.
La méthode __ destruct ici ne me parait pas pertinente ( surtout
utiliser pour libérer des ressources) ,
en fait, à la fin de chaque processus, un garbage_collector (php5.3+)
nettoie la mémoire utilisée.
plus d'info sur http://fr.php.net/manual/en/features.gc.php
si le script spécifique nécessite réellement plus de mémoire , utiliser
ini_set(‘memory_limit’,’64M’);
en sachant qu'il est fort probable qu'une solution moins consommatrice
doit exister et qu'il est souhaitable d'optimiser le script avant de
modifier la configuration de php, afin de s'assurer que, si le script
est distribué, il fonctionnera sur toutes les configurations.
Je ne suis pas sûr d'avoir toute la question mais dans le php.ini, il y
à une directive "memory_limit" qui fixe la taille
limite que le processus peut atteindre en terme de mémoire.
La méthode __ destruct ici ne me parait pas pertinente ( surtout
utiliser pour libérer des ressources) ,
en fait, à la fin de chaque processus, un garbage_collector (php5.3+)
nettoie la mémoire utilisée.
plus d'info sur http://fr.php.net/manual/en/features.gc.php
si le script spécifique nécessite réellement plus de mémoire , utiliser
ini_set(‘memory_limit’,’64M’);
en sachant qu'il est fort probable qu'une solution moins consommatrice
doit exister et qu'il est souhaitable d'optimiser le script avant de
modifier la configuration de php, afin de s'assurer que, si le script
est distribué, il fonctionnera sur toutes les configurations.
Je ne suis pas sûr d'avoir toute la question mais dans le php.ini, il y
à une directive "memory_limit" qui fixe la taille
limite que le processus peut atteindre en terme de mémoire.
La méthode __ destruct ici ne me parait pas pertinente ( surtout
utiliser pour libérer des ressources) ,
en fait, à la fin de chaque processus, un garbage_collector (php5.3+)
nettoie la mémoire utilisée.
plus d'info sur http://fr.php.net/manual/en/features.gc.php
si le script spécifique nécessite réellement plus de mémoire , utiliser
ini_set(‘memory_limit’,’64M’);
en sachant qu'il est fort probable qu'une solution moins consommatrice
doit exister et qu'il est souhaitable d'optimiser le script avant de
modifier la configuration de php, afin de s'assurer que, si le script
est distribué, il fonctionnera sur toutes les configurations.
Je ne suis pas sûr d'avoir toute la question mais dans le php.ini, il y
à une directive "memory_limit" qui fixe la taille
limite que le processus peut atteindre en terme de mémoire.
La méthode __ destruct ici ne me parait pas pertinente ( surtout
utiliser pour libérer des ressources) ,
en fait, à la fin de chaque processus, un garbage_collector (php5.3+)
nettoie la mémoire utilisée.
en sachant qu'il est fort probable qu'une solution moins consommatrice
doit exister et qu'il est souhaitable d'optimiser le script avant de
modifier la configuration de php, afin de s'assurer que, si le script
est distribué, il fonctionnera sur toutes les configurations.
Je ne suis pas sûr d'avoir toute la question mais dans le php.ini, il y
à une directive "memory_limit" qui fixe la taille
limite que le processus peut atteindre en terme de mémoire.
La méthode __ destruct ici ne me parait pas pertinente ( surtout
utiliser pour libérer des ressources) ,
en fait, à la fin de chaque processus, un garbage_collector (php5.3+)
nettoie la mémoire utilisée.
en sachant qu'il est fort probable qu'une solution moins consommatrice
doit exister et qu'il est souhaitable d'optimiser le script avant de
modifier la configuration de php, afin de s'assurer que, si le script
est distribué, il fonctionnera sur toutes les configurations.
Je ne suis pas sûr d'avoir toute la question mais dans le php.ini, il y
à une directive "memory_limit" qui fixe la taille
limite que le processus peut atteindre en terme de mémoire.
La méthode __ destruct ici ne me parait pas pertinente ( surtout
utiliser pour libérer des ressources) ,
en fait, à la fin de chaque processus, un garbage_collector (php5.3+)
nettoie la mémoire utilisée.
en sachant qu'il est fort probable qu'une solution moins consommatrice
doit exister et qu'il est souhaitable d'optimiser le script avant de
modifier la configuration de php, afin de s'assurer que, si le script
est distribué, il fonctionnera sur toutes les configurations.
Mais jusqu'à quel point ? En ce moment, je n'ai pas rencontré d'erreur
de manque de mémoire et j'alloue constamment des chaînes de caractères
sans rien effacer jusqu'au plantage après 30 secondes.
Mon logiciel se relance tout seul (via une META refresh) et je ne
verrais pas de message s'il y a un manque de mémoire.
Mais jusqu'à quel point ? En ce moment, je n'ai pas rencontré d'erreur
de manque de mémoire et j'alloue constamment des chaînes de caractères
sans rien effacer jusqu'au plantage après 30 secondes.
Mon logiciel se relance tout seul (via une META refresh) et je ne
verrais pas de message s'il y a un manque de mémoire.
Mais jusqu'à quel point ? En ce moment, je n'ai pas rencontré d'erreur
de manque de mémoire et j'alloue constamment des chaînes de caractères
sans rien effacer jusqu'au plantage après 30 secondes.
Mon logiciel se relance tout seul (via une META refresh) et je ne
verrais pas de message s'il y a un manque de mémoire.
On 25/10/11 05:10, Denis Beauregard wrote:Mais jusqu'à quel point ? En ce moment, je n'ai pas rencontré d'erreur
de manque de mémoire et j'alloue constamment des chaînes de caractères
sans rien effacer jusqu'au plantage après 30 secondes.
Mais le plantage au bout de 30s est dû au temps maximal d'exécution
configuré dans PHP ou du dépassement de la capacité mémoire configurée
dans PHP ?
La limite dépend de nombreux paramètres :
- la limite matérielle (mémoire vive + mémoire d'échange)
- la limite d'adressage de la mémoire (2³² ou 2??)
- l'architecture mémoire du processus, liée aux OS, au compilateur,
la fragmentation mémoire, etc.
Donc on peut donner une approximation de la mémoire disponible, mais
bien malin celui qui affirmera une limite absolue. Ah, et les autres
processus consomment aussi de la mémoire ;)Mon logiciel se relance tout seul (via une META refresh) et je ne
verrais pas de message s'il y a un manque de mémoire.
Ben si ça te permet de faire le travail, ça ira. Si vraiment ça te
pose problème, il faut profiler. xdebug permet de profiler la
consommation mémoire et l'exécution.
On 25/10/11 05:10, Denis Beauregard wrote:
Mais jusqu'à quel point ? En ce moment, je n'ai pas rencontré d'erreur
de manque de mémoire et j'alloue constamment des chaînes de caractères
sans rien effacer jusqu'au plantage après 30 secondes.
Mais le plantage au bout de 30s est dû au temps maximal d'exécution
configuré dans PHP ou du dépassement de la capacité mémoire configurée
dans PHP ?
La limite dépend de nombreux paramètres :
- la limite matérielle (mémoire vive + mémoire d'échange)
- la limite d'adressage de la mémoire (2³² ou 2??)
- l'architecture mémoire du processus, liée aux OS, au compilateur,
la fragmentation mémoire, etc.
Donc on peut donner une approximation de la mémoire disponible, mais
bien malin celui qui affirmera une limite absolue. Ah, et les autres
processus consomment aussi de la mémoire ;)
Mon logiciel se relance tout seul (via une META refresh) et je ne
verrais pas de message s'il y a un manque de mémoire.
Ben si ça te permet de faire le travail, ça ira. Si vraiment ça te
pose problème, il faut profiler. xdebug permet de profiler la
consommation mémoire et l'exécution.
On 25/10/11 05:10, Denis Beauregard wrote:Mais jusqu'à quel point ? En ce moment, je n'ai pas rencontré d'erreur
de manque de mémoire et j'alloue constamment des chaînes de caractères
sans rien effacer jusqu'au plantage après 30 secondes.
Mais le plantage au bout de 30s est dû au temps maximal d'exécution
configuré dans PHP ou du dépassement de la capacité mémoire configurée
dans PHP ?
La limite dépend de nombreux paramètres :
- la limite matérielle (mémoire vive + mémoire d'échange)
- la limite d'adressage de la mémoire (2³² ou 2??)
- l'architecture mémoire du processus, liée aux OS, au compilateur,
la fragmentation mémoire, etc.
Donc on peut donner une approximation de la mémoire disponible, mais
bien malin celui qui affirmera une limite absolue. Ah, et les autres
processus consomment aussi de la mémoire ;)Mon logiciel se relance tout seul (via une META refresh) et je ne
verrais pas de message s'il y a un manque de mémoire.
Ben si ça te permet de faire le travail, ça ira. Si vraiment ça te
pose problème, il faut profiler. xdebug permet de profiler la
consommation mémoire et l'exécution.