Вы находитесь на странице: 1из 11

Utilisationde l'intertacede

programmationAdWordsde
Googleavec la bibliothèquePHP
APllity
Niveau de difficulté : o
ThomasSteiner

Pour de nombreuxutilisateurs,les recherches


sur Googlesont devenusincontournables
dans leurtravailquotidiensur Internet.Mais,
quel utilisateurne s'estjamaisdemandé
d'où pouvaientprovenirles petitesannonces
textuellesà droite de leur écran ? Le programme
d'annoncespublicitaires de Googles'appelle
AdWords.Sous les quatrelignesde textetoutes
simplespar annonceen arrière-planse cacheen
réalitéun systèmeextrêmementdynamiquede
plusieursannoncesconcurrentesen arrière-plan.

e présentarticlea pour objectifde cas sur les mots clés vélos, vélos pas
vous présenterI'accèsà I'interface chers, excursionsà vélos Londres ou
de programmationAdWords de même magasinv/os (vous aurezremar-
Googleau moyende la bibliothèque PHP qué la faute d'orthographe).Supposons
intituléeAPllity,elle-mêmeproposéepar maintenant qu'Alicene soit pas la seule
Googlesousformede projetopen source de magasinde vélos.Bobet
propriétaire
hébergésur SourceForge. net. Cameronont égalementdécidéd'utiliser
Sur les moteursde recherche,I'utili- le Web afin de prospecterde nouveaux
sateurexprimede façontrès précisece clients. Mais, qui décide des textes
qu'ilsouhaitetrouver.PrenonsI'exemple à afficheren premièrepositiondes sites
d'un internautesitué à Londres cher- les plus visités? La réponse à cette
chant à acheterun nouveauvélo. Une questionfondamentale résidedans une
requêtede rechercheoptimaleconsiste- simpleformule:
rait dans ce cas à taper magasin vélos
Londres.Supposonsmaintenant qu'Alice Ad Rank = Cost Per Click * Quality Score

soit propriétaired'un magasinde vélos


à Londres.Ces deux personnespour-
raientêtre mises en contactau moyen Ce qu'il faut savoir...
Vous devriez avoir les bases de la pro-
Thomas Steiner (tomac@google.com) d'une annoncepublicitairetextuellesur grammationorientéeobjeten PHP5.
travaille pour Google, lnc. en tant qu'in- Google.À chaquefois qu'un internaute
génieur logiciel. C'esf un feruent partisan tape l'expressionmagasinvélos Londres
de l'inteiace de programmation Ad-
Getarticleexplique...
sur un moteurde recherches,I'annonce Vous apprendrezcommentcréerune ap-
Words. ll est également chargé du prciet
publicitairetextuelled'Alicepourraitalors plicationsimpleGoogleAdWords.
open sourceAPllity.
s'afficher.Ce pourraitégalementêtre le

www.phpsolmag.org PHP SolutionsN" 4/2006


t

ou plus simplementun CPC par défautpar


P r e m i e r sp a s a v e c l a b i b l i o t h è q u eA P l l i t y groupe d'annonces.Dans le même ordre
La bibliothèque APllityest hébergéeen tant que projetopen sourcesur SourceForge.net. d'idée, chaque mot clé peut avoir sa pro-
Allez sur le site http://google-apility.sourceforge.net,
téléchargezla versionla plus récente,
puisdézippezle packagedans un dossierauquelPHP a accès.La bibliothèque pre URL de destinationvers laquellesera
est struc-
turéecommesuit : acheminéI'utilisateur
lorsqu'ilcliquerasur
l'annonce(comme par exemple, chaque
Un manueld'introduction
et des références d'instructions
se trouventdansle dossierdoc sous-catégoriedu fabricantsur le site du
Le dossierlibcontientdifférentscomposants de la bibliothèque.
Le dossierintituléwsdl-cache, toujoursvide,comprendles fichiersWSDL requispar magasin de vélos), ou tout simplement
la bibliothèque(nousaborderons ce pointplusen détailultérieurement). une URL générique(commepar exemple,
Enfin,le principaldossier,intituléAPllity,comprendquelquesfichierstextereadme, la principaleentrée du site du magasinde
un fichierzip avecune suitede tests,et plus importantencore,deuxfichiersini et le
vélos). De même, les campagneset les
fichierapility.php.
groupes d'annoncespeuvent être exacte-
Exigences ment adaptésaux besoinsde I'annonceur.
La bibliothèque APllityfonctionneà la fois avec PHP4 et PHPS.Afin d'êtresûr de faire Les campagnes, par exemple, peuvent
fonctionnerla fonctionnalité de téléchargement de rapports,APllityexiged'activerI'exten- être ciblées régionalement,les groupes
sionCURL,proposéeavecPHP.Voustrouverezde plusamplesinformations sur la procé- d'annonces peuvent être suspendus ou
dure à suivreà partirdu site de PHP (http://vvww.php.neilcurl).
Seulsles utilisateursde PHP4aurontbesoinde I'extension DOM XML proposéeavec complètement supprimés (lorsqu'Alice
PHP4 (http://www.php.neildomxml), mais remplacéepar DOM sous PHPSet désormais décide, par exemple,de ne plus vendre
intégréeau noyaude PHP5.La bibliothèque APllitycontrôleradès son installation
la bon- les vélos d'un certain fabricant). Les
ne conformité avecses exigences, et afficheraune alerteen cas de problèmes
rapports de performance permettent aux

Paramétrerla bibliothèque annonceursde suivreles résultatsde leurs


Chaquerequêtesoumiseà I'interface de programmation AdWordsnécessiteune authen- comptesAdWords.
tificationainsi que I'indication d'une marquedu développeur censéeidentifierchaque
développeur. VeuillezconsulterI'encadrédétaillantle processusà suivrepour paramétrer
un compteAdWords,puis avoiraccèsà I'interface de programmation. Noussupposerons
Interfacede program-
dans cettepaftieque vous avez déjà ouvertun compteet possédeztoutesles données mation AdWords
d'accèscomplémentaires. Afin de faciliterle processusd'authentification,la bibliothèque Afin de gérer un système aussi com-
APllityutilisele fichiercentralintitulé
authentication.ini. plexe, Google s'est adapté aux besoins
En règlegénérale,une agencepublicitaire possèdeplusieursclients,chacund'entre des annonceurs en leur proposant une
eux ayantaccordéà I'interface de programmation de I'agenceun accèsà leurscomptes.
interfaceplus efficacequ'une simple ap-
Ces clientssont regroupésdans le My ClientCenter(MCC,ou Mon CentreClient)de
l'agence.Le gestionnairedu MCC est appelégestionnaireclient.La premièreadresse plication Web frontale. Google propose
emaildu gestionnaire clientidentifieI'agence, alorsque la premièreadresseemailde cha- donc une interface de programmation
que clientdu gestionnaire identifie
le clienten question. Ainsi,afind'avoiraccèsà un client permettantà une agence publicitairede
particulier,
il faut vousidentifieravec I'adresseemailde votregestionnaire client,votremot
de passe,votre marquedéveloppeuret I'adresseemail particulière t é l é c h a r g e er n u n e s e u l e f o i s u n e q u a n -
du client.Ouvrezle
fichierauthentication.ini,et entrez-yune seulefoisces données.Vousêtesenfinprêt. tité énorme de mots clé, sur laquelle
toutes les campagnes d'un annonceur
peuvent être automatiquementsuspen-
Les annonceurspeuvent choisir le coût groupe d'annonces comporte une liste dues en cas d'évènements imprévus,
maximumpar clic (CPC)qu'ilssont prêtsà de mots clé ou de critèresde sites Web, et permettantà I'entrepôtd'une société
payer,alors que la note de qualitéest dé- ainsi qu'une liste de créations(annonces d'interagiravec le prix des mots clé cor-
terminéepar le taux de clics (clickthrough textuellesapparaissantsur le moteur de respondants.L'interfacede programma-
rate, ou CTR) sur chaque mot clé, la per- recherche).Alice peut choisirle CPC maxi- tion de Google permet de nombreuses
tinence du texte de l'annonce,la perfor- mum par mot clé qu'elleest prête à payer, utilisations.
mance historiquedes mots clé, et d'autres
facteurs. Le système dépend donc aussi
de la pertinencedes annonces. TrafficE stimate php TrafflcE stimate php

Structured'un compte TrafficE stimate php TraffrcEstimate php

AdWords Google TrafficE stimate php

Un compteAdWords Google se compose


TrafficE slrmate php
de différentescampagnes.Suivantl'exem-
ple précédent, Alice devrait posséder TrafficE stimate php

différentescampagnes pour les VTT et les


h
vélos de course. Chaque campagne con-
sg
tient un ou plusieursgroupes d'annonces.
Ainsi, la campagne d'Alice sur les vélos Your Appliætion

de course peut comprendredes groupes


d'annonces par fabricant. Enfin, chaque Figure 1. Structure des c/asses de la bibliothèqueAPllity

PHP SolutionsN" 4/2006 www.phpsolmag.org


ou plus simplementun CPC par défaut par
groupe d'annonces.Dans le même ordre
net. d'idée, chaque mot clé peut avoir sa pro-
nte, pre URL de destinationvers laquellesera
rr ta-
acheminé I'utilisateurlorsqu'ilcliquera sur
turéecommesuit :
I'annonce (comme par exemple, chaque
. Un manueld'introductionet des références se trouventdansle dossierdoc'
d'instructions sous-catégoriedu fabricantsur le site du
. Le dcssierlib contientdifférentscomposants de la bibliothèque. magasin de vélos), ou tout simplement
. Le dossierintituléwsdl-cache, toujoursvide,comprendles fichiersWSDL requispar
une URL générique(comme par exemple,
la bibliothèque(nousaborderons ce pointplusen détailultérieurement)'
la principaleentrée du site du magasinde
. Enfin,le principaldossier,intituléAPllity,comprendquelquesfichierstextereadme'
ini et le vélos). De même, les campagnes et les
un fichierzrpavecune suitede tests,et plus importantencore,deuxfichiers
fichierapilitYPhP. groupes d'annoncespeuvent être exacte-
ment adaptésaux besoinsde I'annonceur.
Les campagnes, Par exemPle, Peuvent
être ciblées régionalement,les groupes
d'annonces peuvent être suspendus ou
complètement supprimés (lorsqu'Alice
décide, par exemple,de ne plus vendre
les vélos d'un certain fabricant)' Les
rapports de performancepermettent aux
annonceursde suivreles résultatsde leurs
comptesAdWords.

Interfacede Program-
mation AdWords
Afin de gérer un sYstème aussi com-
plexe, Google s'est adapté aux besotns
des annonceurs en leur proposant une
interfaceplus efficacequ'une simple ap-
plication Web frontale. Google propose
donc une interface de programmation
permettantà une agence publicitairede
téléchargeren une seule fois une quan-
tité énorme de mots clé, sur laquelle
toutes les campagnes d'un annonceur
peuvent être automatiquementsuspen-
groupe d'annonces comporte une liste dues en cas d'évènements imPrévus,
Les annonceurs peuvent choisir le coût
de mots clé ou de critèresde sites Web, et permettant à I'entrepÔtd'une société
maximumpar clic (CPC)qu'ilssont prêtsà
ainsi qu'une liste de créations (annonces d'interagiravec le prix des mots clé cor-
payer,alors que la note de qualitéest dé-
textuellesapparaissantsur le moteur de respondants.L'interfacede programma-
terminée par le taux de clics (clickthrough
recherche).Alice peut choisrrle CPC maxi- tion de Google permet de nombreuses
rate, ou CTR) sur chaque mot clé, la per-
tinence du texte de I'annonce,la perfor- mum par mot clé qu'elleest prête à payer, utilisations.

mance historiquedes mots clé, et d'autres


TrafficE strmate PhP
facteurs. Le système dépend donc aussi
TraficE stimate phP
de la pertinencedes annonces. TrafticE stimate php

TrafficE strmate PhP IraFfrcEshmate PhP

Structured'un compte
TrafficE stimate PhP TrafficE strmate php
AdWords Google
Un compte AdWords Google se compose
de différentescampagnes.SuivantI'exem-
ple précédent, Alice devrait posséder
TrafficE strmate phP
différentescampagnespour les WT et les
vélos de course. Chaque campagne con-
tient un ou plusieursgroupesd'annonces'
Your Application
Ainsi, la campagne d'Alice sur les vélos
de course peut comprendredes groupes
d'annonces par fabricant. Enfin, chaque Figure 1. Structuredes c/asses de la bibliothèqueAPllity

PHP SolutionsN" 4/2006 www.phpsolmag.org


ou plus simplementun CPC par défaut par
Premierspas avec la bibliothèqueAPllity groupe d'annonces.Dans le même ordre
La bibliothèque APllityest hébergéeen tant que projetopen sourcesur SourceForge.net. d'idée, chaque mot clé peut avoir sa pro-
téléchargezla versionla plus récente,
Allez sur le site http://google-apility.sourceforge.net,
pre URL de destinationvers laquellesera
puisdézippezle packagedans un dossierauquelPHP a accès.La bibliothèque est struc-
turéecommesuit : acheminé I'utilisateurlorsqu'ilcliquera sur
I'annonce (comme par exemple, chaque
. Un manueld'introductionet des référencesd'instructions
se trouventdansle dossierdoc. sous-catégoriedu fabricant sur le site du
. Le dossierlib contientdifférentscomposantsde la bibliothèque.
. magasin de vélos), ou tout simplement
Le dossierintituléwsdl-cache,toujoursvide,comprendles fichiersWSDL requispar
la bibliothèque(nousaborderons ce pointplusen détailultérieurement). une URL générique(comme par exemple,
. Enfin,le principaldossier,intituléAPllity,comprendquelquesfichierstexte readme, la principaleentrée du site du magasinde
un fichierzip avecune suitede tests,et plus importantencore,deux fichiersini et le vélos). De même, les campagnes et les
fichierapility.php.
groupes d'annonces peuvent être exacte-

Exigences ment adaptésaux besoinsde l'annonceur.


La bibliothèque APllityfonctionneà la fois avec PHP4 et PHPS.Afin d'êtresûr de faire Les campagnes, par exemple, peuvent
fonctionnerla fonctionnalité de téléchargement de rapports,APllityexiged'activerI'exten- être ciblées régionalement,les groupes
sionCURL,proposéeavec PHP.Voustrouverezde plusamplesinformations sur la procé- d'annonces peuvent être suspendus ou
dure à suivreà partirdu site de PHP (http://www.php.net/curl).
Seulsles utilisateursde PHP4aurontbesoinde l'extension DOM XML proposéeavec complètement supprimés (lorsqu'Alice
PHP4 (httpl/vvvvw.php.neUdomxml), mais remplacéepar DOM sous PHPS et désormais décide, par exemple, de ne plus vendre
intégréeau noyaude PHPS.La bibliothèque APllitycontrôleradès son installation
la bon- les vélos d'un certain fabricant). Les
ne conformité avecses exigences,et afficheraune alerteen cas de problèmes. rapports de performance permettent aux
annonceursde suivreles résultatsde leurs
Paramétrerla bibliothèque
Chaquerequêtesoumiseà I'interface de programmation AdWordsnécessiteune authen- comptesAdWords.
tificationainsi que I'indication d'une marque du développeurcensée identifierchaque
développeur. VeuillezconsulterI'encadrédétaillantle processusà suivrepour paramétrer Interface de program-
un compteAdWords,puis avoiraccèsà l'interface de programmation. Noussupposerons
dans cettepartieque vous avez déjà ouvertun compteet possédeztoutesles données mation AdWords
d'accèscomplémentaires. Afin de faciliterle processusd'authentification, la bibliothèque Afin de gérer un système aussi com-
APllityutilisele fichiercentralintituléauthentication.ini. plexe, Google s'est adapté aux besoins
En règlegénérale,une agencepublicitaire possèdeplusieursclients,chacund'entre des annonceurs en leur proposant une
eux ayantaccordéà l'interface de programmation de I'agenceun accèsà leurscomptes.
interfaceplus efficacequ'une simple ap-
Ces clientssont regroupésdans le My ClientCenter (MCC, ou Mon CentreClient)de
l'agence.Le gestionnairedu MCC est appelé gestionnaireclient.La premièreadresse plication Web frontale. Google propose
emaildu gestionnaire clientidentifieI'agence,alorsque la premièreadresseemailde cha- donc une interface de programmation
que clientdu gestionnaire identifiele clienten question.Ainsi,afin d'avoiraccèsà un client permettantà une agence publicitairede
particulier,
il faut vousidentifieravec I'adresseemailde votregestionnaire client,votremot
téléchargeren une seule fois une quan-
de passe,votre marquedéveloppeuret I'adresseemail particulière du client.Ouvrezle
fichierauthentication.ini, et entrez-yune seulefois ces données.Vousêtesenfinprêt. tité énorme de mots clé, sur laquelle
toutes les campagnes d'un annonceur
peuvent être automatiquementsuspen-
Les annonceurs peuvent choisir le coût groupe d'annonces comporte une liste dues en cas d'évènements imprévus,
maximumpar clic (CPC)qu'ilssont prêtsà de mots clé ou de critèresde sites Web, et permettant à I'entrepôt d'une société
payer,alors que la note de qualitéest dé- ainsi qu'une liste de créations (annonces d'interagiravec le prix des mots clé cor-
terminée par le taux de clics (clickthrough textuelles apparaissantsur le moteur de respondants. L'interface de programma-
rate, ou CTR) sur chaque mot clé, la per- recherche).Alice peut choisirle CPC maxi- tion de Google permet de nombreuses
tinence du texte de I'annonce,la perfor- mum par mot clé qu'elleest prête à payer, utilisations.
mance historiquedes mots clé, et d'autres
facteurs. Le système dépend donc aussi
de la pertinencedes annonces.

Structure d'un compte


AdWords Google
Un compte AdWords Google se compose
de différentescampagnes. Suivant I'exem-
ple précédent, Alice devrait posséder
différentescampagnes pour les VTT et les
vélos de course. Chaque campagne con-
tient un ou plusieursgroupes d'annonces.
Ainsi, la campagne d'Alice sur les vélos
de course peut comprendre des groupes
d'annonces par fabricant. Enfin, chaque Figure 1. Structure des c/asses de la bibliothèqueAPllity

PHP SolutionsN'4/2006 www.phpsolmag.org


Contextetechnique Système de quotas Pourquoiavoir opté pour un systèmede
de programmation
L'interface re-
AdWords L'interface de programmation AdWords quotas? L'interfacede programmationAd-
poseessentiellement sur la technologie de gère le trafic au moyen d'un système de Wordsagitrapidement afin
et efficacement
messageSOAP, protocole basé sur XML quotas fournissantà chaque développeur de pouvoiraccepterd'unpointde vue pro-
et HTTPextrêmementbien supportédans un nombre d'unités de quotas gratuites grammation Afin
des milliersd'opérations.
le secteur.L'interface de programmation Ad- par mois échangeables contre certaines d'empêcherle systèmede recevoirplus
Wordsutilisedes documents ou stylelittéral opérations. Alors que certaines opéra- d'opérationsqu'ilne peuten gérer,Google
SOAP1.1.Afin d'accâleraux comptesAd- tions n'exigent qu'une unité de quota, a recoursà un systèmede quotascapable
Wordsd'unpointde vueprogrammation, les d'autrespeuventen consommerplusieurs. des unitésde quotasgratui-
de redistribuer
utilisateursconstruisent un clientde services
Webayantrecoursà I'interface de program- sousAPllity
Listing 1. Fichierauthentication.ini
mationAdWords.En regle générale, un pre
grammeclientde servicesWeba recoursà
; Sur l-e fichier authentlcatron'inr ;
une boîteà outilscenséesavoircomment
se connecteret interagiravec les services ; ce fichier contrôl-e I'authentilication de I'utilisateur sous APIIj.ty.
Web.Lesrequêtespouvantêtretraitéespar ,'Pour permettre à APIlity de le lire, il doit être appele
unserviceWebsontdéfiniesdansunfichier . Iarrfhentieef inn- init.

WSDL(WebServicesDefinition Language, : T,: svntâxe'le ce fichi.er est d'une srmplicité extrême' Les lignes

. ^^mmôn-âni n:r iln noinf rriroille e' t- 1^^ ^^-^^^^ Ll-^^^ ^ônf fôrt c i m n l ê Lmt r rev rnr rt
J r r " y f

ou langagede définitiondes servicesWeb)


- ç ù c J P d u c J ! f o l l ç ù

: iono.és en silence.
en XML.Le fichierWSDLdécritles opéra- E m a i l = " y o u r E m a l I G s o m e I S Pt .l d "
tionsque le serviceWeb en questionpeut password = "y0uR5ecR3L"

réaliser,les paramètresrequispourchaque Developer Token - "yOurD3v3l0p3RT0k3n"

opération,et les réponsesattenduespour Client Email = "yourClientsEmail@someISP'tld"

chaqueopération.Afln de pouvoirutiliser
Listing 2. Extrait des données de sortie de l'application hello wotld
I'interfacede programmation AdWords,les
utilisateursrâligentdes programmes clients Array (

dansle langagede leurchoix(commeJava, t 0 l = > C a m P a i g nO b j e c t (

Perl,Python,C, C++, PHP,etc.).Le Pro lname] =) SomeName


Iid] => 12345618
grammeclientenvoieunerequêteà I'undes => Actrve
Istatus]
servicesWeb AdWords,commele service IstartDate] => 2006-03-31T11:03:21'0002
TrafficEstimatorService ou AdGroupSer- I e n d D a t e ] = > 2 0 0 7 - 0 1 - 0 1 T 0 :75 9 : 5 9 ' 0 0 0 2
vice.Le serviceen questiontraiteraalorsla IdailyBudget]:> 567

requêtepuis renvenaune réponseque le Ilanguages] => Array (


Io] => en
progrcmme clientdevraanalyser. => pl
Ir]
12) => f.r
Raisons de proposer )
des bibliothèques client IgeoTargetTYPe] => countries

Débuteravec les servicesWeb n'estpas IgeoTargets] => Array (


[0] :> uK
choseaiséeet peutmêmeen décourager
[1] => PL
plusd'un en raisondu grandnombrede [2] => GB
paramètresà prendreen compteque les )
=> [networkTargeting] => Array (
développeurs n'ontpasforcé-
d'application IisEnabledOptimizedAdServing]
l0l => SearchNetwork
menten tête.C'estla raisonpourlaquelle
[1] => ContentNetwork
Googlea décidéde proposerdes biblio-
)
thèquesclientcommeAPllitychargéede IisEnabledSeparateContentBids]
:> 1

fournirune couched'abstraction aux dé- )


tailsdes ces servicesWeb et de les cou- )
vrirdansdes constructionssupérieuresdu
Listing 3. Extrait des données de sorfie de l'application hello world étendue
langage.Googleproposeégalementune
autrebibliothèque clientJava,disponible Array (
sousformede proyetopen source(httpt/ [0] => AdGroupObject (
sourceforge.net/p roiects/goog-ad-ap i - I m a x C P c ]= ; 1
lmaxCPml=1
c/,4. APllity propose aux développeurs => sdsdsd
I m a x C o n t e n t C p c ]= > [ n a m e ]
un accèsorientéobjet et facile à utiliser Iid] => 219945001
à I'interfacede programmation AdWords lbelongsToCampaignldl => r 0 8 3 8 9 4 1
de Googleà partirdu langagePHP.Vous l c i â t 1 1 e l
L J L g ! q v
= > A . f i 1 7 ê

trouverezdans la suitedu présentarticle


de la
un tutorielpratiquesur I'utilisation
bibliothèque APllity.

www.phpsolmag.org PHP SolutionsN" 4/2006


sont des objetsindépendants, et tous les
objetsdérivésstockentun lien retourvers
I'emplacement auquel ils appartiennent.
En d'autrestermes,les groupesd'annon-
ces stockentI'identifiant
de la campagne
dans laquelleils sont compris,et les
Campaing
name
créationsmémorisentl'identifiantde leur
id
status
grouped'annonces, et ainside suite.Nous
AdGrDUp
startDate
endDate
nam6 avonsexposédansI'illustration ci-dessous
id
dailyBudget
networkTargeting { b€longs:focârpebntO
r||sxcpc
la hiérarchie
complètedes objets.
ran9uages
mexcpm
geoTargetTyp€
maxContâ]îlCpc
geoTarget
campaignNegativeKeywordCriteria
dâtu8 Application
campaignNsgativewebsiteCriteria
isE nabledSeparatecontentBids Hello World sous Apllity
isE nablêdOptimizedAdSewing
La quasitotalitédes tutoriauxde program-
mation débute par un exemplede type
hello world, et nous ne dérogeronspas
à la règle.Si vous avez bien téléchargé
la bibliothèque APllig,si vous I'avezbien
placéedans un dossierauquelPHP peut
accéder,et si vous avez bien entré vos
Figure 2. Hiérarchle des objets de la bibliothèque APllity
donnéesd'authentification, vous êtes fin
prêtà démanerI'application. Toutd'abord,
tes mensuellement.
Le nombred'unitésde Chaque campagneet chaque groupe APllitydoitêtreincluse(dansce cas,il suf-
quotasgratuitesest déterminéselon les d'annoncesest identifiéau moyen d'un fit de placerla bibliothèque
dansle même
dépensestotalesdu développeur. universelunique,alorsque les
identifiant dossierque le programme helloworld):
créations,les mots clé et les critèresde
Quelquesprécisions sitesWeb le sontpar un identifiantunique // inclure 1a bibliothèque APIlity
sur la structurede au niveau du compte.Les campagnes r e q u i r e o n c e( ' a p i l i t y . p h p ' );

la bibliothèqueAPllity
La bibliotheque APllityutiliseune version Listing 4. Etape 1, créationd'une listede fous/es critèrespar motsclé d'un
adaptéede NuSoapde DietrichAyalaafin compte
de pouvoir interagir avec l'interfacede
programmation php
AdWords.Son centre est
// inclure La btbliothèque APIlity
(vert),lequelcomprendtoutesles
apility.php
require once'apility.php' ;
difiérentesclassespossibles.Chaqueservi- function getAllCriteriaOfAccount rr :
ce Webest représentéparsa propreclasse // obtenir toutes Jes campaçrnes
(aune).Ce systèmepermetainsià quicon- // en cas d'échec de cette etape fondanentale, retourner La vaLeur fausse

queintéressé parI'installation if , l9allCarnpaigns = getAllCampaignsii i return false;


détaillée
d'une
// pour chaque canpagne, obtenir tous les qroupes d'annonces contenus
tâche particulière,de trouverfacilementla
f o r i $ i = 0 ; S i . s i z e O f $ a l l C a m p a i g n s r; $ i + + :
classe appropriée.L'implémentation pre $campaign = $allCampaigns $i ;
fère la clarté à I'optimisationde I'espace. // ici, en cds d'erreur, sauter l'itèrdtjon en question
Ceci permetaux développeurs de suivrele if : l$aIlAdcroupsOfCampaign $i = Scampaign-'getAlIAdÇroupsii i continue,'

XML envoyéde manièreinteme.Le fichier


// nous ne voulons gue rous -les mots cle du conpLe. Donc, inirjalrser
Clients.php agit commeconnecteurentre
// un tabLeau chargé de contenir ces informatjons
NuSoap,le trafic brut XML SOAP (touten $allCriteriaOfAccount = arrayi r ;
gris) de I'interfacede programmationet // lo arneoçqrrc rlprz jpnr iri rtn norr ài f firi 1a '
-,,aque canpdqne,
nnrtr rh

les objetsPHP de niveausupérieurde la // et donc pour chaque groupe d'dnnonces, obtenir tous .les nots clé contenus

bibliothèque APllity.Enfin,I'authentification, for,9i=6' $ i . s i z e O f r $ a l l A d G r o u p s O f C a m p a i g n; t $ i + + l l


forr$i=6' $ j s i z e O f , $ a f f À d G r o u p s O f C a m p a i g n , $ i ). ; S j + + ) :
la gestion des eneurset certainsutilitaires
$ a d G r o u p = $ a l l A d G r o u p s O f C a m p a i g nr $ i $j r ;
basiquesviennentparfairela bibliothèque. // ici / en cas d'erreur, sduter l'iteration en guestion
if r !$allCriteria = $adGroup- getAllCriteriarr , continue;

Objets affichés dans APllity foreach L$aIlCriteria as $criterron )


a r r a y p u s h ,S a l l C r i t e r i a O f A c c o u n t , ,;
sur l'interface AdWords $criterion

Comme nous venonsde le mentionner


plus haut, les comptes AdWords con-
tiennent des campagneselles-mêmes return $allCriteriaOfAccount ;
diviséesen groupesd'annonces, lesquels
comprennent des créations,qu'il s'agisse
de mots clé ou de critèresde site Web.

PHPSolutions
N'4/2006 www.phpsolmag.org
Toutes les fonctionnalitésde la biblio- print r ( $ a l l C a m p a i g n s ); sons d'un tableaude campagnes(en
thèque APllity sont désormais dispo- echo "</pre>"; supposantque nous utilisonsles varia-
nibles. Nous pouvons donc procéder ?> précédent)
blesde I'exemple :
à l'application hello world, qui consiste,
sous AdWords, en une liste de toutes sousfor-
Lesdonnéesde sorties'affichent / / aaaoàor À
q fI ua ny rr o
Lm, Li ' r u À r o nrmn:one r]ans

les campagnes d'un client. Commen- me de clichébrutdu tableaudes campa- // le tableau des campagnes

çons par observer le code suivant : gnesdes clients.Lorsquevotrecomptene / /


| |
d
y u1 L: r c nhf on i r qac ôrôrrnêq d l:nnone eq

contientqu'unecampagne,vous devriez $ a l l A d G r o u p s = $ a l l C a m p a i g n sl 0 l - >

<? p h p obtenirdes donnéesidentiquesà celles getAllAdGroupsO;

// inclure Ia bibliothèque APIJ.ity dansle Listing2.


illustrées // m ê m e sd o n n é e s d e s o r t i e basiques

/ / raatt i rc
! e Y u r r L
o
v rn
, eeu p I\ r :u n i
y t t
li rrr
r v I . Y t L Y
nhnr\ t
:
t Unefoistoutesles campagnes obte- echo "(pre)",'

// obtenir toutes les campagnes du nues,commentobtenirtousles groupes print r ( $ a l l A d G r o u p s );

/ / client d'annonces ? Chaquegrouped'annon- echo "</pre)";


( r l l a r m n : i n n c
vorrLqrryof9rrJ
-= 6 4 f À l l l . a n r i a n o
YcLnrrualllIJaf vlrJ
/ \
t/ t
.
ce appartientà une campagne.Nous
// donnees de sortie déplaisantes mais devonsdoncdemanderaux campagnes Vousdevriezdoncobtenirun ou plusieurs
/ / foncLtonneffes r-ssues la listede tousses groupesd'annonces, objets groupe d'annoncesdans un ta-
// du tableau des objets campagne et effectivementla manæuvreest aussi bleau identiqueà celui exposédans le
echo "(pre)"; directe.N'oubliezpas que nous dispo- Listing2.

Listing 5. Étape 2, évènement déctencheur lançant les modifications de CPC maximum


php else echo "Bids already raised.
// variables gJoba)es chargees de definir l-e debut et Stil1 lunch time.<br />\n";
// le fin de la pause dejeuner.
$ I u n c h S t a r t T i m e= " 1 1 : 0 0 : 0 0 " ; // C'est l'heure du travaiL
S l u n c h E n d T i m e= " 1 3 : 0 0 : 0 0 " ; else
// atcendre 15 ninutes entre chaque cycle de contrôle // St pas encore reduites,
SsleepTime = 15; if l$bidslowered'
function startDaypartingDaemon $IunchStartTj-me, // réduire les offres.
$lunchEndTime, if llowerBids,$allCriteria:,
$s1eepTime, $allCriteria = nul-], $bidsRaised = false, exitr"Error on lowering the keywords max CPC." ,'
$bidslowered:falsel; else
// si ]e dénon de pdrtage de Ja journée est Jancé pour 1a echo "Lunch Time ended, <font color='greenr)
// prenière fojs, Lenter de retrouver les crilères par lowering</font> bj.ds.<br />\n";
// nots cl.é vja un appel de L'interface de progrdnndtron. $bidslowered = true,'
// fes nots cl-é serant ensuite retournés à chaque $bldsRaised = false;
/ / récursivité.
if i s n u 1 1' $ a I I C r i t e r i a r j
e c h o " D a y p a r t i n g D a e m o ns t a r t e d . br / \n"; else echo "Bids already lowered.
ob flush,;; Still work time.<br />\n";
flush , , ;
/ / E n c a s d ' é c h e c , } e c o n p t e n ' e s t m ê m ep J u s a c c e s s i b J e // retrouver eL inpriner mes données prealablenenL
if , !$allCriterls = getAllCriteriaOfAccountir , // placées en zone tanpon
exiti"Could not access the account":; ob flush r;
, else flush r ' ;
echo "Account data successfully loaded.<br />\n",' sleepr$sleeptime * 60r;
// appeJ recursif, renarque : l-e tabfeau allCriterid est
/ / désornais renpLi et -les bits d'état stockés sr -ies
// vérifier si c'est f'heure de la pause déjeuner // offres ont été nodifiées.
$now= tinei); starLDaypartingDaemoni$lunchStartTime, $IunchEndTime,
// C'est Ja pause déleuner $sleepTime, Sal]Criterj.a, $bidsRaised,
i f r r s n o w = m a k e U n i . x T i m e S t a m p i $ I u n c h S t a r t T i mre i & & $bidslowered,;
' $ n o w , = m a k e U n i x T i m e S t a mr p$ l u n c h E n d T i m e I) l
// Si pas encore augnentées, // Cette fonction convertit une durée en fornat IS0
if , ! $bidsRaisedr t // (12:00:00) yers une estampj 7Ie temporelle UNIX
// augnenter Les offres function makeUnixTimestampt$isoTimet l
if I !raiseBi-dsi$allCriteria:) $ t i m e C o m p o n e n t=
s spliti":", $isoTime);
exiti"Error on raisj.ng the keyword's max CPC."l; r e t u r n m k t i m e r $ t i m e C o m p o n e n t s i 0 r , $ t i m e C o m p o n e n t s1 ,
else $timeComponent2 sr, datet"m"), datei"d"),
echo "Lunch Time started, <font color='red') datel"Y"r I,' :
raising</font> bids.<br />\n"; // Lancer le denon (et exécuter le "pour toujours")
SbidsRaised = true; startDaypartingDaemoni$lunchStartTime, $lunchEndTime,
$bidslowered = false,' $sleepTimer;

www.phpsolmag.org PHP SolutionsN'4/2006


(lo'

S O A PX M L Asynchronous
XML
Or JSONResponse
WebBrowserOftheAPlltAxUser
"Virtualization"Of the AdWordsAPI By the Web Server

Figure 3. Extrait d'une application APllitAx utilisant la bibliothèque APllity combinée à AJAX

Nouspouvonspoursuivre la manoeuvre I'interfacede programmationAdWords, t

et appeler serArlAdGroupsO SUr tOuS leS pour certainesraisons,n'aime pas votre p r j - n t _ r ( $ c a m p a i g n O bj e c r ) ;


objets campagne, puis qerAttcrearives o campagne.ll existedonc deux possibilités C ^ . h h . l a - ô H : ^ ^ t s
vuolrPar9rlu!JeuL
-- - À ^ a : m n r i n n /
duuvo..rIJargr. t. . . , \t ,.

9t serAllcrirerla O de manière récursive de coder: p r i n t _ r ( S c a m p a i g n O bejc c ) ;


sur chaqueobjet groupe d'annoncesjusqu'à
obtention de I'arborescence complète du if (l$campaignObject = addCampaiSn(...)) { Toutesles eneurssontplaées dansla pile
compte client. C'est ce que vous pouvez // traitement de I'erreur de fautes.Ce comportementest toutefois
observez dans le pro1etdémo proposé avec
la bibliothèqueAPllity.
Listing 6. Étape 3, fonctionsde modification des objets

Traiter les erreurs et la php

programmation défensive function raiseBids SalICriteria,


foreach 9allCriteria as Scriterion
ll aniveparfois
quedesereurcsurgissent.
if I $criterj.on- s e r M a x C p c$ c r i t e r i o n - getMaxcpc return false;
Touslesprogrammeurs serontsansdoute
d'accordavec I'affirmationsuivante:dès return true;
lorsqu'unserviceWebà distanceest impli-
qué dansun processus, plus function l-owerBids $aIlCriteriar
il est d'autiant
foreach,SaLlCriteria as $criterion
importantde biengérerles erreurs.Or, la
if ! Scriterion- setMaxCpc$criterion- getMaxCpc 0,2',, return false;
APllitypermetnon seulement
bibliothèque
de coderdirectementmaiségalement d'éla- return true,.
borerune programmation défensive,selon
la convention
suivante:
Listing 7. Fichier PHP intermédiaire exemplaire
. retournela valeurfausseen cas de
problème quelconque, p h p h e a d e r " C o n t e n t - t y p e : a p p J - i c a t i o n / x m l ; C h a r s e t = U T F - 8 ";:,
. sitoutse déroulebien: ' ,php

. retournel'élémentà retourner, e c h o u t f B _ e n c o d e ; " . : x m l - v e r s i o n = ' 1 . 0 ' e n c o d i n g =' 9 1 a - t t , \ n " r ;


// inclure La bibliothèque APIJity
. retournela valeurvraie en I'ab-
include t' ./apility/apj-ILty.php' );
senced'élément à retourner. $authenticationContext- s e t E m a i _ r1$ P O S T ' e m a i I ' , r , .
9 a u t h e n t i c a t j , o n C o n t e x t - s e t P a s s w o r d i $ _ P O S T ' p a s s w o r d )' , '
Seulesexceptionsà cette convention,les $ a u t h e n t i c a t i o n C o n t e x t - s e t T o k e n i S _ P O S T , d e v e I o p e r T o k e nI, ;

fonctionsd'obtention $authenti.cationContext-setClientEmailr$ POST'clientEmail' I;


d'objetssimples,dans
S c a m p a i g n O bej c t = c r e a t e c a m p a i g n O b ej c t i S P O S T '' i d ' I ;
la mesureoù ellesnécessitentun objetcréé i f I ! $ c a m p a i g n O bej c t ,
avec succès.La fonctionaddcampaisnll, $fau]t = array pop $faultStack,.
parexemple,consisteà ajouter,commeson $ f a u l t - , p rj . n t F a u l t I I ;
nomI'indique, puisretoume . else ;
unecampagne,
cettecampagnetoutjusteajoutée.Ainsi,en 9xmL .= $campaignObject-'toXmlr: ;

I'absencede problème,vous pouvezatten- rrffQ onnnÀa (wml

dre un objetcampagneen tant que valeur


retoumée,ou une valeurfausse lorsque

PHPSolutions
N'4/2006 www.phpsolmag.org
sauts de ligne, puis remplissezce fichier mêmesuspendre complètement I'annonce)
très flexibledans la mesureoù la pile de
au moyendes fonctionsd'ajoutde la biblio- pendantla périodecreuse.
fautes stocke les fautes dans un format
d'objetde fautesgénérique,et permetainsi thequeAPllity.La bibliothequepermetaux Objectif: notre tâche ici va consister
annonceurs,certiainement satisfaitsde la à programmer un démonde partagede la
de convertirà temps ces objetsfautesen
capacitéd'APllity,de fairedéjàbeaucoupde jouméetrès élémentairecenséfonctionner
mesffigesd'eneurHTML,en texte simple,
ou en XML, ou en rien du tout, selonles choses.Mais le travaildevientvraiment inté- toute la joumée,et toujoursaugmenterle
besoinsspécifiques du développeur. ressantau moment d'ajouterde I'interaction CPC par critèrede mot clé entrellheures
et de I'automatisme. et 13 heures,disonsde 0,20 Ê (Alicevit
Nouveaustatut à Londres).Étape 1 : Afin de faire fonc-
Avecce que vousvenezd'apprendre, vous Premierprogramme tionnerce programme, il faut retoumerau
pouvezdésormaiscréervotrepropreappli- sérieux niveaudes critèrespar motsclé du compte
cationftontaleWeb selonvos goûts,votre En termesd'annonces en ligne(maispas d'Alice. ll suffit pour ce faire d'étendre
propreprogrammede téléchargement vers seulement), diviserla joumée en plusieurs l'exemplehello wofld, exposé plus haut.
le serveur,ou uneapplicationde lancement tanchesd'affichagede difiérentstypesd'an- Comme nous n'avonsbesoinque d'une
de rapportexécutableen un seulclic. Et la noncesest un conceptimportant.Les an- listede tous les critèrespar motsclé, il est
llvous
listedesoutilsà créerpeuts'allonger. noncesciblentgénéralement unepopulation inutilede stockerI'originede chaquecritère
de connecterlesfonctions particulière et ce que cetteaudienceciblée par mot clé au moyend'unestructurecom-
suffitsimplement
puisde transformerlesdonnées retientplusparticulièrement selonle créneau plexede tableaux(nous pounionsmême
disponibles
APllityen HTML
de sortiede la bibliothèque horaire.Rappelez-vousdAlice et de son remonter les conespondances,si nous
ou de renseignercertainsélémentsde for- magasinde vélos. Les cyclistestravaillent le souhaitions,avec la propriétéde I'objet
généralement dur pendantla joumée,puis belongsToAdGroupld de chaquecritèrepar
mulairesavec les donnéesrestituées.Ou
surle Webpendantleurpause mot clé).Nousutiliserons toutefoisune pro'
encore,si vousoptez,parexemple,pourun se détendent
versle serveur,divi- déjeuner. ll sembledoncplusintéressant de grammationdéfensivepar soucide flabilité.
outilde téléchargement
fixerle nombremaximumde CPCdans cet- Veuillezconsulter le Listing4.
sez un fichierExcelavectabulationcomme
te tranchehoraireafinde générerle plusde Bien que fondamentalepour retrouver
séparateurau moyen d'un grand nombre
de motsclésaux anêtsde tabulationet aux conversions possibles, et râluire le CPC(ou les donnéesla premièrefois,cettepremière

API|IT Dctno

fnra/lLr S.û.
Logùook
Entrr Your LogrhrDatet

staùr3 st tiD.t coaoat


Ddly
lut|.t ffiffi Lrreo.e.i t;iï G.oTttgtrt3 oDdmr

lffi-orfmgal l z et Cc[irr t eottr f-sd-\


o lffiii-r'æ| O oooel.
Statdl c 3rgûab \-ÈrsJ
Â.ft.
Coulùiot Cqtant -l
tsotcr
Ontrr lJidf f- su
Pr,ltd ll*Toft
ô I orp*e I
t cortryt \--PssoJ
l.|Jtnod. Ra(iorit
ldô-ol
ura.kdat
st|c1Lp.
l?l:ûOl
w.otd.t End
Tfitl|
liiffil
w.d.nd
strfiTl$o
l2rææl
vY..krfid End
tIm.

rffi]
\-es!rl-,,

Figure 4. Pincipe APllitAx

www.phpsolmag.org PHP SolutionsN'4/2006


étapene doitpas nécessairement êtreréaliséetouslesjours
surtoutlorsqueles motsclé d'uncomptedemeurentles mê-
mespendantune certainepériodede temps.En pratique, les
donnéessontstockéesdansune basede donnéeslocaleet
uniquement de manièrepériodique
contre-vérifiées parrapport
aux donnéesdu moment.Danscetteexempled'application,
nousnouscontenterons, parsoucide simplicité, de télécharger FlaveFun Prrynûl
lescritèrespar motsclé uneseulefois,puisde passerà cha-
que foisles donnéesainsiobtenuespar un appelde fonction
récursiveen omettantl'étapede contre-vérification. L'objectif,
ici,n'estpasd'écrireun programme hautement efficace,mais
plutôtcompréhensible.
Étape2 : unefoistouslescritèresparmotsclédisponibles,
il nous faut définircertainsévènementsdéclencheurs afïn
d'augmenter le CPCmaximumpar motclé (puisde le réduire
ensuite).Dansnotreexemple,nousallonsprendrele débutet
la finde la pausedéjeuner commeévènement déclencheur. Le
démonde partagede la jouméedevraensuitecontrôlerrégu-
lièrement I'heurede la pausedéjeuner. Si nousanivonsdans
cettetranchehoraire,le démondoitalorsaugmenterles ofires
(maisen une seulefois),et dans le cas contraire, le démon
devralesréduire(làaussi,en uneseulefois),et,danstousles
autrescas de figure,le démonpoursuivra toutsimplement sa
tâche.Nousdevonsdonccomparerdifiérentes trancheshorai-
res.L'estiampille temporelleUNIXnouspermettrade procâ1er
plusfacilement, commel'illustre
le Listing5. Étape3 : il ne reste
plusqu'à ajouterles fonctionspermettantde modifierle CPC
maximum.Lesdeuxfonctionspeuventêtrecombinéesen une
seule.ll seraitégalement possiblede passerles modifications
en tantque paramètrede cettefonction,maisnousavonsopté
pouruneconception plusflexible,
et certainement plusutilelors
d'unefutureutilisation.Veuillezconsulter le Listing6.

Défauts de cette approche


Vousvenezde créervotrepropredémonde partagede jour- MagumaWorkbenchest un environnement de
née. Ce programmen'estrien de plus qu'uneillustration du développement professionnel
pour leslangages
concept,et beaucoupd'élémentsmériteraientencored'être PHPet Python.
améliorés,commepar exemplela récursivité, loind'êtrela fa-
çon la plusjudicieuse de programmer un démon de partagede
MagumaOpenStudioest un environnement
de
jouméeen tempsréel.Revenezun peu en anière:pourquoi
avons-nouschoisicette approche? Nous devionsstockerla
Open Sourcepour PHP.
développement
listede tous les critères.Le protocoleHTTPest sansétat,de
sortequ'aumomentde recharger une page,touta disparu.ll Maguma- pourle plaisirde programmer!
serait possible d'utiliser
desvariables de session,maisdèsque
la quantitéde donnéesdevienttrop importante, cetteméthode Plusd'information:
se révèleelle aussiimpossible à appliquer.Nous pounions www.maguma.com
recharger I'ensemble des données,maisil ne s'agitpasde la
meilleuredécision, pour deux raisons:cetteméthodeprend
tropde temps,et coûteen quotiasde valeur.Pourallezdroitau
but,ilfautavoirrecoursà unesortede couchede persistance.
Maguma
Cettecouchefiguredans la listedes améliorations à apporter
de l'équipe de programmation de la bibliothequeAPllity.
Ellede.
vraitfaciliterI'int{Trationdesbasesde donnéesafinde garantir
unecertainepersistance. Un premierjet de schémad'unebase
de donnéesMySQLissude deuxcollaborateurs open source
au projetAPflityest déjà disponible(httpl/www.adoptimize.de/
glossar/mysql4. 1.11.sheme.apility.0.4.htmt).
Cetteapprochecomportetoutefoisune autredéfautplus
évident:chaqueopérationprendun certaintemps,et I'uti-

I No412006
PHPSolutions
les eneursde I'interfacede programmation
Créerun compteAdWordset s'inscrireà un accès AdWordsseronttoujoursinterceptées dans
à I'interfacede programmation la piledes eneurs,sansêtreaffichées.ll est
Vous aurez tout d'abord besoin d'un compte AdWords.Allez sur la page d'accueildu assezutilede choisirXML commeformat
site d'AdWords,puis suivez les instructionsde I'assistantde créationde compte: httpsl/ d'eneurau momentde lancerAPllityen
adwords.googIe.com/seIecUstarter/ signup/Fork- Parnature,le
tantquebibliothèque integrée.
Une fois votre compte AdWords créé et confirmé, il vous faut envoyer vos données
bancairesafin d'activervotre compte.Vos annoncesprendrontensuiteforme,et vous pou- mode SilenceSteafthMode rendradifficile
vez continueren vous inscrivantà un accèsà I'interfacede programmation. Allez sur le site à trouverles eneurs ne découlantpas de
httpst/adwords.google.com/select/ApiWelcome, puis entrez vos données de connexionau En règle gé-
I'interfacede programmation.
compte.Un assistantvous aideraensuiteà créer un compteMy ClientCenter(MCC).Vous doitgé-
nérale,le fichierPHPintermédiaire
trouverezensuitedans l'ongletintituléMy Account(Mon compte)une nouvellepage sous
le titre de AdWords APt Center (Centre de I'interfacede programmationAdWords).Votre nérerdu XMLau moinsvalide,mêmelors-
marquede développeurainsique les informationssur I'utilisation de I'interfacede program- que aucunparamètrePOSTn'estenvoyé.
mation,y comprissur les quotas,y serontaffichés.Les troistutoriauxmultimédiassuivants, Vouspouveztestercettefonctionen lançant
davantagevos premierspas avec l'interface:
disponiblesen ligne,vousfaciliteront
le fichierindépendamment. Désactivezpuis
. http!/seru ices.google.com/awp/en_us/breeze/264836/index.html réactivezle mode SilenceSfea/thMode
. http://services.google.com/awp/en _u s/breeze/267718/index.htmI pendantla sessionde déboguage peutper-
. http://services.google.com/awp/en_us/breeze/264848/index.html mettrede trouverde simplesereurs de type
pour de plus amplesinformations, n'hésitezpas à postervos questionssur le forum des vaiables non4éclarées.
développeursde I'interfacede programmation AdWords:
Fi chi er P H P
. hftp://groups.google.com/group/adwords-api
intermédiaire exemplaire
Nous allonsdécriredans cette partieun
lisateurne voit rien à l'écranpendantle Javascript.Commentdes techniquesdifié- fichier PHP intermédiaire exemplaireafin
de program- rentespeuvent-elles fonctionner ensemble ? d'éclaircir le concept fondamental. Nous
traitementréalisépar I'interface
mationAdWords.ll est impossibled'accé- L'idéeesttrèssimple.Nousavonsd'uncôté devons tout d'abord paramétrer I'en{ête de
lérerle tempsde réponsede I'interface de I'interfacede programmation AdWords,le sorte à déclarer le contenu sous le format
programmation AdWords,mais plutôt de navigateur de I'autre,et XML.À partirde maintenant,
Web de I'utilisateur noussommes
cumulerplusieurs de
requêtesde I'interface la bibliothèque APllityentreles deux.Dans entièrement liésà cette déclaration. Chaque
programmation AdWordsen une seulefois, le navigateurWeb,nousavonsun siteWeb donnée en texte simple produira une elreur
tout à fait normalcontenantdes formulaires d'analyse. La requête XML HTTP ne trou-
de manièreà pouvoircontinuerà travailler
et du texte.ChaquefoisqueI'utilisateur sou- veradonc jamais son résultat et attendra in-
utilementpendantle traitementd'une re-
quête.Une requêtepounait,par exemple, met certainesmodifications ou programme définiment. La méthode de programmation
consisterà chargerun rapportimportant, un rapport,etc.,une requêtede type XML défensiveexposéeplushautprendicitoute
pendantqu'uneautreseraitde soumettre HTTP,contenantles paramètresde la fonc- sonimportance dansla restitution desrésul-
campagnes. Malgrél'absence tionAPllitysousformede donnéesnorma- tats attendus. L'authentification est désor-
de nouvelles
les HTTPPOSI est alorslancée.Unepage maisréalisée de manière dynamique grâce
de traitementen plusieursunitésd'exécu-
tion des séquencesutilisateurs sous PHP, PHP intermédiaire analyse les données à I'objet global $authenticationcontext

une combinaison de
intelligente plusieurs POSTpuisappellela fonctionnativeAPllity ainsiquelesdonnéesHTTPPOST.En cas
techniques pounait permettred'adapterdes conespondante.Cette page intermédiaire d'eneurs,le snippetdu code intermédiaire
requêtes de de
l'interface programmationen foumit le résultatde la fonctionau format afficheun messaged'eneurde I'interface
traitementmulti-processus. XMLou JSON,de manièreà faciliterI'ana- de programmation AdWords.Lorsquetout
lyseréaliséepar le navigateur Web de I'uti- se passeconectement,I'objetAPllityresti-
APllity+ AJAX = APllitAx lisateursur la réponse.Dansla mesureoù tué campagneest alorsconvertiau format
Un des termespharede cetteannéepro- la page PHP se situesur un serveurWeb XML
bablement le plusutilisé, AJAX(acronyme ellevirtualise
(local)où APllityest installée,
pour Javascriptet XML), permet,comme en quelquesofte I'interface de programma- Sur lnternet
son nom I'indique, de transférer tion AdWords pour permettreà I'utilisateur
des don-
. Paged'accueild'APllity
nées de manière asynchrone. d'y placerplusieurs
C'est ce requêtes. - sourceforge.neU
http://google-apility.
que signifiele 'A' dans AJAX. Or, c'est . Page consacréeau projetAPllitysur
besoin. Exigences SourceForge
exactementce dont nous avons - httpst/sou rceforge.neUprojects/google-
Maisqueveutdirele'X'? La bibliothèque Afinde fairefonctionner le principeAPllitAx' apilM
APllity ne doit absolument pas être ver- . Référencesà APllity
APllityproposedes objets PHP facilement
- httpt/goog IeapiI ity.sourceforge.neUAPIIity-
convertissables en XML: beuse. En efiet, chaque alerteproduite par
Reference Standalone.html
PHP détruiraitla structureXML dans le fi- . Forumconsacréau supportd'APllity
- http://groups-beta.google.com/group/
$ s o m e A PlIi t Y O b j e c t - > t o x m l ( ) ; chierPHPintermédiaire. C'estla raisonpour
adwords-api-php
laquelleAPllity proposeun mode appelé . Page d'accueilde I'interfacede programma-
Stea/fhMode dans lequel toutes tion AdWords
Les objetsAPllitypeuventainsiêtre passés Si'Tence - httpl/www.google.com/apis/adwords/
sousformede réponseà unerequêteA"JAX. les alertes PHP et les propresmessages index.html
Restentle 'A' pourasynchrone et le'J' pour d'alertesd'AP Ilitysontdésactivés.Toutefois,

www.phpsolmag.org PHP SolutionsN" 4/2006

Вам также может понравиться