Bonjour, j'aurais besoin des conseils de codeurs chevronnés pour
améliorer ma production !
Tu veux améliorer la qualité du code produit ou optimiser ton code ? Ce
J'utilise PHP pour analyser en local des fichiers de logs Apache, ça
n'est sans doute pas l'idéal mais ça me permet de cibler exactement
certaines infos.
Ouille ouille ouille...
Je voudrais savoir quel est le "style" de programmation le plus efficace
parce que pour l'instant ça marche mais en se traînant, à tel point que
même avec un set_time_limit à 0, j'obtiens souvent une page blanche.
N'aurais-tu pas plus vite fait d'appeler une commande externe (style
Voilà ce que je fais :
- ouverture du fichier de logs de plusieurs Mo avec fopen,
- boucle dessus pour lire chaque ligne avec fgets,
- traitement de chaque ligne,
- fermeture du fichier,
- affichage des infos.
Un bout de code aurait été plus pratique, non ?
Et les questions que je me pose :
- fopen/fgets par rapport à file : dans les notes de la doc officielle
(à la page de "file"), il y a une qui dit que fgets est beaucoup plus
rapide, est-ce que c'est vrai ?
Pas vraiment.
- est-ce qu'il vaut mieux mettre toutes les lignes du fichier lu dans un
tableau et traiter ensuite chaque item de ce tableau ou bien, comme j'ai
fait, traiter les lignes une par une pour éviter d'avoir un tableau qui
fait plusieurs Mo ? Ou alors ça revient au même ?
Si tu peux régler les paramètres mémoires exclusivement pour ce script,
- enfin, comme j'utilise dans mon script pas mal d'expressions
rationnelles et que la doc précise qu'il vaut mieux utiliser strpos()
pour tester la présence d'une chaîne, je voudrais aussi savoir s'il y a
une différence de vitesse apréciable entre :
if (ereg("^(www.)?machin",$url)) {...}
if (strpos($url,"www.machin")!==0 && strpos($url,"machin")!==0) {...}
Dans les mêmes conditions de tests que précédemment et en rajoutant les
Bonjour, j'aurais besoin des conseils de codeurs chevronnés pour
améliorer ma production !
Tu veux améliorer la qualité du code produit ou optimiser ton code ? Ce
J'utilise PHP pour analyser en local des fichiers de logs Apache, ça
n'est sans doute pas l'idéal mais ça me permet de cibler exactement
certaines infos.
Ouille ouille ouille...
Je voudrais savoir quel est le "style" de programmation le plus efficace
parce que pour l'instant ça marche mais en se traînant, à tel point que
même avec un set_time_limit à 0, j'obtiens souvent une page blanche.
N'aurais-tu pas plus vite fait d'appeler une commande externe (style
Voilà ce que je fais :
- ouverture du fichier de logs de plusieurs Mo avec fopen,
- boucle dessus pour lire chaque ligne avec fgets,
- traitement de chaque ligne,
- fermeture du fichier,
- affichage des infos.
Un bout de code aurait été plus pratique, non ?
Et les questions que je me pose :
- fopen/fgets par rapport à file : dans les notes de la doc officielle
(à la page de "file"), il y a une qui dit que fgets est beaucoup plus
rapide, est-ce que c'est vrai ?
Pas vraiment.
- est-ce qu'il vaut mieux mettre toutes les lignes du fichier lu dans un
tableau et traiter ensuite chaque item de ce tableau ou bien, comme j'ai
fait, traiter les lignes une par une pour éviter d'avoir un tableau qui
fait plusieurs Mo ? Ou alors ça revient au même ?
Si tu peux régler les paramètres mémoires exclusivement pour ce script,
- enfin, comme j'utilise dans mon script pas mal d'expressions
rationnelles et que la doc précise qu'il vaut mieux utiliser strpos()
pour tester la présence d'une chaîne, je voudrais aussi savoir s'il y a
une différence de vitesse apréciable entre :
if (ereg("^(www.)?machin",$url)) {...}
if (strpos($url,"www.machin")!==0 && strpos($url,"machin")!==0) {...}
Dans les mêmes conditions de tests que précédemment et en rajoutant les
Bonjour, j'aurais besoin des conseils de codeurs chevronnés pour
améliorer ma production !
Tu veux améliorer la qualité du code produit ou optimiser ton code ? Ce
J'utilise PHP pour analyser en local des fichiers de logs Apache, ça
n'est sans doute pas l'idéal mais ça me permet de cibler exactement
certaines infos.
Ouille ouille ouille...
Je voudrais savoir quel est le "style" de programmation le plus efficace
parce que pour l'instant ça marche mais en se traînant, à tel point que
même avec un set_time_limit à 0, j'obtiens souvent une page blanche.
N'aurais-tu pas plus vite fait d'appeler une commande externe (style
Voilà ce que je fais :
- ouverture du fichier de logs de plusieurs Mo avec fopen,
- boucle dessus pour lire chaque ligne avec fgets,
- traitement de chaque ligne,
- fermeture du fichier,
- affichage des infos.
Un bout de code aurait été plus pratique, non ?
Et les questions que je me pose :
- fopen/fgets par rapport à file : dans les notes de la doc officielle
(à la page de "file"), il y a une qui dit que fgets est beaucoup plus
rapide, est-ce que c'est vrai ?
Pas vraiment.
- est-ce qu'il vaut mieux mettre toutes les lignes du fichier lu dans un
tableau et traiter ensuite chaque item de ce tableau ou bien, comme j'ai
fait, traiter les lignes une par une pour éviter d'avoir un tableau qui
fait plusieurs Mo ? Ou alors ça revient au même ?
Si tu peux régler les paramètres mémoires exclusivement pour ce script,
- enfin, comme j'utilise dans mon script pas mal d'expressions
rationnelles et que la doc précise qu'il vaut mieux utiliser strpos()
pour tester la présence d'une chaîne, je voudrais aussi savoir s'il y a
une différence de vitesse apréciable entre :
if (ereg("^(www.)?machin",$url)) {...}
if (strpos($url,"www.machin")!==0 && strpos($url,"machin")!==0) {...}
Dans les mêmes conditions de tests que précédemment et en rajoutant les
- fopen/fgets par rapport à file : dans les notes de la doc officielle
(à la page de "file"), il y a une qui dit que fgets est beaucoup plus
rapide, est-ce que c'est vrai ?
- est-ce qu'il vaut mieux mettre toutes les lignes du fichier lu dans un
tableau et traiter ensuite chaque item de ce tableau ou bien, comme j'ai
fait, traiter les lignes une par une pour éviter d'avoir un tableau qui
fait plusieurs Mo ? Ou alors ça revient au même ?
- enfin, comme j'utilise dans mon script pas mal d'expressions
rationnelles et que la doc précise qu'il vaut mieux utiliser strpos()
pour tester la présence d'une chaîne, je voudrais aussi savoir s'il y a
une différence de vitesse apréciable entre :
if (ereg("^(www.)?machin",$url)) {...}
if (strpos($url,"www.machin")!==0 && strpos($url,"machin")!==0) {...}
- fopen/fgets par rapport à file : dans les notes de la doc officielle
(à la page de "file"), il y a une qui dit que fgets est beaucoup plus
rapide, est-ce que c'est vrai ?
- est-ce qu'il vaut mieux mettre toutes les lignes du fichier lu dans un
tableau et traiter ensuite chaque item de ce tableau ou bien, comme j'ai
fait, traiter les lignes une par une pour éviter d'avoir un tableau qui
fait plusieurs Mo ? Ou alors ça revient au même ?
- enfin, comme j'utilise dans mon script pas mal d'expressions
rationnelles et que la doc précise qu'il vaut mieux utiliser strpos()
pour tester la présence d'une chaîne, je voudrais aussi savoir s'il y a
une différence de vitesse apréciable entre :
if (ereg("^(www.)?machin",$url)) {...}
if (strpos($url,"www.machin")!==0 && strpos($url,"machin")!==0) {...}
- fopen/fgets par rapport à file : dans les notes de la doc officielle
(à la page de "file"), il y a une qui dit que fgets est beaucoup plus
rapide, est-ce que c'est vrai ?
- est-ce qu'il vaut mieux mettre toutes les lignes du fichier lu dans un
tableau et traiter ensuite chaque item de ce tableau ou bien, comme j'ai
fait, traiter les lignes une par une pour éviter d'avoir un tableau qui
fait plusieurs Mo ? Ou alors ça revient au même ?
- enfin, comme j'utilise dans mon script pas mal d'expressions
rationnelles et que la doc précise qu'il vaut mieux utiliser strpos()
pour tester la présence d'une chaîne, je voudrais aussi savoir s'il y a
une différence de vitesse apréciable entre :
if (ereg("^(www.)?machin",$url)) {...}
if (strpos($url,"www.machin")!==0 && strpos($url,"machin")!==0) {...}
Hello !
Salut et merci de ta réponse !
Tu veux améliorer la qualité du code produit ou optimiser ton code ? Ce
n'est pas vraiment la même chose.
Un peu des deux ! Vu que je n'ai pas trop d'idées pour optimiser, je me
Ouille ouille ouille...
L'est pas vraiment fait pour ça notre brave PHP.
N'aurais-tu pas plus vite fait d'appeler une commande externe (style
grep, sed ou encore un script shell) que de le coder complètement en PHP ?
J'imagine bien que PHP n'est pas l'idéal pour faire ce que je veux mais
Un bout de code aurait été plus pratique, non ?
C'est vrai ! A voir tout en bas.
Il suffit simplement de tester :
Merci pour les tests qui ont bien éclairés bien ma petite lanterne, je
Hello !
Salut et merci de ta réponse !
Tu veux améliorer la qualité du code produit ou optimiser ton code ? Ce
n'est pas vraiment la même chose.
Un peu des deux ! Vu que je n'ai pas trop d'idées pour optimiser, je me
Ouille ouille ouille...
L'est pas vraiment fait pour ça notre brave PHP.
N'aurais-tu pas plus vite fait d'appeler une commande externe (style
grep, sed ou encore un script shell) que de le coder complètement en PHP ?
J'imagine bien que PHP n'est pas l'idéal pour faire ce que je veux mais
Un bout de code aurait été plus pratique, non ?
C'est vrai ! A voir tout en bas.
Il suffit simplement de tester :
Merci pour les tests qui ont bien éclairés bien ma petite lanterne, je
Hello !
Salut et merci de ta réponse !
Tu veux améliorer la qualité du code produit ou optimiser ton code ? Ce
n'est pas vraiment la même chose.
Un peu des deux ! Vu que je n'ai pas trop d'idées pour optimiser, je me
Ouille ouille ouille...
L'est pas vraiment fait pour ça notre brave PHP.
N'aurais-tu pas plus vite fait d'appeler une commande externe (style
grep, sed ou encore un script shell) que de le coder complètement en PHP ?
J'imagine bien que PHP n'est pas l'idéal pour faire ce que je veux mais
Un bout de code aurait été plus pratique, non ?
C'est vrai ! A voir tout en bas.
Il suffit simplement de tester :
Merci pour les tests qui ont bien éclairés bien ma petite lanterne, je
Frederic BISSON wrote:
Sinon j'ai remarqué que quand mon script merdoie (je n'obtiens au bout
du compte qu'à une page blanche), ça correspond plus ou moins au timeout
d'Apache (300 secondes). Comme j'ai déjà set_time_limit(0), est-ce que
je ne pourrais pas augmenter le timeout ?
Je suis le seul utilisateur du serveur et ça ne me dérange pas que la
machine tourne pendant 10 minutes si il faut pour pondre ses résultats.
Frederic BISSON wrote:
Sinon j'ai remarqué que quand mon script merdoie (je n'obtiens au bout
du compte qu'à une page blanche), ça correspond plus ou moins au timeout
d'Apache (300 secondes). Comme j'ai déjà set_time_limit(0), est-ce que
je ne pourrais pas augmenter le timeout ?
Je suis le seul utilisateur du serveur et ça ne me dérange pas que la
machine tourne pendant 10 minutes si il faut pour pondre ses résultats.
Frederic BISSON wrote:
Sinon j'ai remarqué que quand mon script merdoie (je n'obtiens au bout
du compte qu'à une page blanche), ça correspond plus ou moins au timeout
d'Apache (300 secondes). Comme j'ai déjà set_time_limit(0), est-ce que
je ne pourrais pas augmenter le timeout ?
Je suis le seul utilisateur du serveur et ça ne me dérange pas que la
machine tourne pendant 10 minutes si il faut pour pondre ses résultats.
Si tu exécute cela en local, pourquoi ne fais tu pas tourner ton script
php en ligne de commande pour générer le résultat dans un fichier html
statique. Tu n'a plus aucune contrainte de timeout dans cette utilisation.
Pourquoi ?
La méthode de tête :
php -q monscript.php > mon_rapport.html
OK, (par contre je n'ai rien trouvé dans la doc sur "-q", tu pensais
Tu met cela dans un script que tu exécutes à la fréquence de
récupération de ton fichier de log (avec éventuellement nommage du
fichier rapport en conséquence)
Cordialement
Merci
Si tu exécute cela en local, pourquoi ne fais tu pas tourner ton script
php en ligne de commande pour générer le résultat dans un fichier html
statique. Tu n'a plus aucune contrainte de timeout dans cette utilisation.
Pourquoi ?
La méthode de tête :
php -q monscript.php > mon_rapport.html
OK, (par contre je n'ai rien trouvé dans la doc sur "-q", tu pensais
Tu met cela dans un script que tu exécutes à la fréquence de
récupération de ton fichier de log (avec éventuellement nommage du
fichier rapport en conséquence)
Cordialement
Merci
Si tu exécute cela en local, pourquoi ne fais tu pas tourner ton script
php en ligne de commande pour générer le résultat dans un fichier html
statique. Tu n'a plus aucune contrainte de timeout dans cette utilisation.
Pourquoi ?
La méthode de tête :
php -q monscript.php > mon_rapport.html
OK, (par contre je n'ai rien trouvé dans la doc sur "-q", tu pensais
Tu met cela dans un script que tu exécutes à la fréquence de
récupération de ton fichier de log (avec éventuellement nommage du
fichier rapport en conséquence)
Cordialement
Merci