|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Bastien Tanesie Inscription : janvier 2010 Messages : 4 ![]() |
Salut !
Cela fait maintenant quelques années que je travaille avec PHP et j'ai bien sûr l'habiture d'utiliser la méthode suivante: Code :
$link = mysql_connect(...) or die('Impossible de se connecter au serveur MySQL'); Celle-ci lance une erreur lorsque le fichier lu n'existe pas sur le serveur. J'avais donc commencé à faire ceci: Code :
$log_file = @file('fichier_de_log.log') or die(...); Code :
L'idée est donc que, lorsque je vérifie la taille du tableau (count), j'affiche une erreur si le tableau est vide. La ligne du "or" me permet donc de définir un tableau vide si le fichier est inexistant, ce qui affichera donc l'erreur par la suite. J'ai testé le code, et ce dernier fonctionne sans afficher d'erreur, mais je me demande quand même cela est normal ? ![]() Peut-on vraiment faire cela et est-ce "propre" ? Car, si c'est vraiment une technique qui marche, je pourrais être amené à m'en servir assez régulièrement en fin de compte ! Merci d'avance pour vos réponses !
|
||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
pas besoin de or die c'est une mauvaise pratique dans ce cas la (pour mysql aussi), il suffis de faire un file_exists et/ou is_readable en premier, je te déconseille aussi de mettre des @
si derriere c'est pour lire des CSV utilise fgetcsv en SplFileObject ou en fopen
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#3 | |
|
Membre Expert
![]() Inscription : septembre 2010 Messages : 1 242 ![]() |
Citation:
__________________
- Réalisations - Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical. |
|
|
|
00
|
|
|
#4 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
Citation:
et même si c'etait l'inverse je pense pas que la question est à se posé, on fait d'abord un code propre et ensuite on voit les perfs, surtout qu'ici celui qui va prendre toute la ressources c'est bien file et si il fait un boucle pour traité derrière il a plus intérêt a faire du stream
__________________
http://blog.stealth35.com/ |
|
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 709 ![]() |
Salut
Juste pour rejoindre ce qui a été déjà dit, soit que les @ ou autre techniques qui masquent les erreurs n'est pas une bonne approche. C'est un peu comme débrancher les organes de sécurité ou d'alerte sur des machines/équipements. Ce que tu évoque, c'est la gestion des erreurs, et ceci peu se gérer simplement, ne serait ce quand on débute et qu'on ne sait pas trop, c'est d'agir sur 2 directives du php.ini : display_error et error_reporting Le error_reporting le définir à E_ALL qui correspond à un niveau d'erreur. Pour le display_error, il y a une alternative normalement : Quand on développe chez soit, on l'a définie à On, comme ça tous les messages seront affichés, ça aidera alors à corriger son code Pour le site sur son hébergeur (en production), on la définie à Off, aucun message affichés, mais ils seront dans un fichiers log dispo. Certes, cette manière ci-dessus reste basique, mais ça reste néanmoins un bon début à mon sens.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
00
|
|
|
#6 | |
|
Membre régulier
![]() Inscription : novembre 2008 Messages : 108 ![]() |
bonjour,
Citation:
enfin il serait bon que l'on finissent par déprécié ce genre de commandes nœud nœud qui viennent d'un autre temps bon courage |
|
|
|
02
|
|
|
#7 |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
on va pas mettre des exceptions partout, la seul vrai solution c'est de tester si le fichier existe ou pas, tu vas en faire quoi ton exception après ? un exit avec le message d'erreur ? si c'est ça c'est ridicule, si c'est pour autre chose de toute façon les log sont la pour ça donc c'est ridicule aussi.
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#8 | |
|
Membre régulier
![]() Inscription : novembre 2008 Messages : 108 ![]() |
Citation:
Le contexte que je soulève est uniquement pour mettre évidence une autre façon de faire et de façon global. |
|
|
|
00
|
|
|
#9 |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
je vois toujours pas l’intérêt et l'avantage de cette façon dans ce contexte...
__________________
http://blog.stealth35.com/ |
|
|
01
|
|
|
#10 | |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 709 ![]() |
Citation:
Le code de Bastountan est totalement procédural alors que les Exceptions c'est Objet. Pour ma part, c'est tout sauf simple de mettre en place une gestion des erreurs et d'exceptions, ça réclame de maitriser la POO justement. C'est comme vouloir faire le grand écart du jour au lendemain sans même l'avoir fait 1 fois.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
|
01
|
|
|
#11 | |
|
Membre régulier
![]() Inscription : novembre 2008 Messages : 108 ![]() |
Citation:
Même avec du procédurale rien ne t’empêche dans une fonction pour ce genre de manipulation de levée une exception de la non existence ou la non lecture du fichier. Et de traiter ton erreur dans ton traitement plus général. J'ai exposé une idée qui me parait répondre a un besoin, qui permet de ce décharger d'une multitudes de manipulations diverses (consultation de log, refouille du code, et avec le temps une assiette de spaghettis sans la tomate, ...). bonne journée a tous |
|
|
|
00
|
|
|
#12 | |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 709 ![]() |
Citation:
Quand on lève une Exception, il faut faire appel à un Objet non ? De même que dans un block try/catch, on tente justement d'attraper l'erreur d'exception déclenchée auparavant, et là encore c'est un Objet qu'on obtient. On est donc toujours dans un contexte Objet, et si la personne ne maitrise pas la POO, ça va pas être simple. On peut toujours utiliser une fonction comme trigger_error() pour lancer ses propres erreurs, mais ce n'est en rien des Exceptions, c'est des erreurs tout court. Tout ce ci n'est pas juste pour contredire, mais il me semble qu'il est bon de proposer des solutions qui seraient en phases. Là, passer du or die au try/catch, c'est un grand écart, c'est tout sauf simple à mon sens.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
|
01
|
|
|
#13 |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
en quoi un try...catch annule la consultation des log et la refouille du code ? je voudrais bien un exemple de cette "simplification"
__________________
http://blog.stealth35.com/ |
|
|
01
|
|
|
#14 |
|
Membre éprouvé
![]() Guillaume Développeur Web Inscription : décembre 2007 Messages : 353 ![]() |
Sujet résolu?
file_exists().
__________________
Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi. - Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre
|
|
01
|
|
|
#15 |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
dans le fond c'est plus judicieux de faire un is_readable, puisque que le fichier peut exister mais çà lecture peut etre non autorisé
__________________
http://blog.stealth35.com/ |
|
|
01
|
|
|
#16 |
|
Membre éprouvé
![]() Guillaume Développeur Web Inscription : décembre 2007 Messages : 353 ![]() |
Je plussoie.
__________________
Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi. - Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre
|
|
01
|
Copyright © 2000-2012 - www.developpez.com