Le sujet des batch (en php) est assez récurrent dans le développement applicatif. On a souvent besoin de faire des scripts d'import, au hasard d'un catalogue de produits, par exemple.
Dans cette article je reviens sur une maladresse souvent implémentée dans les batchs et qui a un impact négatif sur les perfs et l'utilisation de la mémoire vive : le chargement de l'ensemble des données et l'utilisation du for(each).
Analyse
Batch : Attention à la mémoire vive
Retour d'expérience sur les métriques qualité d'une application Symfony d'un de mes clients
En novembre dernier je suis intervenu chez un client pour améliorer les pratiques de développements sur une application basée sur Symfony.
A cette occasion j'ai réalisé un audit de l'application, voici quelques métriques à noter sur cette application (il ne s'agit ni d'une tendance ni d'une moyenne, je vous livre ici les métriques brutes pour que vous puissiez comparer).
La question est posée : "PHP : POO ou (exclusif) Procédural ?"
Un de mes clients se pose la question "PHP : Faire du POO ou du Procédural ?"
"Injectabilité / Mockabilité" : Un indicateur simple de la qualité de votre design de code
On parle souvent d'indicateur de qualité de code avec nombre de tests unitaires qui passent au vert, nombre d'erreurs détectées pour le non respect des standards, nombre de lignes de code...
Tous ces indicateurs donnent une information intéressante sur la qualité du code mais pas sur la qualité de l'architecture ou design du code, c'est à dire aucune évaluation de la conception de votre code.
Entreprises du CAC 40 : Quelles plateformes pour leur site internet ?
Voici un graphique de répartition des plateformes utilisées par les entreprises du CAC40 pour leur site internet
Commentaires récents
Je ne pensais pas qu'en 2009 on pouvait encore se poser cette question. La réponse est assez évidente il me semble.
Superbe analyse.
Voilà enfin les bonnes questions qui sont posées.
Pas la POO pour la POO. Autrement dit tous les Framework ne se valent pas selon mes besoins/projet/compétences/tps mise en oeuvre.
On peut facilement imaginer utiliser partiellement un framework pour la partie qui nous apporte réellement de la valeur ajoutée. Les modules trop lourds du framework (du point de vue projet) peuvent alors être remplacé par une méthodologie maison potentiellement avec une partie procédurale (pas de tabous) en plus de la POO bien sur inévitable.
Il faut donc privilégier les framework modulaires
Les bonnes questions sont posées.
Je développe plutôt en procédurale, mais depuis quelques temps je passe de plus en plus au POO. J'utilise un Framework POO : Kohana. (une base de Code Igniter, mais uniquement PHP 5 et Objet). Si on souhaite suivre l'évolution de PHP, resté en 100% procédurale revient a une limitation assès déconcertante.
Heu ... il manque un truc (d'après moi très très important..), à propos des performances?
Tous mes tests montrent bien que 100% procédure est presque 10fois plus rapide, moins de RAM... que la POO... Et en plus je trouve ça super con de finalement tendre vers la syntaxe Java alors que Php est la base un truc simple!
@Tom: Bien entendu tu as raison le sujet de la performance est un sujet important qui montre souvent des différences entre l'usage procédural et la programmation objet. Cependant, j'ai l'impression que c'est beaucoup plus lié aux pratiques qu'à la mécanique interne, personnellement j'ai déjà vu des applis procédurale moins véloce que des applis utilisant le paradigme objet, cela dépend plutôt de l'architecture du code et de la façon de le charger. Ce qui est sûr cependant c'est que la programmation objet impose de nombreux artefacts complémentaires pour maîtriser la performance : gestion de l'autoloading, mise en cache, singleton, découpage en couche...
@all: En complément, je pourrais donner un retour d'expérience personnel : je me sers souvent du procédural pour "introduire" PHP chez mes clients novices, grâce à sa simplicité (syntaxe, algorithmique) cela permet petit à petit au client de se faire la main, et j'introduit dans un second temps la programmation objet, quand cela devient possible.
Bonjour,
Pourriez-vous apporter des précisions sur la méthodologie pour obtenir ces métriques ?
En particulier les outils utilisés, si le code était homogène (par ex : positionnement des accolades)...
@Christophe: j'ai utilisé les outils habituels :PHPLoc, PHPCpd notamment, sans paramétrage particulier. En passant successivement ces outils sur certains répertoires du code (généré, développé, ....). Concernant l'homogénéité du code, je dirais qu'il s'agit d'un code "historique" (i.e. qui a évolué au cours du temps, de façon hétérogène en fonction des fichiers et des zones du code), c'est à dire quelque chose de "très" représentatif de mon point de vue dans un contexte d'entreprise ;)
Malheureusement, la POO n'est pas accessible à tous.
Moi le premier, je n'arrive pas à appréhender la POO alors que le procédural ne me pose pas de souci de compréhension.
Mais développer n'est pas mon métier, juste un petit hobby pour réaliser de petits sites :)
J'ai tendance à utiliser le langage python pour ce genre de scripts batch ou directement des programmes en C++, surtout si ceux-ci doivent être utilisés fréquemment (penser tâches cron) et que le volume de données traitées est important.
Cela n'est pas forcément justifié, mais j'ai du mal à faire "confiance" à php pour tout ce qui est scripts d'utilité.
A un moment je me suis dit que HipHop for PHP allait me permettre de coder en php ce genre de programmes "batch" tout en ayant les avantages du C++ au runtime. Mais la taille des binaires générés est bien trop importante (il y a également d'autres inconvénients). J'ai abandonné l'idée ;)
j'utilise ce système (ou des dérivés) depuis très très longtemps : http://www.glagla.org/weblog/2007/1...