Je rencontre un problème de persistence (défaillante) de variables
en COOKIE et en SESSION.
En augmentant le nombre de données stockées en cookie
(d'une dizaine à une vingtaine), je constate que certaines données
ne persistent plus. Par ailleurs, j'observe de manière corrélée
que cela efface parfois certains champs de la $_SESSION.
Tout semble se comporter comme si une certaine place allouée
commune à $_SESSION et $_COOKIE était désormais saturée, et que le
dernier enregistrement des données "se fait de la place".
J'ai dépouillé le listing phpinfo() (4.3.8), compulsé les pages de
php.net à propos de setcookie(), ini_set() et autre register_globals.
La memory_limit et le post_max_size sont à 8M (8 Mo, je suppose).
Or memory_get_usage() indique ~280 ko de mémoire utilisée.
Je ne comprends rien.
Lorsque j'efface tous les cookies, tout va bien jusqu'à ce que
j'ai parcouru à peu près toutes mes pages qui stockent des cookies,
et là ça commence à dérailler.
Je ne sais vraiment plus par quel bout prendre ce problème, et les
archives du forum ne m'ont guère aidé.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
P. Gonogeu
Quelques précisions :
Bonsoir,
Je rencontre un problème de persistence (défaillante) de variables en COOKIE et en SESSION. En augmentant le nombre de données stockées en cookie (d'une dizaine à une vingtaine), je constate que certaines données ne persistent plus. Par ailleurs, j'observe de manière corrélée que cela efface parfois certains champs de la $_SESSION. Tout semble se comporter comme si une certaine place allouée commune à $_SESSION et $_COOKIE était désormais saturée, et que le dernier enregistrement des données "se fait de la place".
J'ai dépouillé le listing phpinfo() (4.3.8), compulsé les pages de php.net à propos de setcookie(), ini_set() et autre register_globals. La memory_limit et le post_max_size sont à 8M (8 Mo, je suppose). Or memory_get_usage() indique ~280 ko de mémoire utilisée. Je ne comprends rien.
Lorsque j'efface tous les cookies,
Depuis la config. du navigateur. Je teste mes scripts sous Mozilla et IE6.
tout va bien jusqu'à ce que j'ai parcouru à peu près toutes mes pages qui stockent des cookies, et là ça commence à dérailler.
i.e. : Je redéfinis progressivement les champs que je sais sauvés en cookie, au fur et à mesure que je parcours les pages ; et quelque soit l'ordre du parcours, il arrive un moment où certains champs sauvés sont effacés, et ça commence à dérailler, sans retour à la normale.
A noter que le problème se pose autant sous Mozilla que IE6, mais IE6 -- qui semble plus rapide -- accepte plus de champs (ça bloque plus tard).
Je ne sais vraiment plus par quel bout prendre ce problème, et les archives du forum ne m'ont guère aidé.
Merci pour votre clairvoyance.
Quels autres tests me conseillez-vous ? Je suis à cours d'idée.
Pierre
Quelques précisions :
Bonsoir,
Je rencontre un problème de persistence (défaillante) de variables
en COOKIE et en SESSION.
En augmentant le nombre de données stockées en cookie
(d'une dizaine à une vingtaine), je constate que certaines données
ne persistent plus. Par ailleurs, j'observe de manière corrélée
que cela efface parfois certains champs de la $_SESSION.
Tout semble se comporter comme si une certaine place allouée
commune à $_SESSION et $_COOKIE était désormais saturée, et que le
dernier enregistrement des données "se fait de la place".
J'ai dépouillé le listing phpinfo() (4.3.8), compulsé les pages de
php.net à propos de setcookie(), ini_set() et autre register_globals.
La memory_limit et le post_max_size sont à 8M (8 Mo, je suppose).
Or memory_get_usage() indique ~280 ko de mémoire utilisée.
Je ne comprends rien.
Lorsque j'efface tous les cookies,
Depuis la config. du navigateur.
Je teste mes scripts sous Mozilla et IE6.
tout va bien jusqu'à ce que
j'ai parcouru à peu près toutes mes pages qui stockent des cookies,
et là ça commence à dérailler.
i.e. : Je redéfinis progressivement les champs que je sais sauvés
en cookie, au fur et à mesure que je parcours les pages ; et quelque
soit l'ordre du parcours, il arrive un moment où certains champs
sauvés sont effacés, et ça commence à dérailler, sans retour à la
normale.
A noter que le problème se pose autant sous Mozilla que IE6, mais
IE6 -- qui semble plus rapide -- accepte plus de champs (ça bloque
plus tard).
Je ne sais vraiment plus par quel bout prendre ce problème, et les
archives du forum ne m'ont guère aidé.
Merci pour votre clairvoyance.
Quels autres tests me conseillez-vous ? Je suis à cours d'idée.
Je rencontre un problème de persistence (défaillante) de variables en COOKIE et en SESSION. En augmentant le nombre de données stockées en cookie (d'une dizaine à une vingtaine), je constate que certaines données ne persistent plus. Par ailleurs, j'observe de manière corrélée que cela efface parfois certains champs de la $_SESSION. Tout semble se comporter comme si une certaine place allouée commune à $_SESSION et $_COOKIE était désormais saturée, et que le dernier enregistrement des données "se fait de la place".
J'ai dépouillé le listing phpinfo() (4.3.8), compulsé les pages de php.net à propos de setcookie(), ini_set() et autre register_globals. La memory_limit et le post_max_size sont à 8M (8 Mo, je suppose). Or memory_get_usage() indique ~280 ko de mémoire utilisée. Je ne comprends rien.
Lorsque j'efface tous les cookies,
Depuis la config. du navigateur. Je teste mes scripts sous Mozilla et IE6.
tout va bien jusqu'à ce que j'ai parcouru à peu près toutes mes pages qui stockent des cookies, et là ça commence à dérailler.
i.e. : Je redéfinis progressivement les champs que je sais sauvés en cookie, au fur et à mesure que je parcours les pages ; et quelque soit l'ordre du parcours, il arrive un moment où certains champs sauvés sont effacés, et ça commence à dérailler, sans retour à la normale.
A noter que le problème se pose autant sous Mozilla que IE6, mais IE6 -- qui semble plus rapide -- accepte plus de champs (ça bloque plus tard).
Je ne sais vraiment plus par quel bout prendre ce problème, et les archives du forum ne m'ont guère aidé.
Merci pour votre clairvoyance.
Quels autres tests me conseillez-vous ? Je suis à cours d'idée.
Pierre
__marc.quinton__
P. Gonogeu wrote:
i.e. : Je redéfinis progressivement les champs que je sais sauvés en cookie, au fur et à mesure que je parcours les pages ; et quelque soit l'ordre du parcours, il arrive un moment où certains champs sauvés sont effacés, et ça commence à dérailler, sans retour à la normale.
normalement on ne definit qu'il seul cookie. D'ailleurs s'il s'agit de sauvegarder des variables en session, c'est php qui s'occupe de cette tache. Il n'y a meme pas besoin de positionner de cookies.
Si tu realise bcp de pages avec bcp de variables a memoriser il se peut que tu tombes sur un mécanisme de protection des navigateur empechant l'accumulation excessive de cookies pour un meme site.
Est-ce que tu as bien lu la doc sur les variables de sesion ?
P. Gonogeu wrote:
i.e. : Je redéfinis progressivement les champs que je sais sauvés
en cookie, au fur et à mesure que je parcours les pages ; et quelque
soit l'ordre du parcours, il arrive un moment où certains champs
sauvés sont effacés, et ça commence à dérailler, sans retour à la
normale.
normalement on ne definit qu'il seul cookie. D'ailleurs s'il
s'agit de sauvegarder des variables en session, c'est php
qui s'occupe de cette tache. Il n'y a meme pas besoin
de positionner de cookies.
Si tu realise bcp de pages avec bcp de variables a memoriser
il se peut que tu tombes sur un mécanisme de protection des
navigateur empechant l'accumulation excessive de cookies
pour un meme site.
Est-ce que tu as bien lu la doc sur les variables de sesion ?
i.e. : Je redéfinis progressivement les champs que je sais sauvés en cookie, au fur et à mesure que je parcours les pages ; et quelque soit l'ordre du parcours, il arrive un moment où certains champs sauvés sont effacés, et ça commence à dérailler, sans retour à la normale.
normalement on ne definit qu'il seul cookie. D'ailleurs s'il s'agit de sauvegarder des variables en session, c'est php qui s'occupe de cette tache. Il n'y a meme pas besoin de positionner de cookies.
Si tu realise bcp de pages avec bcp de variables a memoriser il se peut que tu tombes sur un mécanisme de protection des navigateur empechant l'accumulation excessive de cookies pour un meme site.
Est-ce que tu as bien lu la doc sur les variables de sesion ?
P. Gonogeu
normalement on ne definit qu'il seul cookie.
Ce n'est pas ce que j'ai lu. La doc pour setcookie précise notamment qu'il est possible de passer un tableau en cookie (ce que je ne fais pas), mais qu'alors PHP place en fait un cookie par élément de tableau ; Si on ne souhaite placer qu'un cookie, il faut sérialiser les données à placer. Je peux essayer de sérialiser mes données, mais je doute fort que le nombre de cookies pose problème (vu le nombre modeste de cookies que je définis, comparé à ce que je lis par ailleurs sur le forum).
D'ailleurs s'il s'agit de sauvegarder des variables en session, c'est php qui s'occupe de cette tache. Il n'y a meme pas besoin de positionner de cookies.
Oui, les usages sont complémentaires
Si tu realise bcp de pages avec bcp de variables a memoriser il se peut que tu tombes sur un mécanisme de protection des navigateur empechant l'accumulation excessive de cookies pour un meme site.
C'est ce que je me suis dis. Mais nulle part dans les préférences de Mozilla et IE6 je n'ai vu défini un tel nombre critique. J'ai l'impression qu'il y a peut-être un problème de rapidité du serveur à transmettre les données. Juste après un session_start(), j'ai ajouté une boucle foreach ($_SESSION $k=>$v)echo "$k=$v"; et je constate alors -- outre l'affichage -- que les champs de $_SESSION[] restent intègres (ce qui n'est pas le cas avec un seul echo du champ identifiant qui disparait). Cependant, le problème de l'effacement de certains champs en cookie demeure.
Si cet affichage a un effet temporisateur, sauf erreur il devrait cependant bénéficier aussi à $_COOKIE...
Pierre
normalement on ne definit qu'il seul cookie.
Ce n'est pas ce que j'ai lu. La doc pour setcookie précise notamment
qu'il est possible de passer un tableau en cookie (ce que je ne fais
pas), mais qu'alors PHP place en fait un cookie par élément de tableau ;
Si on ne souhaite placer qu'un cookie, il faut sérialiser les données
à placer. Je peux essayer de sérialiser mes données, mais je doute fort
que le nombre de cookies pose problème (vu le nombre modeste de cookies
que je définis, comparé à ce que je lis par ailleurs sur le forum).
D'ailleurs s'il
s'agit de sauvegarder des variables en session, c'est php
qui s'occupe de cette tache. Il n'y a meme pas besoin
de positionner de cookies.
Oui, les usages sont complémentaires
Si tu realise bcp de pages avec bcp de variables a memoriser
il se peut que tu tombes sur un mécanisme de protection des
navigateur empechant l'accumulation excessive de cookies
pour un meme site.
C'est ce que je me suis dis. Mais nulle part dans les préférences
de Mozilla et IE6 je n'ai vu défini un tel nombre critique.
J'ai l'impression qu'il y a peut-être un problème de rapidité du
serveur à transmettre les données. Juste après un session_start(),
j'ai ajouté une boucle foreach ($_SESSION $k=>$v)echo "$k=$v";
et je constate alors -- outre l'affichage -- que les champs de
$_SESSION[] restent intègres (ce qui n'est pas le cas avec un seul
echo du champ identifiant qui disparait). Cependant, le problème de
l'effacement de certains champs en cookie demeure.
Si cet affichage a un effet temporisateur, sauf erreur il devrait
cependant bénéficier aussi à $_COOKIE...
Ce n'est pas ce que j'ai lu. La doc pour setcookie précise notamment qu'il est possible de passer un tableau en cookie (ce que je ne fais pas), mais qu'alors PHP place en fait un cookie par élément de tableau ; Si on ne souhaite placer qu'un cookie, il faut sérialiser les données à placer. Je peux essayer de sérialiser mes données, mais je doute fort que le nombre de cookies pose problème (vu le nombre modeste de cookies que je définis, comparé à ce que je lis par ailleurs sur le forum).
D'ailleurs s'il s'agit de sauvegarder des variables en session, c'est php qui s'occupe de cette tache. Il n'y a meme pas besoin de positionner de cookies.
Oui, les usages sont complémentaires
Si tu realise bcp de pages avec bcp de variables a memoriser il se peut que tu tombes sur un mécanisme de protection des navigateur empechant l'accumulation excessive de cookies pour un meme site.
C'est ce que je me suis dis. Mais nulle part dans les préférences de Mozilla et IE6 je n'ai vu défini un tel nombre critique. J'ai l'impression qu'il y a peut-être un problème de rapidité du serveur à transmettre les données. Juste après un session_start(), j'ai ajouté une boucle foreach ($_SESSION $k=>$v)echo "$k=$v"; et je constate alors -- outre l'affichage -- que les champs de $_SESSION[] restent intègres (ce qui n'est pas le cas avec un seul echo du champ identifiant qui disparait). Cependant, le problème de l'effacement de certains champs en cookie demeure.
Si cet affichage a un effet temporisateur, sauf erreur il devrait cependant bénéficier aussi à $_COOKIE...
Pierre
P. Gonogeu
J'ai l'impression qu'il y a peut-être un problème de rapidité du serveur à transmettre les données. Juste après un session_start(), j'ai ajouté une boucle foreach ($_SESSION $k=>$v)echo "$k=$v"; et je constate alors -- outre l'affichage -- que les champs de $_SESSION[] restent intègres (ce qui n'est pas le cas avec un seul echo du champ identifiant qui disparait). Cependant, le problème de l'effacement de certains champs en cookie demeure.
Si cet affichage a un effet temporisateur, sauf erreur il devrait cependant bénéficier aussi à $_COOKIE...
C'était bien ça !! En ajoutant une pause après chaque setcookie(), avec usleep(), tous les problèmes disparaissent ! En l'occurence, 150 microsecondes suffisent. J'ai mis 1 ms, par sécurité. Au passage : fr.php.net nous dit que usleep() est inopérante avant PHP 5.0.0 ; j'utilise 4.3.8, et usleep() fonctionne (testé entre deux microtime()).
A bon entendeur...
Pierre
J'ai l'impression qu'il y a peut-être un problème de rapidité du
serveur à transmettre les données. Juste après un session_start(),
j'ai ajouté une boucle foreach ($_SESSION $k=>$v)echo "$k=$v";
et je constate alors -- outre l'affichage -- que les champs de
$_SESSION[] restent intègres (ce qui n'est pas le cas avec un seul
echo du champ identifiant qui disparait). Cependant, le problème de
l'effacement de certains champs en cookie demeure.
Si cet affichage a un effet temporisateur, sauf erreur il devrait
cependant bénéficier aussi à $_COOKIE...
C'était bien ça !!
En ajoutant une pause après chaque setcookie(), avec usleep(),
tous les problèmes disparaissent !
En l'occurence, 150 microsecondes suffisent. J'ai mis 1 ms, par
sécurité.
Au passage : fr.php.net nous dit que usleep() est inopérante avant PHP
5.0.0 ; j'utilise 4.3.8, et usleep() fonctionne (testé entre deux
microtime()).
J'ai l'impression qu'il y a peut-être un problème de rapidité du serveur à transmettre les données. Juste après un session_start(), j'ai ajouté une boucle foreach ($_SESSION $k=>$v)echo "$k=$v"; et je constate alors -- outre l'affichage -- que les champs de $_SESSION[] restent intègres (ce qui n'est pas le cas avec un seul echo du champ identifiant qui disparait). Cependant, le problème de l'effacement de certains champs en cookie demeure.
Si cet affichage a un effet temporisateur, sauf erreur il devrait cependant bénéficier aussi à $_COOKIE...
C'était bien ça !! En ajoutant une pause après chaque setcookie(), avec usleep(), tous les problèmes disparaissent ! En l'occurence, 150 microsecondes suffisent. J'ai mis 1 ms, par sécurité. Au passage : fr.php.net nous dit que usleep() est inopérante avant PHP 5.0.0 ; j'utilise 4.3.8, et usleep() fonctionne (testé entre deux microtime()).
A bon entendeur...
Pierre
Marc
C'est ce que je me suis dis. Mais nulle part dans les préférences de Mozilla et IE6 je n'ai vu défini un tel nombre critique. J'ai l'impression qu'il y a peut-être un problème de rapidité du serveur à transmettre les données. Juste après un session_start(), j'ai ajouté une boucle foreach ($_SESSION $k=>$v)echo "$k=$v"; et je constate alors -- outre l'affichage -- que les champs de $_SESSION[] restent intègres (ce qui n'est pas le cas avec un seul echo du champ identifiant qui disparait). Cependant, le problème de l'effacement de certains champs en cookie demeure.
c'est peut-etre le protocole http qui limite la taille des header. et d'autre part comme tous (j'ai bien dis tous) les cookies doit etre transmis a toutes les requetes (pour un meme site), c'est un peu gaspiller de la bande passante.
Pour ma part, pour une application, 1 ou 2 coockies sont largement suffisant.
C'est ce que je me suis dis. Mais nulle part dans les préférences
de Mozilla et IE6 je n'ai vu défini un tel nombre critique.
J'ai l'impression qu'il y a peut-être un problème de rapidité du
serveur à transmettre les données. Juste après un session_start(),
j'ai ajouté une boucle foreach ($_SESSION $k=>$v)echo "$k=$v";
et je constate alors -- outre l'affichage -- que les champs de
$_SESSION[] restent intègres (ce qui n'est pas le cas avec un seul
echo du champ identifiant qui disparait). Cependant, le problème de
l'effacement de certains champs en cookie demeure.
c'est peut-etre le protocole http qui limite la taille des header.
et d'autre part comme tous (j'ai bien dis tous) les cookies doit
etre transmis a toutes les requetes (pour un meme site), c'est
un peu gaspiller de la bande passante.
Pour ma part, pour une application, 1 ou 2 coockies sont largement
suffisant.
C'est ce que je me suis dis. Mais nulle part dans les préférences de Mozilla et IE6 je n'ai vu défini un tel nombre critique. J'ai l'impression qu'il y a peut-être un problème de rapidité du serveur à transmettre les données. Juste après un session_start(), j'ai ajouté une boucle foreach ($_SESSION $k=>$v)echo "$k=$v"; et je constate alors -- outre l'affichage -- que les champs de $_SESSION[] restent intègres (ce qui n'est pas le cas avec un seul echo du champ identifiant qui disparait). Cependant, le problème de l'effacement de certains champs en cookie demeure.
c'est peut-etre le protocole http qui limite la taille des header. et d'autre part comme tous (j'ai bien dis tous) les cookies doit etre transmis a toutes les requetes (pour un meme site), c'est un peu gaspiller de la bande passante.
Pour ma part, pour une application, 1 ou 2 coockies sont largement suffisant.
P. Gonogeu
C'est ce que je me suis dis. Mais nulle part dans les préférences de Mozilla et IE6 je n'ai vu défini un tel nombre critique. J'ai l'impression qu'il y a peut-être un problème de rapidité du serveur à transmettre les données. Juste après un session_start(), j'ai ajouté une boucle foreach ($_SESSION $k=>$v)echo "$k=$v"; et je constate alors -- outre l'affichage -- que les champs de $_SESSION[] restent intègres (ce qui n'est pas le cas avec un seul echo du champ identifiant qui disparait). Cependant, le problème de l'effacement de certains champs en cookie demeure.
c'est peut-etre le protocole http qui limite la taille des header. et d'autre part comme tous (j'ai bien dis tous) les cookies doit etre transmis a toutes les requetes (pour un meme site), c'est un peu gaspiller de la bande passante.
Pour ma part, pour une application, 1 ou 2 coockies sont largement suffisant.
Je me suis réjouis trop vite dans mon message de 19:56 : Tous les problèmes sont revenus ! Je ne comprends pas les causes de cette intermittence. Quelque part, les données sont coupées. Ton hypothèse expliquerait très bien ce que j'observe. Cela n'aurait rien de spécifique à PHP. J'ai aussi commencé à regarder du coté de la gestion du cache. Mais je ne comprends pas grand chose aux nombreuses directives du protocole HTTP. Il y a beaucoup à lire.
Le site que je développe comprend une quinzaine de services différents. En tout, actuellement, je définis 31 cookies, pour autant de champs que je souhaite pérenniser au delà de l'extinction du PC. Par ailleurs, j'ai défini une trentaine de champs en $_SESSION[]. J'ai vu que les sessions utilisent parfois des cookies pour se propager, mais que cela est paramétrable. En ajoutant ini_set("session.use_cookies","0") avant mes session_start(), la situation n'est pas meilleure. J'ai aussi essayé en sérialisant $_POST et en définissant un seul cookie pour enregistrer le résultat. La situation semblait avoir empirée.
Je ne vois plus trop comment faire. Je suis quand même très surpris par tous ces problèmes,a lors que je ne demande pas la Lune à HTTP. Peut-être existe-t-il un moyen d'indiquer aux serveurs traitant les en-tête HTTP que la taille maximale de l'en-tête est augmentée. Je vais me pencher là-dessus maintenant.
Merci pour ta remarque. S'il y en a d'autres à suivre, elles restent bienvenues !
Pierre
C'est ce que je me suis dis. Mais nulle part dans les préférences
de Mozilla et IE6 je n'ai vu défini un tel nombre critique.
J'ai l'impression qu'il y a peut-être un problème de rapidité du
serveur à transmettre les données. Juste après un session_start(),
j'ai ajouté une boucle foreach ($_SESSION $k=>$v)echo "$k=$v";
et je constate alors -- outre l'affichage -- que les champs de
$_SESSION[] restent intègres (ce qui n'est pas le cas avec un seul
echo du champ identifiant qui disparait). Cependant, le problème de
l'effacement de certains champs en cookie demeure.
c'est peut-etre le protocole http qui limite la taille des header.
et d'autre part comme tous (j'ai bien dis tous) les cookies doit
etre transmis a toutes les requetes (pour un meme site), c'est
un peu gaspiller de la bande passante.
Pour ma part, pour une application, 1 ou 2 coockies sont largement
suffisant.
Je me suis réjouis trop vite dans mon message de 19:56 : Tous les
problèmes sont revenus ! Je ne comprends pas les causes de cette
intermittence.
Quelque part, les données sont coupées. Ton hypothèse expliquerait
très bien ce que j'observe. Cela n'aurait rien de spécifique à PHP.
J'ai aussi commencé à regarder du coté de la gestion du cache. Mais
je ne comprends pas grand chose aux nombreuses directives du protocole
HTTP. Il y a beaucoup à lire.
Le site que je développe comprend une quinzaine de services différents.
En tout, actuellement, je définis 31 cookies, pour autant de champs
que je souhaite pérenniser au delà de l'extinction du PC.
Par ailleurs, j'ai défini une trentaine de champs en $_SESSION[].
J'ai vu que les sessions utilisent parfois des cookies pour se
propager, mais que cela est paramétrable. En ajoutant
ini_set("session.use_cookies","0") avant mes session_start(), la
situation n'est pas meilleure.
J'ai aussi essayé en sérialisant $_POST et en définissant un seul cookie
pour enregistrer le résultat. La situation semblait avoir empirée.
Je ne vois plus trop comment faire. Je suis quand même très surpris
par tous ces problèmes,a lors que je ne demande pas la Lune à HTTP.
Peut-être existe-t-il un moyen d'indiquer aux serveurs traitant les
en-tête HTTP que la taille maximale de l'en-tête est augmentée. Je
vais me pencher là-dessus maintenant.
Merci pour ta remarque. S'il y en a d'autres à suivre, elles restent
bienvenues !
C'est ce que je me suis dis. Mais nulle part dans les préférences de Mozilla et IE6 je n'ai vu défini un tel nombre critique. J'ai l'impression qu'il y a peut-être un problème de rapidité du serveur à transmettre les données. Juste après un session_start(), j'ai ajouté une boucle foreach ($_SESSION $k=>$v)echo "$k=$v"; et je constate alors -- outre l'affichage -- que les champs de $_SESSION[] restent intègres (ce qui n'est pas le cas avec un seul echo du champ identifiant qui disparait). Cependant, le problème de l'effacement de certains champs en cookie demeure.
c'est peut-etre le protocole http qui limite la taille des header. et d'autre part comme tous (j'ai bien dis tous) les cookies doit etre transmis a toutes les requetes (pour un meme site), c'est un peu gaspiller de la bande passante.
Pour ma part, pour une application, 1 ou 2 coockies sont largement suffisant.
Je me suis réjouis trop vite dans mon message de 19:56 : Tous les problèmes sont revenus ! Je ne comprends pas les causes de cette intermittence. Quelque part, les données sont coupées. Ton hypothèse expliquerait très bien ce que j'observe. Cela n'aurait rien de spécifique à PHP. J'ai aussi commencé à regarder du coté de la gestion du cache. Mais je ne comprends pas grand chose aux nombreuses directives du protocole HTTP. Il y a beaucoup à lire.
Le site que je développe comprend une quinzaine de services différents. En tout, actuellement, je définis 31 cookies, pour autant de champs que je souhaite pérenniser au delà de l'extinction du PC. Par ailleurs, j'ai défini une trentaine de champs en $_SESSION[]. J'ai vu que les sessions utilisent parfois des cookies pour se propager, mais que cela est paramétrable. En ajoutant ini_set("session.use_cookies","0") avant mes session_start(), la situation n'est pas meilleure. J'ai aussi essayé en sérialisant $_POST et en définissant un seul cookie pour enregistrer le résultat. La situation semblait avoir empirée.
Je ne vois plus trop comment faire. Je suis quand même très surpris par tous ces problèmes,a lors que je ne demande pas la Lune à HTTP. Peut-être existe-t-il un moyen d'indiquer aux serveurs traitant les en-tête HTTP que la taille maximale de l'en-tête est augmentée. Je vais me pencher là-dessus maintenant.
Merci pour ta remarque. S'il y en a d'autres à suivre, elles restent bienvenues !
Pierre
P. Gonogeu
c'est peut-etre le protocole http qui limite la taille des header. et d'autre part comme tous (j'ai bien dis tous) les cookies doit etre transmis a toutes les requetes (pour un meme site), c'est un peu gaspiller de la bande passante.
Pour ma part, pour une application, 1 ou 2 coockies sont largement suffisant.
Ca fonctionne -- enfin ! --, et de manière stable ! En sérialisant "massivement". Ce devait donc bien être dû à une taille maximale d'en-tête HTTP. Comme la taille d'un cookie est essentiellement déterminée par les directives de format plus que par le volume de la valeur à enregistrer, la sérialisation réduit beaucoup le volume total de l'en-tête HTTP.
Ma première tentative de sérialisation fut infructueuse pour deux raisons : * Il me manquait un stripslashes(). Il faut écrire $cookie = unserialize(stripslashes($_COOKIE["clef"])); sans quoi $cookie reste vide. * Il fallait que j'efface tous les cookies du site prédéfinis et toujours vus par le navigateur, et qui -- selon ta remarque -- étaient tous chargés en en-tête HTTP même lorsque non utilisés par mes pages.
Cela clôt plus de 12h de galère. A la bonne heure ! Encore merci.
Pierre
PS: Je n'ai pas trouvé la valeur de la taille limite de l'en-tête HTTP.
c'est peut-etre le protocole http qui limite la taille des header.
et d'autre part comme tous (j'ai bien dis tous) les cookies doit
etre transmis a toutes les requetes (pour un meme site), c'est
un peu gaspiller de la bande passante.
Pour ma part, pour une application, 1 ou 2 coockies sont largement
suffisant.
Ca fonctionne -- enfin ! --, et de manière stable ! En sérialisant
"massivement". Ce devait donc bien être dû à une taille maximale
d'en-tête HTTP. Comme la taille d'un cookie est essentiellement
déterminée par les directives de format plus que par le volume de
la valeur à enregistrer, la sérialisation réduit beaucoup le volume
total de l'en-tête HTTP.
Ma première tentative de sérialisation fut infructueuse pour deux raisons :
* Il me manquait un stripslashes(). Il faut écrire
$cookie = unserialize(stripslashes($_COOKIE["clef"]));
sans quoi $cookie reste vide.
* Il fallait que j'efface tous les cookies du site prédéfinis et
toujours vus par le navigateur, et qui -- selon ta remarque -- étaient
tous chargés en en-tête HTTP même lorsque non utilisés par mes pages.
Cela clôt plus de 12h de galère. A la bonne heure !
Encore merci.
Pierre
PS: Je n'ai pas trouvé la valeur de la taille limite de l'en-tête HTTP.
c'est peut-etre le protocole http qui limite la taille des header. et d'autre part comme tous (j'ai bien dis tous) les cookies doit etre transmis a toutes les requetes (pour un meme site), c'est un peu gaspiller de la bande passante.
Pour ma part, pour une application, 1 ou 2 coockies sont largement suffisant.
Ca fonctionne -- enfin ! --, et de manière stable ! En sérialisant "massivement". Ce devait donc bien être dû à une taille maximale d'en-tête HTTP. Comme la taille d'un cookie est essentiellement déterminée par les directives de format plus que par le volume de la valeur à enregistrer, la sérialisation réduit beaucoup le volume total de l'en-tête HTTP.
Ma première tentative de sérialisation fut infructueuse pour deux raisons : * Il me manquait un stripslashes(). Il faut écrire $cookie = unserialize(stripslashes($_COOKIE["clef"])); sans quoi $cookie reste vide. * Il fallait que j'efface tous les cookies du site prédéfinis et toujours vus par le navigateur, et qui -- selon ta remarque -- étaient tous chargés en en-tête HTTP même lorsque non utilisés par mes pages.
Cela clôt plus de 12h de galère. A la bonne heure ! Encore merci.
Pierre
PS: Je n'ai pas trouvé la valeur de la taille limite de l'en-tête HTTP.
Marc
Merci pour ta remarque. S'il y en a d'autres à suivre, elles restent bienvenues !
je veux bien t'aider et proceder a des essais sur le nombre de cookies, mais encore faudrait-il etre certain de faire exactement la meme chsose que toi.
Montre nous des sections de code, la ou tu créé les cookies.
Merci pour ta remarque. S'il y en a d'autres à suivre, elles restent
bienvenues !
je veux bien t'aider et proceder a des essais sur le nombre de cookies,
mais encore faudrait-il etre certain de faire exactement la meme chsose
que toi.
Montre nous des sections de code, la ou tu créé les cookies.
Merci pour ta remarque. S'il y en a d'autres à suivre, elles restent bienvenues !
je veux bien t'aider et proceder a des essais sur le nombre de cookies, mais encore faudrait-il etre certain de faire exactement la meme chsose que toi.
Montre nous des sections de code, la ou tu créé les cookies.