Mise à jour sitemap : ping Google ?


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Mise à jour sitemap : ping Google ?

Message le Lun Mai 31, 2010 7:26

Bonjour,

Je me demande comment on peut faire un ping de Google en PHP pour appliquer http://www.google.com/support/webmasters/bin/answer.py?answer=34609&cb ... lev=answer ?

La plupart des hébergeurs interdisent, à raison, le fopen sur les fichiers distants.

Une idée ?

Merci :)


IllusionPerdu
WRInaute discret
WRInaute discret
 
Messages: 141
Inscription: 11 Mar 2006

Re: Mise à jour sitemap : ping Google ?

Message le Lun Mai 31, 2010 8:16

Bonjour,

Fonction avec les Sockets :

Code: Tout sélectionner
<?php
function pingGoogleSitemaps( $url_xml ){
   $status = 0;
   $google = 'www.google.com';
   if( $fp=@fsockopen($google, 80) )
   {
      $req =  'GET /webmasters/sitemaps/ping?sitemap=' .
              urlencode( $url_xml ) . " HTTP/1.1\r\n" .
              "Host: $google\r\n" .
              "User-Agent: Mozilla/5.0 (compatible; " .
              PHP_OS . ") PHP/" . PHP_VERSION . "\r\n" .
              "Connection: Close\r\n\r\n";
      fwrite( $fp, $req );
      while( !feof($fp) )
      {
         if( @preg_match('~^HTTP/\d\.\d (\d+)~i', fgets($fp, 128), $m) )
         {
            $status = intval( $m[1] );
            break;
         }
      }
      fclose( $fp );
   }
   return( $status );
}
?>


Sinon tu dois pouvoir le faire avec Curl... et je pense que ça dois donner une chose de ce genre là (code écrit a l'arrache ;) ):

Code: Tout sélectionner
<?php
function pingGoogleSitemaps( $url_xml ){
      $url_xml = urlencode($url_xml );
      $headers = array('Expect:', 'X-Curl-Client: ', 'X-Curl-Client-Version: ', 'X-Curl-Client-URL: ');

      $url = 'http://www.google.com/webmasters/sitemaps/ping';
      $curl_handle = curl_init();
      curl_setopt($curl_handle, CURLOPT_URL, "$url");
      curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
      curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($curl_handle, CURLOPT_POST, 1);
      curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "sitemap=$url_xml ");
      curl_setopt($curl_handle, CURLOPT_HTTPHEADER, $headers);
      $buffer = curl_exec($curl_handle);
      $info = curl_getinfo($curl_handle);
      curl_close($curl_handle);

   if( intval($info['http_code']) == 200 )
    return 1;
   else
    return 'Erreur HTTP ' . $info['http_code'];
}
?>


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Re: Mise à jour sitemap : ping Google ?

Message le Lun Mai 31, 2010 8:24

Merci beaucoup. Ta fonction PHP me va bien :)

Par contre, comment savoir si ça a bien pingué ?


IllusionPerdu
WRInaute discret
WRInaute discret
 
Messages: 141
Inscription: 11 Mar 2006

Re: Mise à jour sitemap : ping Google ?

Message le Lun Mai 31, 2010 8:35

Pour la première tu peux par exemple :
Code: Tout sélectionner
<?php
   if( 200 === ($status=pingGoogleSitemaps('http://www.example.com/sitemap.xml')) )
   echo "Ping to Google Sitemaps successful. -- Status code: $status.\n";
   else
   echo "Cannot ping/connect to Google Sitemaps. -- Status code: $status.\n";
?>


Pour la seconde :
Code: Tout sélectionner
<?php
   $RepPing = pingGoogleSitemaps('http://www.example.com/sitemap.xml');
   if( $RepPing == 1 )
   echo "Ping to Google Sitemaps successful.\n";
   else
   echo "Cannot ping/connect to Google Sitemaps. -- $RepPing.\n";
?>


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Re: Mise à jour sitemap : ping Google ?

Message le Lun Mai 31, 2010 8:45

Merci !

Bon je tente alors : Comment faire pour gagner à l'euromilion ? :mrgreen:


IllusionPerdu
WRInaute discret
WRInaute discret
 
Messages: 141
Inscription: 11 Mar 2006

Re: Mise à jour sitemap : ping Google ?

Message le Lun Mai 31, 2010 8:52

Sand doute avec quelque chose du genre :
Code: Tout sélectionner
<?php
function GagneEuromillion($Mise, $Nom) {
  if ($Nom == "IllusionPerdu") {
    return( "BRAVO : Vous avez gagnez la cagnotte !!!" );
  } else {
    return( "Dommage Vous avez perdu ! Faite passer à ".round(1000000000 / $Mise)." personnes !" );
  }
}

echo 'Grand tirrage de l\'EuroMillion '. GagneEuromillion($LaMise, $NomDuMembre);
?>


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité