J'ai un problème avec le script simplifié ci-dessous!
Quand je démarre ce script pour la première fois env. 17'000 nom de fichiers sont lu depuis un répertoire (/camera25) en moin de 5 sec.
Quand je click sur le bouton (2ème depuis la gauche) ou le bouton reload du browser pour relire ce même répertoire cela va au timeout du provider soit plus de
2min!
Même problème avec les autres icones pour lire les autres répertoires (certain on moins de 2 fichiers)
Pour quel raison lorsque je charge ce script pour la première fois cela prend moins de 5 secondes, puis lorsque je rappelle ce script en mode SELF cela ne
fonctionne plus?
Y-a-t'il un cache à vider ou de variables à effacer ?
Voici un lien temporaire pour démontrer le problème : http://www.schlierholz.ch/camera/indexl.php
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
Gerard Menvussa
otto wrote:
Bonjour
J'ai un problème avec le script simplifié ci-dessous!
Quand je démarre ce script pour la première fois env. 17'000 nom de fichiers sont lu depuis un répertoire (/camera25) en moin de 5 sec.
Quand je click sur le bouton (2ème depuis la gauche) ou le bouton reload du browser pour relire ce même répertoire cela va au timeout du provider soit plus de
2min!
Même problème avec les autres icones pour lire les autres répertoires (certain on moins de 2 fichiers)
Pour quel raison lorsque je charge ce script pour la première fois cela prend moins de 5 secondes, puis lorsque je rappelle ce script en mode SELF cela ne
fonctionne plus?
Y-a-t'il un cache à vider ou de variables à effacer ?
Bonjour
C'est la session qui semble poser problème. En effaçant le cookie de session l'erreur ne se produit plus.
otto wrote:
Bonjour
J'ai un problème avec le script simplifié ci-dessous!
Quand je démarre ce script pour la première fois env. 17'000 nom de fichiers sont lu depuis un répertoire (/camera25) en moin de 5 sec.
Quand je click sur le bouton (2ème depuis la gauche) ou le bouton reload du browser pour relire ce même répertoire cela va au timeout du provider soit plus de
2min!
Même problème avec les autres icones pour lire les autres répertoires (certain on moins de 2 fichiers)
Pour quel raison lorsque je charge ce script pour la première fois cela prend moins de 5 secondes, puis lorsque je rappelle ce script en mode SELF cela ne
fonctionne plus?
Y-a-t'il un cache à vider ou de variables à effacer ?
Bonjour
C'est la session qui semble poser problème. En effaçant le cookie de
session l'erreur ne se produit plus.
J'ai un problème avec le script simplifié ci-dessous!
Quand je démarre ce script pour la première fois env. 17'000 nom de fichiers sont lu depuis un répertoire (/camera25) en moin de 5 sec.
Quand je click sur le bouton (2ème depuis la gauche) ou le bouton reload du browser pour relire ce même répertoire cela va au timeout du provider soit plus de
2min!
Même problème avec les autres icones pour lire les autres répertoires (certain on moins de 2 fichiers)
Pour quel raison lorsque je charge ce script pour la première fois cela prend moins de 5 secondes, puis lorsque je rappelle ce script en mode SELF cela ne
fonctionne plus?
Y-a-t'il un cache à vider ou de variables à effacer ?
Bonjour
C'est la session qui semble poser problème. En effaçant le cookie de session l'erreur ne se produit plus.
Mickael Wolff
Bonjour
Bonjour,
C'est visiblement un problème du code lorsque tu utilises la session (car lorsque j'efface le cookie de session, le problème n'apparaît plus). Est-ce que le serveur est en register_globals == On ? Si c'est le cas, il est logique que ton tableau contenant la liste des fichiers double à chaque utilisation.
while ($fp < count($files))
La taille du tableau $files ne change pas. Tu devrais plutôt faire un truc du genre :
rsort($files) ; for($fp = count($files) ; $fp == 0 ; $fp--) { // le code modifié pour fonctionner à l'envers de la logique initiale }
C'est visiblement un problème du code lorsque tu utilises la session
(car lorsque j'efface le cookie de session, le problème n'apparaît
plus). Est-ce que le serveur est en register_globals == On ? Si c'est le
cas, il est logique que ton tableau contenant la liste des fichiers
double à chaque utilisation.
while ($fp < count($files))
La taille du tableau $files ne change pas. Tu devrais plutôt faire un
truc du genre :
rsort($files) ;
for($fp = count($files) ; $fp == 0 ; $fp--)
{
// le code modifié pour fonctionner à l'envers de la logique initiale
}
C'est visiblement un problème du code lorsque tu utilises la session (car lorsque j'efface le cookie de session, le problème n'apparaît plus). Est-ce que le serveur est en register_globals == On ? Si c'est le cas, il est logique que ton tableau contenant la liste des fichiers double à chaque utilisation.
while ($fp < count($files))
La taille du tableau $files ne change pas. Tu devrais plutôt faire un truc du genre :
rsort($files) ; for($fp = count($files) ; $fp == 0 ; $fp--) { // le code modifié pour fonctionner à l'envers de la logique initiale }
C'est visiblement un problème du code lorsque tu utilises la session
(car lorsque j'efface le cookie de session, le problème n'apparaît
plus). Est-ce que le serveur est en register_globals == On ? Si c'est le
cas, il est logique que ton tableau contenant la liste des fichiers
double à chaque utilisation.
while ($fp < count($files))
La taille du tableau $files ne change pas. Tu devrais plutôt faire un
truc du genre :
rsort($files) ;
for($fp = count($files) ; $fp == 0 ; $fp--)
{
// le code modifié pour fonctionner à l'envers de la logique initiale
}
Bonjour Mickaël,
Merci beaucoup pour les informations.
Oui sur ce serveur la register_globals est à ON
il est logique que ton tableau contenant la liste des fichiers
double à chaque utilisation.
La taille du tableau $files ne change pas. Tu devrais plutôt faire un truc du genre :
rsort($files) ;
for($fp = count($files) ; $fp == 0 ; $fp--)
{
// le code modifié pour fonctionner à l'envers de la logique initiale
}
En tant que débutant, je ne comprends pas ou est le problème de fichier qui double!
N'est il pas possible de réinitialiser les variables?
J'ai bien essayé avec unset() d'effacer les $tableaux! mais cela n'a pas fonctionné.
Quel est la différence entre un:
for($fp = count($files) ; $fp == 0 ; $fp--)
et
while ($fp < count($files))
avec mon problème de session. Il me semble que les deux sont des boucles?
Je vais tester la solution avec for() demain.
Gerard Menvussa
On 11 Dec 2007 22:33:07 GMT, Gerard Menvussa wrote:
C'est la session qui semble poser problème. En effaçant le cookie de session l'erreur ne se produit plus.
Est-il possible d'effacer un cookie session par programmation ?
Oui mais dans ce cas autant ne pas ouvrir de session. Ce que je voulais dire c'est que le problème se produit vraisemblablement au moment ou le tableau est stocké dans la session.
Ce qu'il faut savoir c'est que par défaut sur PHP les données de sessions sont stockés dans un fichier. Il est possible qu'il y ait un problème d'accès à ce fichier ? Je ne sais pas. Le PHP vérouille le fichier de session avant de l'utiliser. Vous avez quoi comme valeur pour "session.auto_start" ?
On 11 Dec 2007 22:33:07 GMT, Gerard Menvussa <gerard.menvussa@yargloo.con> wrote:
C'est la session qui semble poser problème. En effaçant le cookie de
session l'erreur ne se produit plus.
Est-il possible d'effacer un cookie session par programmation ?
Oui mais dans ce cas autant ne pas ouvrir de session.
Ce que je voulais dire c'est que le problème se produit
vraisemblablement au moment ou le tableau est stocké dans la session.
Ce qu'il faut savoir c'est que par défaut sur PHP les données de
sessions sont stockés dans un fichier. Il est possible qu'il y ait un
problème d'accès à ce fichier ? Je ne sais pas. Le PHP vérouille le
fichier de session avant de l'utiliser. Vous avez quoi comme valeur pour
"session.auto_start" ?
On 11 Dec 2007 22:33:07 GMT, Gerard Menvussa wrote:
C'est la session qui semble poser problème. En effaçant le cookie de session l'erreur ne se produit plus.
Est-il possible d'effacer un cookie session par programmation ?
Oui mais dans ce cas autant ne pas ouvrir de session. Ce que je voulais dire c'est que le problème se produit vraisemblablement au moment ou le tableau est stocké dans la session.
Ce qu'il faut savoir c'est que par défaut sur PHP les données de sessions sont stockés dans un fichier. Il est possible qu'il y ait un problème d'accès à ce fichier ? Je ne sais pas. Le PHP vérouille le fichier de session avant de l'utiliser. Vous avez quoi comme valeur pour "session.auto_start" ?
Mickael Wolff
Merci beaucoup pour les informations.
Service !
Oui sur ce serveur la register_globals est à ON En tant que débutant, je ne comprends pas ou est le problème de fichier qui double!
Est-ce que tu sais à quoi sert register_globals ? En fait, au démarrage du script, les tableaux superglobaux $_GET, $_POST, $_COOKIE et $_SESSION sont jetés dans la portée globale. Donc si la clé « files » existe dans $_SESSION, une variable $files est créée.
Ceci explique que ton tableau $files, au second appel du script, comporte déjà 27000 entrées et des brouettes. D'après ton script, tu rajoutes une seconde fois les 27000 entrées. Conséquence : ton tableau double. Ce doit être pour ça que ton while prend autant de temps.
N'est il pas possible de réinitialiser les variables?
Pourquoi sauvegardes-tu le contenu de $files si tu ne l'utilises pas au second appel ?
J'ai bien essayé avec unset() d'effacer les $tableaux! mais cela n'a pas fonctionné.
Ben si. Mais tu peux aussi faire $files = null. Mais franchement, poses-toi la question du pourquoi tu sauvegarde la liste des fichiers dans la session (ce qui est une opération coûteuse avec un tableau aussi grand, car ton tableau est sérializé, c'est à dire transformé en chaîne de caractères).
Quel est la différence entre un:
La performance.
for($fp = count($files) ; $fp == 0 ; $fp--)
On appelle une fois count, puis on décrémente jusqu'à ce qu'il n'y ait plus d'éléments.
while ($fp < count($files))
À chaque bouclage du while, tu appelles counts. Est-ce que la taille du tableau change dans la boucle ? Non. Alors il est inutile de rappeler à chaque coup la fonction.
avec mon problème de session. Il me semble que les deux sont des boucles? Je vais tester la solution avec for() demain.
Oui, c'était juste en passant.
Mais le problème que tu rencontre est basique. Il faut que tu apprennes à le résoudre seul, sinon tu vas passer des éternités à attendre nos réponses. var_dump peut être ton ami par exemple, puisqu'il affiche le contenu et le type d'une variable.
À bientôt. -- Mickaël Wolff aka Lupus Michaelis http://lupusmic.org
Merci beaucoup pour les informations.
Service !
Oui sur ce serveur la register_globals est à ON
En tant que débutant, je ne comprends pas ou est le problème de fichier qui double!
Est-ce que tu sais à quoi sert register_globals ? En fait, au
démarrage du script, les tableaux superglobaux $_GET, $_POST, $_COOKIE
et $_SESSION sont jetés dans la portée globale. Donc si la clé « files »
existe dans $_SESSION, une variable $files est créée.
Ceci explique que ton tableau $files, au second appel du script,
comporte déjà 27000 entrées et des brouettes. D'après ton script, tu
rajoutes une seconde fois les 27000 entrées. Conséquence : ton tableau
double. Ce doit être pour ça que ton while prend autant de temps.
N'est il pas possible de réinitialiser les variables?
Pourquoi sauvegardes-tu le contenu de $files si tu ne l'utilises pas
au second appel ?
J'ai bien essayé avec unset() d'effacer les $tableaux! mais cela n'a pas fonctionné.
Ben si. Mais tu peux aussi faire $files = null. Mais franchement,
poses-toi la question du pourquoi tu sauvegarde la liste des fichiers
dans la session (ce qui est une opération coûteuse avec un tableau aussi
grand, car ton tableau est sérializé, c'est à dire transformé en chaîne
de caractères).
Quel est la différence entre un:
La performance.
for($fp = count($files) ; $fp == 0 ; $fp--)
On appelle une fois count, puis on décrémente jusqu'à ce qu'il n'y ait
plus d'éléments.
while ($fp < count($files))
À chaque bouclage du while, tu appelles counts. Est-ce que la taille
du tableau change dans la boucle ? Non. Alors il est inutile de rappeler
à chaque coup la fonction.
avec mon problème de session. Il me semble que les deux sont des boucles?
Je vais tester la solution avec for() demain.
Oui, c'était juste en passant.
Mais le problème que tu rencontre est basique. Il faut que tu
apprennes à le résoudre seul, sinon tu vas passer des éternités à
attendre nos réponses. var_dump peut être ton ami par exemple, puisqu'il
affiche le contenu et le type d'une variable.
À bientôt.
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Oui sur ce serveur la register_globals est à ON En tant que débutant, je ne comprends pas ou est le problème de fichier qui double!
Est-ce que tu sais à quoi sert register_globals ? En fait, au démarrage du script, les tableaux superglobaux $_GET, $_POST, $_COOKIE et $_SESSION sont jetés dans la portée globale. Donc si la clé « files » existe dans $_SESSION, une variable $files est créée.
Ceci explique que ton tableau $files, au second appel du script, comporte déjà 27000 entrées et des brouettes. D'après ton script, tu rajoutes une seconde fois les 27000 entrées. Conséquence : ton tableau double. Ce doit être pour ça que ton while prend autant de temps.
N'est il pas possible de réinitialiser les variables?
Pourquoi sauvegardes-tu le contenu de $files si tu ne l'utilises pas au second appel ?
J'ai bien essayé avec unset() d'effacer les $tableaux! mais cela n'a pas fonctionné.
Ben si. Mais tu peux aussi faire $files = null. Mais franchement, poses-toi la question du pourquoi tu sauvegarde la liste des fichiers dans la session (ce qui est une opération coûteuse avec un tableau aussi grand, car ton tableau est sérializé, c'est à dire transformé en chaîne de caractères).
Quel est la différence entre un:
La performance.
for($fp = count($files) ; $fp == 0 ; $fp--)
On appelle une fois count, puis on décrémente jusqu'à ce qu'il n'y ait plus d'éléments.
while ($fp < count($files))
À chaque bouclage du while, tu appelles counts. Est-ce que la taille du tableau change dans la boucle ? Non. Alors il est inutile de rappeler à chaque coup la fonction.
avec mon problème de session. Il me semble que les deux sont des boucles? Je vais tester la solution avec for() demain.
Oui, c'était juste en passant.
Mais le problème que tu rencontre est basique. Il faut que tu apprennes à le résoudre seul, sinon tu vas passer des éternités à attendre nos réponses. var_dump peut être ton ami par exemple, puisqu'il affiche le contenu et le type d'une variable.
À bientôt. -- Mickaël Wolff aka Lupus Michaelis http://lupusmic.org
otto
On 13 Dec 2007 13:21:18 GMT, Mickael Wolff wrote:
Merci beaucoup pour les informations.
Service !
Oui sur ce serveur la register_globals est à ON
En tant que débutant, je ne comprends pas ou est le problème de fichier qui double!
Est-ce que tu sais à quoi sert register_globals ?
Oui je savais cela!
for($fp = count($files) ; $fp == 0 ; $fp--)
On appelle une fois count, puis on décrémente jusqu'à ce qu'il n'y ait
plus d'éléments.
Ok, c'est clair.
Mais le problème que tu rencontre est basique. Il faut que tu
apprennes à le résoudre seul, sinon tu vas passer des éternités à
attendre nos réponses. var_dump peut être ton ami par exemple, puisqu'il
affiche le contenu et le type d'une variable.
Ok, j'apprends avec un livre, alors si un réponse prend un peu de temps ce n'est par un grand problème.
Mais avec les détails reçu par ce message j'y vois plus clair. C'est ce que je reproche au deux livres que
j'ai. On apprend bien des détails, mais la philosophie PHP (si je peux appeler cela comme cela) est mal expliqué.
Je me suis fais un peu avoir parce que mon installation local (Wamp 5) à la register_globals à OFF et
l'essai que j'ai fais chez le provider d'un ami à la variable à ON de plus il est en PHP4!
Encore une fois merci
On 13 Dec 2007 13:21:18 GMT, Mickael Wolff <mickael.wolff@laposte.net> wrote:
Merci beaucoup pour les informations.
Service !
Oui sur ce serveur la register_globals est à ON
En tant que débutant, je ne comprends pas ou est le problème de fichier qui double!
Est-ce que tu sais à quoi sert register_globals ?
Oui je savais cela!
for($fp = count($files) ; $fp == 0 ; $fp--)
On appelle une fois count, puis on décrémente jusqu'à ce qu'il n'y ait
plus d'éléments.
Ok, c'est clair.
Mais le problème que tu rencontre est basique. Il faut que tu
apprennes à le résoudre seul, sinon tu vas passer des éternités à
attendre nos réponses. var_dump peut être ton ami par exemple, puisqu'il
affiche le contenu et le type d'une variable.
Ok, j'apprends avec un livre, alors si un réponse prend un peu de temps ce n'est par un grand problème.
Mais avec les détails reçu par ce message j'y vois plus clair. C'est ce que je reproche au deux livres que
j'ai. On apprend bien des détails, mais la philosophie PHP (si je peux appeler cela comme cela) est mal expliqué.
Je me suis fais un peu avoir parce que mon installation local (Wamp 5) à la register_globals à OFF et
l'essai que j'ai fais chez le provider d'un ami à la variable à ON de plus il est en PHP4!
Ceci explique que ton tableau $files, au second appel du script,
comporte déjà 27000 entrées et des brouettes. D'après ton script, tu
rajoutes une seconde fois les 27000 entrées. Conséquence : ton tableau
double. Ce doit être pour ça que ton while prend autant de temps.
Vu que la variable register_globals est à on, j'ai supprimé session_start(),
maintenant le chargement des pages est super rapide.
Encore merci pour le conseil.
Je passe des variables par l'url et cela fonctionne sans problème.
Je désire parconte pas passer par l'url pour le tableau $files, mais l'avoir à disposition dans tous mes autres scripts.
Comment fais on cela sans $_SESSION?, normalement la variable devait être visible avec register_globals à On ?
Mais cela ne fonctionne pas.
Le provider à PHP Version 5.2.5 avec register_globals On
Gerard Menvussa
otto wrote:
On 13 Dec 2007 13:21:18 GMT, Mickael Wolff wrote:
Ceci explique que ton tableau $files, au second appel du script,
comporte déjà 27000 entrées et des brouettes. D'après ton script, tu
rajoutes une seconde fois les 27000 entrées. Conséquence : ton tableau
double. Ce doit être pour ça que ton while prend autant de temps.
Vu que la variable register_globals est à on, j'ai supprimé session_start(),
maintenant le chargement des pages est super rapide.
Si vous supprimez session_start() : plus de session donc plus de problèmes. Cela n'a ahma pas de rapport avec register_globals.
Je passe des variables par l'url et cela fonctionne sans problème.
Le problème n'est vraisemblablement pas relié au fait que vous passiez ou non les variable grâce à la méthode GET (par l'URL) ou POST (pas par l'URL)
Je désire parconte pas passer par l'url pour le tableau $files, mais l'avoir à disposition dans tous mes autres scripts.
Comment fais on cela sans $_SESSION?, normalement la variable devait être visible avec register_globals à On ?
$_SESSION est une super global elle est toujours disponible depuis n'importe où *lorsque la session est démarré*. Ce tableau représente un ensemble de données qui sont stockées sur le serveur et associé à un identifiant unique "id de session" transmis par un cookie. Donc si vous ne démarrez pas la session l'identifiant n'est créé, pas envoyé dans un cookie lors de la première réponse, pas renvoyé par le navigateur lors des requêtes suivantes et la variable $_SESSION est vide.
Mais cela ne fonctionne pas.
Normal sans la session.
otto wrote:
On 13 Dec 2007 13:21:18 GMT, Mickael Wolff <mickael.wolff@laposte.net> wrote:
Ceci explique que ton tableau $files, au second appel du script,
comporte déjà 27000 entrées et des brouettes. D'après ton script, tu
rajoutes une seconde fois les 27000 entrées. Conséquence : ton tableau
double. Ce doit être pour ça que ton while prend autant de temps.
Vu que la variable register_globals est à on, j'ai supprimé session_start(),
maintenant le chargement des pages est super rapide.
Si vous supprimez session_start() : plus de session donc plus de
problèmes. Cela n'a ahma pas de rapport avec register_globals.
Je passe des variables par l'url et cela fonctionne sans problème.
Le problème n'est vraisemblablement pas relié au fait que vous passiez
ou non les variable grâce à la méthode GET (par l'URL) ou POST (pas par
l'URL)
Je désire parconte pas passer par l'url pour le tableau $files, mais l'avoir à disposition dans tous mes autres scripts.
Comment fais on cela sans $_SESSION?, normalement la variable devait être visible avec register_globals à On ?
$_SESSION est une super global elle est toujours disponible depuis
n'importe où *lorsque la session est démarré*.
Ce tableau représente un ensemble de données qui sont stockées sur le
serveur et associé à un identifiant unique "id de session" transmis par
un cookie. Donc si vous ne démarrez pas la session l'identifiant n'est
créé, pas envoyé dans un cookie lors de la première réponse, pas renvoyé
par le navigateur lors des requêtes suivantes et la variable $_SESSION
est vide.
Ceci explique que ton tableau $files, au second appel du script,
comporte déjà 27000 entrées et des brouettes. D'après ton script, tu
rajoutes une seconde fois les 27000 entrées. Conséquence : ton tableau
double. Ce doit être pour ça que ton while prend autant de temps.
Vu que la variable register_globals est à on, j'ai supprimé session_start(),
maintenant le chargement des pages est super rapide.
Si vous supprimez session_start() : plus de session donc plus de problèmes. Cela n'a ahma pas de rapport avec register_globals.
Je passe des variables par l'url et cela fonctionne sans problème.
Le problème n'est vraisemblablement pas relié au fait que vous passiez ou non les variable grâce à la méthode GET (par l'URL) ou POST (pas par l'URL)
Je désire parconte pas passer par l'url pour le tableau $files, mais l'avoir à disposition dans tous mes autres scripts.
Comment fais on cela sans $_SESSION?, normalement la variable devait être visible avec register_globals à On ?
$_SESSION est une super global elle est toujours disponible depuis n'importe où *lorsque la session est démarré*. Ce tableau représente un ensemble de données qui sont stockées sur le serveur et associé à un identifiant unique "id de session" transmis par un cookie. Donc si vous ne démarrez pas la session l'identifiant n'est créé, pas envoyé dans un cookie lors de la première réponse, pas renvoyé par le navigateur lors des requêtes suivantes et la variable $_SESSION est vide.