Réécriture d'URL : Apache vs PHP.

ViPHP
ViPHP | 4674 Messages

18 mars 2008, 12:56

Bonjour :).

Je me pose une question fondamentale. En effet, ça fait déjà plusieurs jours que je me pète la tronche sur une réécriture d'URL (Sékil en sait quelque chose), et je me pose alors une drôle de question : est-il plus rapide d'utiliser le mode de réécriture d'Apache (mod_rewrite et .htaccess par exemple), ou tout balancer derrière index.php et réécrire avec PHP ?

J'entends par « balancer derrière index.php » faire ceci :

Code : Tout sélectionner

RewriteEngine on RewriteCond %{SCRIPT-FILENAME} !-f RewriteCond %{SCRIPT-FILENAME} !-d RewriteRule ^(.*)$ index.php/$1
ou un truc du genre, semblable.

Je me pose des questions de performances car l'énergie déployée pour écrire une règle ... polymorphe (le terme n'est pas bon) est considérable. Alors que si on utilisait PHP avec un bon routeur (que je m'empresserais de programmer) on pourrait arriver à une utilisation plus simple. Mais comme le mod_rewrite est écrit en C, et que le routeur perso serait en PHP (sûrement avec expressions régulières, donc Perl etc.), quel serait le plus rapide ? Le moins lourd (en mémoire ) ? Etc. ?
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

ViPHP
ViPHP | 5924 Messages

18 mars 2008, 14:05

J'aurais tendance à dire presque instantannément que apache serait un peu plus performant, j'ai tendance à pensé que le mod_rewrite est pas mal optimisé.
Après, ce qui est certain, c'est que les ressources nécessaires seront dans tous les cas ridicules…

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 mars 2008, 15:05

Même avis que Sekiltoyai.

Je pense qu'un module développé en C, pour cette tache précise sera plus performant qu'un code PHP partant de 0.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 3300 Messages

18 mars 2008, 15:42

même avis, avec quand même une préférence pour la méthodologie on renvoit tout sur un index.php (front controller powa?) :)
Fait du php depuis que ca existe ou presque :)

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

18 mars 2008, 17:06

La seule façon de répondre serait de faire un benchmark, en plus ça tombe bien on peut faire un benchmark synthétique pour ce genre de questions (pas la peine de simuler un truc réaliste).

Deux aspects qui n'ont pas été évoqués :
  • si une règle unique permet de se passer de .htaccess et mettre AllowOverride sur None, le gain de performance peut être important
  • si les règles de mod_rewrite permettent d'utiliser des fichiers statiques plutôt qu'un script, là encore les performances peuvent être meilleures
Fais un bench, et en cas d'égalité utilise le plus pratique ! (un indice : c'est celui qui ne fait pas planter toutes tes pages avec une erreur 500 quand tu te gourres :lol:)

ViPHP
ViPHP | 4674 Messages

18 mars 2008, 18:35

Bien ça me conforte dans mes positions tout ça.

@Sékil : même avis que toi.

@*zeus : &Sékil (oui, je sors de cours d'Algo).

@Nagol : oui Hoa_Controller_Front powa ;-). En fait, mon routeur n'est pas ultra développé par rapport à celui de ZF par exemple. Je travaille sur une réécriture qui pourrait résoudre beaucoup de problèmes et je la proposerais en alternative. Je préfère proposer des réécritures plutôt que de forcer les utilisateurs à utiliser un routeur PHP. Donc pour me conforter dans cette idée, je peux faire jouer la carte de la ressource ;-).
Je ne dis pas que le routeur de Hoa est pauvre. Il est largement suffisant, mais si y a des mecs tordus, il faut pouvoir parer à toutes éventualités :).

@Hubert Roksor : Tes remarques sont très justes, et je n'y avais pas penser. Pour le Bench, ça attendra, j'ai vraiment pas le temps :roll:.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

18 mars 2008, 23:17

C'est trivial que mod_rewrite sera plus performant que de tout gérer avec un front controller.
Pour le routeur, regarde du côté de symfony, le système de routage est une merveille.