#NXWTECH6 - 15 mai 2013 - Normandie Web Xperts
Performance WEB
DAEMONS
en PHP
Olivier Martineau
SpreadButton
QU’EST-CE ? Le diable ?
Un programme
En arrière plan
Qui effectue différentes tâches
#NXWTECH6 - 15 mai 2013 - Normandie W...
POURQUOI ? Mais oui, pourquoi ?
- tâches trop longues
- exports/imports de fichiers
- calcul de statistiques
- envoi d’emai...
(mauvaises) ALTERNATIVES
- CRON
- Ajax
#NXWTECH6 - 15 mai 2013 - Normandie Web Xperts
COMMENT ? Grand principe
#!/usr/bin/env php
<?php
# uniquement en mode ligne de commande
if( !defined('STDIN') ) {
	

 die ...
COMMENT ? En détail
$start_time = time();
while (true) {
// indentifiant d'activité
$faitquelquechose = false;
$return = $m...
LANCEMENT
A la main, le ligne de commande :
# /usr/bin/php daemon.php
#NXWTECH6 - 15 mai 2013 - Normandie Web Xperts
LANCEMENT
En automatique, avec UPSTART :
# vi /etc/init/phpdaemon.php
start on (net-device-up and local-filesystems and run...
CHEZ NOUS ?
21 tâches :
- créations des abonnements / facturations / paiement
- gestion des emailings
- gestion des activa...
EVOLUTION TECHNO
File d’attente :
Avant : chaque tâche teste à chaque fois s’il y a du boulot
Après : mise en file d’attent...
Go
Les daemons,
c’est bien,
manger en !
#NXWTECH6 - 15 mai 2013 - Normandie Web Xperts
Prochain SlideShare
Chargement dans…5
×

#nwxtech6 Olivier Martineau - Les démons en PHP

590 vues

Publié le

Certaines tâches prennent trop de temps pour être réalisées de façon interactive par le serveur web. Typiquement, tous les programmes de génération d’imports/exports, d’envois d’email... Mais dans certains cas, il peut aussi être intéressant de rendre la main à l’internaute plus rapidement.

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
590
Sur SlideShare
0
Issues des intégrations
0
Intégrations
12
Actions
Partages
0
Téléchargements
2
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

#nwxtech6 Olivier Martineau - Les démons en PHP

  1. 1. #NXWTECH6 - 15 mai 2013 - Normandie Web Xperts Performance WEB DAEMONS en PHP Olivier Martineau SpreadButton
  2. 2. QU’EST-CE ? Le diable ? Un programme En arrière plan Qui effectue différentes tâches #NXWTECH6 - 15 mai 2013 - Normandie Web Xperts
  3. 3. POURQUOI ? Mais oui, pourquoi ? - tâches trop longues - exports/imports de fichiers - calcul de statistiques - envoi d’emailing - tâches pas utiles immédiatement - log / trace - API - tâches non interactives - activation / désactivation horaire #NXWTECH6 - 15 mai 2013 - Normandie Web Xperts
  4. 4. (mauvaises) ALTERNATIVES - CRON - Ajax #NXWTECH6 - 15 mai 2013 - Normandie Web Xperts
  5. 5. COMMENT ? Grand principe #!/usr/bin/env php <?php # uniquement en mode ligne de commande if( !defined('STDIN') ) { die ("Only from command line, note web"); } ini_set ('max_execution_time', 0); // Temps maximum d'exécution illimité while (true) { # au boulot, sans d’arrêter } #NXWTECH6 - 15 mai 2013 - Normandie Web Xperts
  6. 6. COMMENT ? En détail $start_time = time(); while (true) { // indentifiant d'activité $faitquelquechose = false; $return = $ma_fonction_daemon(); if ($return) { $faitquelquechose = true; } if ((time() - $start_time) > 60*30) { // On tue le daemon toutes les 30 minutes exit(0); // a la fin du temps on le ferme } if (!$faitquelquechose) { // repos du démon sleep(10); // On n'a rien fait, probablement il n'y aura rien d'autre à faire prochainement : on économise le serveur } } #NXWTECH6 - 15 mai 2013 - Normandie Web Xperts
  7. 7. LANCEMENT A la main, le ligne de commande : # /usr/bin/php daemon.php #NXWTECH6 - 15 mai 2013 - Normandie Web Xperts
  8. 8. LANCEMENT En automatique, avec UPSTART : # vi /etc/init/phpdaemon.php start on (net-device-up and local-filesystems and runlevel [2345]) stop on runlevel [016] respawn # redémarrage automatique env HOME=/var/www/daemonhome umask 007 kill timeout 300 pre-start script end script exec nice -n 10 su www-data -c '/usr/bin/php /var/www/daemonhome/ daemon.php' post-start script exit 1 end script # service start phpdaemon #NXWTECH6 - 15 mai 2013 - Normandie Web Xperts
  9. 9. CHEZ NOUS ? 21 tâches : - créations des abonnements / facturations / paiement - gestion des emailings - gestion des activations / désactivations des campagnes - aspirations des profils Facebook - statistiques - segmentations - création d’un cache - imports #NXWTECH6 - 15 mai 2013 - Normandie Web Xperts
  10. 10. EVOLUTION TECHNO File d’attente : Avant : chaque tâche teste à chaque fois s’il y a du boulot Après : mise en file d’attente et traitée au fur et à mesure Bénéfices : de requêtes SQL, meilleure gestion des priorités Parallélisation : Répartition des tâches, sur plusieurs daemons, sur plusieurs serveurs. Lancement dynamique en fonction du besoin. #NXWTECH6 - 15 mai 2013 - Normandie Web Xperts
  11. 11. Go Les daemons, c’est bien, manger en ! #NXWTECH6 - 15 mai 2013 - Normandie Web Xperts

×