Retour Accueil
Fox Infographie
NOUS JOINDRE    RECHERCHE    LE BLOG    NOTRE METIER   
PHOTOS    COUPS DE COEUR   



AJAX lanceur de PHP



Bonjour,
Vous avez besoins de faires de grosses mises a jour en PHP ,
seulement CRON c' est difficile a aborder la première fois ... et même la deuxième fois ... :o
Dans certain cas il serait tout aussi efficace de lancer un PHP sur votre serveur
PHP qui tournera peut-être une journée, mais sans vous "bloquer" un micro-ordinateur ...
Voici précisément le but de ce mini-tutoriel.
Icône du chapitre

Requis

Bonne nouvelle, il vous suffit de savoir rédiger votre outil php qui sera
lancé par la méthode , objet de ce mini tutoriel c' est magique non ? :magicien:

Description de la méthode

Il vous faut utiliser le lanceur nous l' appellerons ajax_cron.php
Il devra impérativement étre sur le serveur qui héberge votre site
Pour ceux d'entre vous qui connaissez AJAX, il vous sera facile de voir simplement que ce lanceur php/AJAX
ne fait que lancer votre outil PHP sur le serveur voici donc le code du lanceur

<?php
header ( 'Content-type: text/html; charset=ISO-8859-1' );
?>
<script type= "text/javascript" >
var MonAjax ;
if ( window . XMLHttpRequest ){ MonAjax = new XMLHttpRequest ();}
else if ( window . ActiveXObject ) { MonAjax = new ActiveXObject ( 'Microsoft.XMLHTTP' );}
else {
alert ( "Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
MonAjax = false ; }
MonAjax . open ( 'POST' , "ajax_cron.php" , true );
MonAjax . onreadystatechange = function () { var Ajax = 1 ; }
MonAjax . setRequestHeader ( 'Content-type' , 'application/x-www-form-urlencoded' );
MonAjax . send ();
</script>


Donc une seule chose a faire pour vous : mettre le bon nom de votre php ICI:

<?php MonAjax . open ( 'POST' , "ajax_cron.php" , true );
?>


Lorsque votre PHP sera pret mettez les deux php sur le serveur et a chaque fois
que vous aurez besoins de réaliser votre tache

1) allez sur votre site
2) lancez votre lanceur
3) vous avez une page blanche bien sur ... alors fermez votre navigateur
quelque par dans le monde votre PHP tourne pour vous !

Rêgles a respecter pour votre outil PHP

Maintenant c'est a vous de jouer , il vous faut faire votre outil.
Vous devez veiller de très prêt a ceci:
1) votre PHP ne doit en aucun cas en appeler un autre
2) votre PHP ne doit envoyer strictement aucun echo header BOM etc...
3) par définition étant un traitement long, il y a donc un FOR ou WHILE
mettez dans votre (vos) boucles
set_time_limit(10);
Voila tout est prêt , a vos test :)
Je postes ici un exemple d'un PHP outil !
Code : PHP

<?php
$chri = "christele" ;
try
{
$bdd = new PDO ( 'mysql:host=localhost;dbname=wwwwww' , 'root' , '' );
$bdd -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION );
}
catch ( Exception $e )
{
die ( 'Erreur : ' . $e -> getMessage ());
}
for ( $a = 0 ; $a < 100000 ; $a ++ )
{
$req = $bdd -> prepare ( "SELECT * FROM 0_test WHERE pseudo= :chri " );
$req -> execute ( array ( ':chri' => $chri ));
$donnees = $req -> fetch ();
$lieu = intval ( $donnees [ 'mdp' ]) + 1 ;
$req -> closeCursor ();
$result = $bdd -> prepare ( "UPDATE 0_test SET mdp = :mdp WHERE pseudo= :chri " );
$result -> execute ( array ( ':mdp' => $lieu , ':chri' => $chri ));
$result -> closeCursor ();
set_time_limit ( 10 );
}
$bdd = NULL ;
?>



Pour terminer j'ais mis quelques remarques a lire ...


Remarques

Pour ceux qui ont le temps, quelques explications
1) le fameux set_time_limit(10);
Le seul vrais problème était que ne pouvant relancer , rappeler ou ... le PHP
nous avions ce paramètre de 30 secondes d'attente avant qu'un PHP non terminé avorte.
cette fonction est un vrais secours, c'est mon Ami Sabotage de devellopez.com
qui m'as mis sur cette piste ... que fait set_time_limit(10);
il remet le compteur des 30 secondes a zéro et recompte jusque 10 nouvelles secondes ...
ainsi la boucle se réalisant en moins de 1 seconde le PHP peux tourner trois jours si il le faut !

2) le lanceur AJAX, pour ceux qui voudraient le comprendre, posez vos questions sur le forum,
ceci n'étant pas l'objet de ce tutoriel.

3) BIEN SUR veillez que votre php ait une fin ... si non il faudrait appeler votre hébergeur
pour qu'il arrètes la tâche !

Bon courage a vous

Voila juste un outil de lancement AJAX qui résoudra je l' espères bien des petites taches
Vous aurez bien noté que vous n'avez que le nom du PHP a modifier, dans le "lanceur",
ce qui signifie que vous n'avez en fait qu'a connaître le PHP MySql pour faire votre outil,
Pas besoins de connaissances CRON ni AJAX Image utilisateur
HOP THIS HELP ...





APropos de fox Infographie   CNIL réf: 1050096 2004 © Fox-Infographie