1. PHP
Web Services
PHP et Web Services
11 février 2010 - Master CCI - Université de Tours
Guillaume Jarysta-Dautel - Devolia CEO
2. PHP
Web Services
Plan de la présentation 1/2
1. PHP : notions d’environnement
• Architecture CGI / CLI
• Cron
• Core et modules
• Interface Apache et mod Apache
• Interface OS
• Interface SGBD
• php.ini et .htaccess
2. PHP : notions d’architecture
• Repository, Dev et Prod
3. PHP : notions de génie logiciel
• Templating
• Modèles de données SQL
• Multilinguisme ETUDE DE CAS
• Modèle objet PHP5 • devolia.org
• Documentation • secure.devolia.com
• API interne / externe • rienamemettre.com
• Sécurité
3. PHP
Web Services
Plan de la présentation 2/2
4. Web Services : notions d’architecture
• XML-RPC, SOAP
• XML et JSON
• Architecture d’un listener
• Web Services asynchrones : ping et callback
• Sécurité d’un Web Service ETUDE DE CAS
• devolia.org
5. Web Services : notions de génie logiciel en PHP • secure.devolia.com
• Moteur de session • rienamemettre.com
• SimpleXML • geotwitt
• JSON
• Gestion des en-têtes
6. Web Services : architecture avancée
• Montée en version d’une API externe
• Gestion de la charge
5. PHP
Notions d’environnement
PHP - notions d’environnement
1. Architecture CLI / CGI
Système Serveur Module
d’exploitation Web CGI
- Linux - Apache - PHP
- Windows - Lighttpd - Perl
- FreeBSD - IIS - C
- ... - ... - ...
Sources
Module
CLI - PHP :
compilation à la
- PHP volée
- Perl
- C
- ...
Ressources
http://php.net/manual/fr/migration5.cli-cgi.php
6. PHP
Notions d’environnement
PHP - notions d’environnement
2. Cron
Système Cron Module
d’exploitation CLI
- Exécution
- Linux périodique - PHP
- Windows - Perl
- FreeBSD - C
- ... - ...
Sources
- PHP :
compilation à la
volée
Ressources
http://doc.ubuntu-fr.org/cron
7. PHP
Notions d’environnement
PHP - notions d’environnement
3. Core et modules
RESEAU CRYPTAGE SGBD GRAPHISME OUTILS COMPRES- BAS
SION NIVEAU
soap mcrypt mysql gd calendar
xmlrpc ... pdo jpeg mbstring zlib pcntl
openssl postgresql png ... ... ...
ftp ... pdf
curl ...
kerberos
...
Ressources
http://php.net/manual/fr/faq.installation.php
8. PHP
Notions d’environnement
PHP - notions d’environnement
4. Modules Apache
Apache Modules Module
CLI
- Linux mod_ssl
- Windows mod_rewrite - PHP
- FreeBSD mod_proxy - Perl
- ... ... - C
- ...
Sources
- PHP :
compilation à la
volée
Ressources
http://modules.apache.org/
9. PHP
Notions d’environnement
PHP - notions d’environnement
4. Modules Apache - exemple mod_rewrite
Requête
GET /romans/suskind/le_parfum.html
mod_rewrite
RewriteRule ^/([^/]+)/([^/]+)/([^.]+).html store.php?rayon=$1&auteur=$2&titre=$3
PHP - store.php
<h1>Bienvenue dans notre rayon <?php print($_REQUEST[‘rayon‘]); ?></h1>
<h2>Votre livre : <?php print($_REQUEST[‘titre‘]); ?> (<?php print($_REQUEST[‘auteur‘]); ?>)</h2>
10. PHP
Notions d’environnement
PHP - notions d’environnement
5. Interface OS
Exécution d’un programme serveur
$return=exec('ln -s /home/');
print($return);
pcntl
$pid = pcntl_fork();
if($pid == -1){ die('Cannot fork. Too bad, I wanna fork so bad !'); }
elseif($pid){
// le père
print('Je suis ton père ('.posix_getpid().'), Luke ('.$pid.') !'."rn");
}
else{
// le fils
print('Noooon ('.posix_getpid().') !'."rn");
}
Ressources
http://fr.php.net/manual/fr/book.exec.php
http://fr.php.net/manual/fr/book.pcntl.php
11. PHP
Notions d’environnement
PHP - notions d’environnement
6. Interface SGBD
Connexion à MySQL
$link=mysql_connect('localhost','login','password');
$db=mysql_select_db('database_name', $link);
Couche d’abstraction - PDO
$dbh = new PDO('odbc:sample', 'db2inst1', 'ibmdb2');
$count = $dbh->exec("DELETE FROM fruit WHERE couleur = 'rouge'");
print("Retourne le nombre de lignes effacées :n");
print("Effacement de $count lignes.n");
Ressources
http://fr.php.net/manual/fr/book.pdo.php
12. PHP
Notions d’environnement
PHP - notions d’environnement
7. php.ini et .htaccess
Lecture de la configuration PHP
phpinfo();
Droits limitatifs
AuthType Basic
AuthName "Password Required"
AuthUserFile /www/passwords/password.file
AuthGroupFile /www/passwords/group.file
Require Group admins
Ressources
http://fr.php.net/manual/fr/configuration.php
http://httpd.apache.org/docs/1.3/howto/htaccess.html
13. PHP
Notions d’architecture
PHP - notions d’architecture
1. Repository, dev et prod
dev prod
- Error on - Error silent
- Warning on - Warning silent
- Audit on - Audit off
- Debug on - Debug off
Développeurs
Repository
- Garant de
l’intégrité, de la
gestion des
versions, du
travail
collaboratif
14. PHP
Notions de génie logiciel
PHP - notions de génie logiciel
ETUDE DE CAS
• Templating
• Modèles de données SQL
• Multilinguisme
• Modèle objet PHP5
• Documentation
• API interne / externe
• Sécurité
15. Web Services
Notions d’architecture
Web Services
Usages
• Consommation d’un service tiers
• Consommation d’un service métier
• Consommation d’un service critique
• Consommation d’un service asynchrone
• Consommation d’un service en situation de mobilité
16. Web Services
Notions d’architecture
Web Services - notions d’architecture
1. XML-RPC, SOAP, Corba, IEC, WSDL, à façon... le choix de l’architecture
• Type de besoin : privé / public
• Besoin d’une vérification simplifiée de la cohérence du message
• Poids moyen des échanges
• Nature des consommateurs du service
• Besoin de certification
• Besoin en niveau d’abstraction : WSDL
• Interopérabilité des Web Services
Ressources
http://fr.wikipedia.org/wiki/SOAP
http://fr.wikipedia.org/wiki/XML-RPC
17. Web Services
Notions d’architecture
Web Services - notions d’architecture
2. XML et JSON
• Avantages de XML
• Interopérabilité
• Formalisme rigoureux
• Parseurs multilangages
• Explicitement UNICODE
• Inconvénients de XML
• Lourdeur des en-têtes
• Rigidité du formalisme
• Avantages de JSON
• Interprétation simple en Javascript
• Encodage / décodage intégrés à PHP 5
• Flexibilité de l’encodage
• Inconvénients de XML
• Parseurs généralement non-natifs
• Peu robuste
18. Web Services
Notions d’architecture
Web Services - notions d’architecture
ETUDE DE CAS
• Architecture d’un listener
• Web Services asynchrones : ping et callback
• Sécurité d’un Web Service
19. Web Services
Notions de génie logiciel
Web Services - notions de génie logiciel
ETUDE DE CAS
• Moteur de session
• SimpleXML
• JSON
• Gestion des en-têtes
20. Web Services
Architecture avancée
Web Services - Architecture avancée
• Montée en version d’une API externe
• Gestion de la charge
21. PHP
Web Services
Guillaume Jarysta-Dautel Devolia Europe
+33 (0) 683 658 342 21 boulevard de Sébastopol
guillaume@devolia.fr 75001 Paris - FRANCE
www.devolia.fr
www.jarysta.com
Devolia North America
1138 Broadway, Suite 706
New York, NY 10010 – USA
www.devolia.com
Notes de l'éditeur
CGI
- Ex&#xE9;cution avec les droits du serveur web
- Limitation des risques
CLI
- Ex&#xE9;cution avec des droits d&#xE9;finis
- Acc&#xE8;s &#xE0; des ressources sensibles
- Script shell
- Lien Cron
Cron
- Ex&#xE9;cution d&#x2019;un script CLI &#xE0; une p&#xE9;riodicit&#xE9; donn&#xE9;e
- Pas de m&#xE9;canisme de s&#xE9;maphore / jeton : &#xE0; coder en dur
- Acc&#xE8;s ressources d&#xE9;finies selon l&#x2019;utilisateur ex&#xE9;cutant la t&#xE2;che
Core :
- Syntaxe de base
- Basic I/O
Modules :
- Fonctionnalit&#xE9;s additionnelles
- Choisir ce dont on a besoin / taille du binaire / stabilit&#xE9; du binaire / s&#xE9;curit&#xE9; des modules
Pear :
- Modules compl&#xE9;mentaires
http://php.net/manual/fr/faq.installation.php
Modules Apache
- Ajoute des fonctionnalit&#xE9;s &#xE0; la couche serveur
- D&#xE9;tectable par PHP (headers) mais peuvent &#xEA;tre utilis&#xE9;s de mani&#xE8;re transparente
Mod_rewrite
- R&#xE9;-&#xE9;criture de la cha&#xEE;ne &#xE0; la vol&#xE9;e : SEO
http://modules.apache.org/
Mod_rewrite
- Application SEO
- Lisibilit&#xE9; et clart&#xE9; de l&#x2019;arborescence
- Facilit&#xE9; d&#x2019;architecture logique
Ex&#xE9;cution
- Synchrone : exec, passthru : ex&#xE9;cution d&#x2019;une t&#xE2;che donn&#xE9;e de courte dur&#xE9;e
- Asynchrone : pcntl : ex&#xE9;cution de t&#xE2;ches longues, possibilit&#xE9; de forker
BDD support&#xE9;es : MySQL, Oracle, MS SQL, Tokyo Cabinet / Tokyo Tyrant
CGI
- Ex&#xE9;cution avec les droits du serveur web
- Limitation des risques
CLI
- Ex&#xE9;cution avec des droits d&#xE9;finis
- Acc&#xE8;s &#xE0; des ressources sensibles
- Script shell
- Lien Cron
CGI
- Ex&#xE9;cution avec les droits du serveur web
- Limitation des risques
CLI
- Ex&#xE9;cution avec des droits d&#xE9;finis
- Acc&#xE8;s &#xE0; des ressources sensibles
- Script shell
- Lien Cron
CGI
- Ex&#xE9;cution avec les droits du serveur web
- Limitation des risques
CLI
- Ex&#xE9;cution avec des droits d&#xE9;finis
- Acc&#xE8;s &#xE0; des ressources sensibles
- Script shell
- Lien Cron
CGI
- Ex&#xE9;cution avec les droits du serveur web
- Limitation des risques
CLI
- Ex&#xE9;cution avec des droits d&#xE9;finis
- Acc&#xE8;s &#xE0; des ressources sensibles
- Script shell
- Lien Cron