Optimisation de sites php mysql

Optimisation de site php mysql

D’une manière générale, le php est rapide a exécuter, mais les connexions entre les hôtes est lente.  0,1 s pour tout le script php par rapport à 0.2s par connexion avec mysql.

 

Mysql

  • mettre les valeurs à NOT NULL si on sait qu’elle vont l’être.. pas besoin de lire le bit pour savoir avant d’aller piocher la valeur.
  • utiliser char à la place de varchar. Char est moins gourmand en CPU car il n’a pas besoin de calculer la taille du champ pour aller au suivant. On fait donc le choix que le coût CPU est plus important que le coût mémoire. Car avec varchar on économise un petit peu de mémoire. Si un champ d’une table est variable, toute la table l’est !!  Un champ text est un champ variable !
  • mettre des index sur les champs utilisés fréquemment pour des recherches. C’est très bien en lecture, mais éviter de mettre des index sur des champs qui doivent être écrit souvent. C’est très lent.
  • éviter select * être plus précis.
  • utiliser limit 1 si l’on est certain d’avoir besoin que d’un enregistrement. Ainsi Mysql stop la recherche et ne va pas tenter de trier les données.. Genre le break.
  • utiliser des nombres plutôt que des string pour faire les jointures !  Comparer des nombres en en gros 2 fois plus rapide que de comparer une chaîne de 3 caractères !  après c’est encore pire.

PHP

  • éviter la fonction in_array() remplacer par un isset() sur les clés d’un tableau. Pour mettre les valeurs d’un tableau dans des clés utiliser array_ fill_ keys. Les clés d’un tableau sont des tables de hachage donc très rapide.
  • ne pas utiliser require_once();  require() ou include() sont beaucoup plus rapide.
  • utiliser la pré-incrémentation plutôt que la post incrémentation. ++$i est 10% plus rapide que $i++. Zend optimizer le fait pour nous!
  • utiliser les multiples paramètre de echo pour faire des concaténations. echo « toto », Mafonction(), »bleu », getTotot()  est mieux que d’utiliser l’opérateur de concaténation . qui va lui générer plein d’objet temporaire.
  • mettre en cache les variables dans un tableau. Sur une boucle de 10millions d’itérations on gagne 15% de temps CPU. $tableau[‘variable’] oblige php à rechercher la valeur dans le tableau et cette recherche bouffe du temps. Mais c’est tout de même peu.
  • compression ob_gzhandler … gain de 33% de donnée à transferrer.

 

Mythe php

  • écrire  ‘toto’ ou « toto » ne change pas grand chose en performance c’est de l’ordre de 0,01% Donc négligeable !

 

Apache

  • ne pas utiliser mod access.. donc pas de htaccess.. car il va chercher dans tous le dossier jusqu’au parent qui contient un htaccess. (ou limiter le nombre de niveau de hiérarchie)

Maintenance.

  • OPTIMIZE TABLE table   défragmenter de temps en temps les tables.

à creuser..

  • select in est très rapide ?
  • table temporaire plutôt que script php

Référence

Cartographiez votre région

Cartographie libre

La cartographie sur internet est à la mode depuis que google l’a démocratisée avec google maps.

Cependant, en suisse, les cartes de swisstopo sont nettement mieux, mais il n’existe pas de site web pratique pour utiliser ces cartes.

L’Etat de neuchâtel, par exemple, propose des cartes de swisstopo sur son guichet cartographique. C’est bien mais pas top. Les données sont bien, mais techniquement, Cartoweb (qui est le moteur utilisé pour afficher les cartes sur le web ) se fait vieux!

Un jour peut être l’Etat de neuchâtel migrera son guichet cartographique de Cartoweb à mapfish son successeur… Là ce sera plus fluide, mais ça ne résoudra pas un autre problème frustrant. Les données des cartes ne sont pas libre de droit.

Dans ce cas, l’Etat de neuchâtel achète les données chez swisstopo et n’a presque rien le droit de faire avec!

Les mises à jour chez swisstopo se font tous les 6 ans! Les cartes google sont imprécises, et la route devant chez moi vient de changer, 2 giratoires ont remplacé un pont !!

Les cartes se mettent gentiment à jour, mais tout se passe lentement…. bon que faire, c’est pas compliqué, laissez moi triturer vos cartes, c’est pas compliqué de remplacer un pont par 2 giratoires… le boulot en vrai a été fait plus rapidement que de changer le dessin sur la carte !

C’est une intention très louable que j’ai de vouloir les aider… mais ce n’est pas comme ça que ça se passe…. il y a le droit d’auteur.. pas le droit de modifier la carte. Elle est la propriété de swisstopo.

Bon, alors je fais quoi ?? .. et bien je crée ma propre carte ! Folie ? … comment faire autant bien que cette grosse machine swisstopo qui a de nombreux employés, qui est financé par nos impôts et par les données que l’on achète quand on veut les utiliser!

… et bien ce n’est pas si fou que ça de faire sa propre carte. Ce n’est pas si difficile, et pour contrer la grosse machine de cartographes professionnels, le plus simple c’est de s’associer avec d’autres gens… plus on est de fous plus on rit.. en mutualisant nos effort à travers le monde entier, on peut créer une carte du monde entier. Avec énormément de gens, qui font peu de chose on fait toujours plus qu’une poignée de gens qui font beaucoup !

C’est le principe de openstreetmap.org. C’est l’application du principe du wiki à la cartographie. Chaque personne contribue en dessinant sa région et au final on a une carte de plus en plus étendue et précise !

Pour ce faire, juridiquement toutes les données utilisées pour faire les cartes sont libres de droits. Il n’est donc pas possible de reprendre les données de swisstopo qui sont soumise au droit d’auteur. Dommage, ce serait bien de mettre ces données dans le domaine public ! Comme c’est le cas aux USA ! Ce serait profitable à tous.. et de toute façon ce sont quand même nos impôts qui financent une partie de swisstopo !

Vu que les données ne sont pas libres, on est obligé de tout reprendre à zéro. Il faut faire des mesures. Le principe est donc d’utiliser un récepteur GPS, de faire des traces des rues que l’on parcours, de les envoyer sur openstreetmap.org, puis à partir de ces traces de dessiner concrètement la carte.

C’est pas mal de boulot, mais finalement c’est pas si long que ça. Ci-dessous voici le résultat de la carte qui est en cours de création.

J’ai centré la carte sur la région de Neuchâtel qui est pour une bonne partie le fruit de mon travail. J’espère maintenant que je serais rejoint par de nombreuses autres personnes pour corriger mes erreurs et améliorer l’étendue et la précision de la carte !

Ce n’est pas compliqué, pour bien débuter le wiki d’openstreetmap.org est super bien fait et il y a de nombreuses indications en français !

Alors c’est parti cartographions ensemble !

… et pour varier, l’hiver au lieu de cartographier les rues, il est possible de cartographier les pistes de ski !!! Pour c’est faire c’est sur openpistemap.org que ça se passe !! Ce sont les mêmes données de bases qu’openstreetmap.org, mais le site est dédié aux pistes de ski !

Les heureux possesseurs d’un GPS garmin qui veulent utiliser les données d’openstreetmap.org sur leur bête peuvent trouver les données déjà toutes prêtes à l’emploi sur le site de http://www.osm4you.com.

Posts navigation

1 2 3 4 5 6 7
Scroll to top