SlideShare una empresa de Scribd logo
1 de 11
Descargar para leer sin conexión
#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 Web Xperts
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
(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 ("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
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
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 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
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
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
Go
Les daemons,
c’est bien,
manger en !
#NXWTECH6 - 15 mai 2013 - Normandie Web Xperts

Más contenido relacionado

Destacado

Programmation événementielle avec Windev
Programmation événementielle avec WindevProgrammation événementielle avec Windev
Programmation événementielle avec WindevGuillaume Cabanac
 
08 les-inventions-les-plus-folles-pour-la-maison
08 les-inventions-les-plus-folles-pour-la-maison08 les-inventions-les-plus-folles-pour-la-maison
08 les-inventions-les-plus-folles-pour-la-maisonDominique Pongi
 
Une belle histoire_finalement1
Une belle histoire_finalement1Une belle histoire_finalement1
Une belle histoire_finalement1Dominique Pongi
 
Cours sécurité maintenance mécanique
Cours sécurité maintenance mécanique Cours sécurité maintenance mécanique
Cours sécurité maintenance mécanique VILLATTE
 
DIAPORAMA FLASHCODE
DIAPORAMA FLASHCODEDIAPORAMA FLASHCODE
DIAPORAMA FLASHCODEJulie Mgnt
 
08 la-vieille-dame-qui-habite-derriere-le-stade-de-france
08 la-vieille-dame-qui-habite-derriere-le-stade-de-france08 la-vieille-dame-qui-habite-derriere-le-stade-de-france
08 la-vieille-dame-qui-habite-derriere-le-stade-de-franceDominique Pongi
 
France 5.irene et alicia
France 5.irene et aliciaFrance 5.irene et alicia
France 5.irene et aliciaanaisruiz
 
La vie tumultueuse_d_edith_piaf
La vie tumultueuse_d_edith_piafLa vie tumultueuse_d_edith_piaf
La vie tumultueuse_d_edith_piafDominique Pongi
 
le Chãteau par Ana Daniela e Mariana
le Chãteau par Ana Daniela e Marianale Chãteau par Ana Daniela e Mariana
le Chãteau par Ana Daniela e MarianaMaria Olinda Reis
 
Smo Manuel Roulaud Aveclogo 20110821
Smo Manuel Roulaud Aveclogo 20110821Smo Manuel Roulaud Aveclogo 20110821
Smo Manuel Roulaud Aveclogo 20110821ROULAUD
 
07 l'hiver-en-russie-c'est-autre-chose-que-10cm-de-neige-a-paris
07 l'hiver-en-russie-c'est-autre-chose-que-10cm-de-neige-a-paris07 l'hiver-en-russie-c'est-autre-chose-que-10cm-de-neige-a-paris
07 l'hiver-en-russie-c'est-autre-chose-que-10cm-de-neige-a-parisDominique Pongi
 

Destacado (20)

Programmation événementielle avec Windev
Programmation événementielle avec WindevProgrammation événementielle avec Windev
Programmation événementielle avec Windev
 
Resumer sur les tris
Resumer sur les trisResumer sur les tris
Resumer sur les tris
 
PHP &amp; MySQL
PHP &amp; MySQLPHP &amp; MySQL
PHP &amp; MySQL
 
33% & more, 3 q 2012 results
33% & more, 3 q 2012 results33% & more, 3 q 2012 results
33% & more, 3 q 2012 results
 
08 les-inventions-les-plus-folles-pour-la-maison
08 les-inventions-les-plus-folles-pour-la-maison08 les-inventions-les-plus-folles-pour-la-maison
08 les-inventions-les-plus-folles-pour-la-maison
 
Une belle histoire_finalement1
Une belle histoire_finalement1Une belle histoire_finalement1
Une belle histoire_finalement1
 
Cours sécurité maintenance mécanique
Cours sécurité maintenance mécanique Cours sécurité maintenance mécanique
Cours sécurité maintenance mécanique
 
DIAPORAMA FLASHCODE
DIAPORAMA FLASHCODEDIAPORAMA FLASHCODE
DIAPORAMA FLASHCODE
 
08 la-vieille-dame-qui-habite-derriere-le-stade-de-france
08 la-vieille-dame-qui-habite-derriere-le-stade-de-france08 la-vieille-dame-qui-habite-derriere-le-stade-de-france
08 la-vieille-dame-qui-habite-derriere-le-stade-de-france
 
Sculptures des arbres
Sculptures des arbresSculptures des arbres
Sculptures des arbres
 
Journal d' un_chien_
Journal d' un_chien_Journal d' un_chien_
Journal d' un_chien_
 
Concours photo ng
Concours photo ngConcours photo ng
Concours photo ng
 
Tp îles féroé
Tp îles féroéTp îles féroé
Tp îles féroé
 
France 5.irene et alicia
France 5.irene et aliciaFrance 5.irene et alicia
France 5.irene et alicia
 
La vie tumultueuse_d_edith_piaf
La vie tumultueuse_d_edith_piafLa vie tumultueuse_d_edith_piaf
La vie tumultueuse_d_edith_piaf
 
le Chãteau par Ana Daniela e Mariana
le Chãteau par Ana Daniela e Marianale Chãteau par Ana Daniela e Mariana
le Chãteau par Ana Daniela e Mariana
 
Smo Manuel Roulaud Aveclogo 20110821
Smo Manuel Roulaud Aveclogo 20110821Smo Manuel Roulaud Aveclogo 20110821
Smo Manuel Roulaud Aveclogo 20110821
 
07 l'hiver-en-russie-c'est-autre-chose-que-10cm-de-neige-a-paris
07 l'hiver-en-russie-c'est-autre-chose-que-10cm-de-neige-a-paris07 l'hiver-en-russie-c'est-autre-chose-que-10cm-de-neige-a-paris
07 l'hiver-en-russie-c'est-autre-chose-que-10cm-de-neige-a-paris
 
Vieux coq
Vieux coqVieux coq
Vieux coq
 
Epouser un politique
Epouser un politiqueEpouser un politique
Epouser un politique
 

Similar a #nwxtech6 Olivier Martineau - Les démons en PHP

Presentation de nagios mohamed bouhamed
Presentation de nagios mohamed bouhamedPresentation de nagios mohamed bouhamed
Presentation de nagios mohamed bouhamedTECOS
 
ASP.NET MVC 6
ASP.NET MVC 6ASP.NET MVC 6
ASP.NET MVC 6Microsoft
 
Meetup angular rshop
Meetup angular rshopMeetup angular rshop
Meetup angular rshopCyril Balit
 
Le service workers
Le service workersLe service workers
Le service workersneuros
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetDevclic
 
Liste des nouvelles acquisitions 2013
Liste des nouvelles acquisitions 2013Liste des nouvelles acquisitions 2013
Liste des nouvelles acquisitions 2013CNI Tunisia
 
Integrons en mode continu
Integrons en mode continuIntegrons en mode continu
Integrons en mode continuneuros
 
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...Microsoft
 
Grunt, Bower, Yeoman ou comment automatiser un projet web SPA
Grunt, Bower, Yeoman ou comment automatiser un projet web SPAGrunt, Bower, Yeoman ou comment automatiser un projet web SPA
Grunt, Bower, Yeoman ou comment automatiser un projet web SPATouchify
 
NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...
NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...
NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...Ayoub Rouzi
 
Gestion des LOGS savec syslog+loganalyzer
Gestion des LOGS savec syslog+loganalyzerGestion des LOGS savec syslog+loganalyzer
Gestion des LOGS savec syslog+loganalyzerMohamet Lamine DIOP
 
Premier pas de web scrapping avec R
Premier pas de  web scrapping avec RPremier pas de  web scrapping avec R
Premier pas de web scrapping avec RCdiscount
 
Comment intégrer votre Surface Pro 3 dans votre réseau d’entreprise ?
Comment intégrer votre Surface Pro 3 dans votre réseau d’entreprise ?Comment intégrer votre Surface Pro 3 dans votre réseau d’entreprise ?
Comment intégrer votre Surface Pro 3 dans votre réseau d’entreprise ?Microsoft Décideurs IT
 
Comment intégrer votre Surface Pro 3 dans votre réseau d’entreprise ?
Comment intégrer votre Surface Pro 3 dans votre réseau d’entreprise ?Comment intégrer votre Surface Pro 3 dans votre réseau d’entreprise ?
Comment intégrer votre Surface Pro 3 dans votre réseau d’entreprise ?Microsoft Technet France
 
L'open source dans les nouvelles architectures web
L'open source dans les nouvelles architectures webL'open source dans les nouvelles architectures web
L'open source dans les nouvelles architectures webChristophe Villeneuve
 
Les méthodes agiles dans TFS
Les méthodes agiles dans TFSLes méthodes agiles dans TFS
Les méthodes agiles dans TFSDenis Voituron
 

Similar a #nwxtech6 Olivier Martineau - Les démons en PHP (20)

Presentation de nagios mohamed bouhamed
Presentation de nagios mohamed bouhamedPresentation de nagios mohamed bouhamed
Presentation de nagios mohamed bouhamed
 
ASP.NET MVC 6
ASP.NET MVC 6ASP.NET MVC 6
ASP.NET MVC 6
 
Meetup angular rshop
Meetup angular rshopMeetup angular rshop
Meetup angular rshop
 
Le service workers
Le service workersLe service workers
Le service workers
 
Openerp
OpenerpOpenerp
Openerp
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internet
 
Liste des nouvelles acquisitions 2013
Liste des nouvelles acquisitions 2013Liste des nouvelles acquisitions 2013
Liste des nouvelles acquisitions 2013
 
Integrons en mode continu
Integrons en mode continuIntegrons en mode continu
Integrons en mode continu
 
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
 
Grunt, Bower, Yeoman ou comment automatiser un projet web SPA
Grunt, Bower, Yeoman ou comment automatiser un projet web SPAGrunt, Bower, Yeoman ou comment automatiser un projet web SPA
Grunt, Bower, Yeoman ou comment automatiser un projet web SPA
 
Retour d'expérience sur PowerShell
Retour d'expérience sur PowerShellRetour d'expérience sur PowerShell
Retour d'expérience sur PowerShell
 
Meetup angular rshop
Meetup angular rshopMeetup angular rshop
Meetup angular rshop
 
NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...
NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...
NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...
 
Gestion des LOGS savec syslog+loganalyzer
Gestion des LOGS savec syslog+loganalyzerGestion des LOGS savec syslog+loganalyzer
Gestion des LOGS savec syslog+loganalyzer
 
Premier pas de web scrapping avec R
Premier pas de  web scrapping avec RPremier pas de  web scrapping avec R
Premier pas de web scrapping avec R
 
Comment intégrer votre Surface Pro 3 dans votre réseau d’entreprise ?
Comment intégrer votre Surface Pro 3 dans votre réseau d’entreprise ?Comment intégrer votre Surface Pro 3 dans votre réseau d’entreprise ?
Comment intégrer votre Surface Pro 3 dans votre réseau d’entreprise ?
 
Comment intégrer votre Surface Pro 3 dans votre réseau d’entreprise ?
Comment intégrer votre Surface Pro 3 dans votre réseau d’entreprise ?Comment intégrer votre Surface Pro 3 dans votre réseau d’entreprise ?
Comment intégrer votre Surface Pro 3 dans votre réseau d’entreprise ?
 
L'open source dans les nouvelles architectures web
L'open source dans les nouvelles architectures webL'open source dans les nouvelles architectures web
L'open source dans les nouvelles architectures web
 
Les méthodes agiles dans TFS
Les méthodes agiles dans TFSLes méthodes agiles dans TFS
Les méthodes agiles dans TFS
 
Ocs
OcsOcs
Ocs
 

Más de Normandie Web Xperts

#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...
#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...
#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...Normandie Web Xperts
 
#nwxtech7 Grégory Le Garec - HTML5 Offline
#nwxtech7 Grégory Le Garec - HTML5 Offline#nwxtech7 Grégory Le Garec - HTML5 Offline
#nwxtech7 Grégory Le Garec - HTML5 OfflineNormandie Web Xperts
 
#nwxtech6 Mickaël Deffontaine - Drupal API Form
#nwxtech6 Mickaël Deffontaine - Drupal API Form#nwxtech6 Mickaël Deffontaine - Drupal API Form
#nwxtech6 Mickaël Deffontaine - Drupal API FormNormandie Web Xperts
 
#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le web#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le webNormandie Web Xperts
 
#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le web#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le webNormandie Web Xperts
 
Julien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwd
Julien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwdJulien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwd
Julien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwdNormandie Web Xperts
 
Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...
Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...
Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...Normandie Web Xperts
 
Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3
Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3
Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3Normandie Web Xperts
 
Conférence #nwx2014 - Nicolas Saillard - Agilité en SSII
Conférence #nwx2014 - Nicolas Saillard - Agilité en SSIIConférence #nwx2014 - Nicolas Saillard - Agilité en SSII
Conférence #nwx2014 - Nicolas Saillard - Agilité en SSIINormandie Web Xperts
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Normandie Web Xperts
 
Conférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tous
Conférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tousConférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tous
Conférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tousNormandie Web Xperts
 
Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web
Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur webConférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web
Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur webNormandie Web Xperts
 
Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...
Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...
Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...Normandie Web Xperts
 
Conférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercier
Conférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercierConférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercier
Conférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercierNormandie Web Xperts
 
Conférence #nwxtech5 : Drupal et OpenLayers par Frédéric Bisson
Conférence #nwxtech5 : Drupal et OpenLayers par Frédéric BissonConférence #nwxtech5 : Drupal et OpenLayers par Frédéric Bisson
Conférence #nwxtech5 : Drupal et OpenLayers par Frédéric BissonNormandie Web Xperts
 
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...Normandie Web Xperts
 
Conférence #nwxtech5 : Introduction à Backbone.js par Hugo Larcher
Conférence #nwxtech5 : Introduction à Backbone.js par Hugo LarcherConférence #nwxtech5 : Introduction à Backbone.js par Hugo Larcher
Conférence #nwxtech5 : Introduction à Backbone.js par Hugo LarcherNormandie Web Xperts
 
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain Louvet
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain LouvetConférence #nwxtech5 : Selenium WebDriver 2 par Romain Louvet
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain LouvetNormandie Web Xperts
 
Conférence #nwxtech4 : Responsive Web Design et Préprocesseurs CSS par Benjam...
Conférence #nwxtech4 : Responsive Web Design et Préprocesseurs CSS par Benjam...Conférence #nwxtech4 : Responsive Web Design et Préprocesseurs CSS par Benjam...
Conférence #nwxtech4 : Responsive Web Design et Préprocesseurs CSS par Benjam...Normandie Web Xperts
 

Más de Normandie Web Xperts (20)

#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...
#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...
#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...
 
#nwxtech7 Grégory Le Garec - HTML5 Offline
#nwxtech7 Grégory Le Garec - HTML5 Offline#nwxtech7 Grégory Le Garec - HTML5 Offline
#nwxtech7 Grégory Le Garec - HTML5 Offline
 
#nwxtech6 Mickaël Deffontaine - Drupal API Form
#nwxtech6 Mickaël Deffontaine - Drupal API Form#nwxtech6 Mickaël Deffontaine - Drupal API Form
#nwxtech6 Mickaël Deffontaine - Drupal API Form
 
#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le web#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le web
 
#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le web#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le web
 
FlexRox
FlexRoxFlexRox
FlexRox
 
Julien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwd
Julien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwdJulien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwd
Julien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwd
 
Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...
Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...
Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...
 
Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3
Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3
Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3
 
Conférence #nwx2014 - Nicolas Saillard - Agilité en SSII
Conférence #nwx2014 - Nicolas Saillard - Agilité en SSIIConférence #nwx2014 - Nicolas Saillard - Agilité en SSII
Conférence #nwx2014 - Nicolas Saillard - Agilité en SSII
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
 
Conférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tous
Conférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tousConférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tous
Conférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tous
 
Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web
Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur webConférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web
Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web
 
Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...
Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...
Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...
 
Conférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercier
Conférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercierConférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercier
Conférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercier
 
Conférence #nwxtech5 : Drupal et OpenLayers par Frédéric Bisson
Conférence #nwxtech5 : Drupal et OpenLayers par Frédéric BissonConférence #nwxtech5 : Drupal et OpenLayers par Frédéric Bisson
Conférence #nwxtech5 : Drupal et OpenLayers par Frédéric Bisson
 
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
 
Conférence #nwxtech5 : Introduction à Backbone.js par Hugo Larcher
Conférence #nwxtech5 : Introduction à Backbone.js par Hugo LarcherConférence #nwxtech5 : Introduction à Backbone.js par Hugo Larcher
Conférence #nwxtech5 : Introduction à Backbone.js par Hugo Larcher
 
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain Louvet
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain LouvetConférence #nwxtech5 : Selenium WebDriver 2 par Romain Louvet
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain Louvet
 
Conférence #nwxtech4 : Responsive Web Design et Préprocesseurs CSS par Benjam...
Conférence #nwxtech4 : Responsive Web Design et Préprocesseurs CSS par Benjam...Conférence #nwxtech4 : Responsive Web Design et Préprocesseurs CSS par Benjam...
Conférence #nwxtech4 : Responsive Web Design et Préprocesseurs CSS par Benjam...
 

#nwxtech6 Olivier Martineau - Les démons en PHP

  • 1. #NXWTECH6 - 15 mai 2013 - Normandie Web Xperts Performance WEB DAEMONS en PHP Olivier Martineau SpreadButton
  • 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. 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. (mauvaises) ALTERNATIVES - CRON - Ajax #NXWTECH6 - 15 mai 2013 - Normandie Web Xperts
  • 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. 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. LANCEMENT A la main, le ligne de commande : # /usr/bin/php daemon.php #NXWTECH6 - 15 mai 2013 - Normandie Web Xperts
  • 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. 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. 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. Go Les daemons, c’est bien, manger en ! #NXWTECH6 - 15 mai 2013 - Normandie Web Xperts