Jump to content

Auto ping for non blog site


violinrocker

Recommended Posts

i found a script here

Im only know a little about pings and so... my questions are

1. do I need to put the post's url on $blogUrl or do i put the root url?

2. there is something at the bottom of the page about atom- or rss-feed... do I need an rss feed for this script to work? if so, Do i just make an rss feed?

 

<?php
   // Please, edit these variables to your needs

   $blogTitle="Title Of your blog";
   $blogUrl="http://www.yourblog.url/";
   $pingListFile="pinglist.txt";
   $showDebugInfo=FALSE; // Do you want verbose output?

   // Stop editing here

   // PingRPC.php
   //
   // 2007 by Sascha Tayefeh
   // http://www.tayefeh.de
   //
   // This is a PHP5-based XML-RPC ping script. It reads a one-column
   // fully qualified URL-list from a file ($pingListFile). Here is
   // an example how this file must look like:
   // ----------------------
   // http://rpc.icerocket.com:10080/
   // http://rpc.pingomatic.com/
   // http://rpc.technorati.com/rpc/ping
   // http://rpc.weblogs.com/RPC2
   // ----------------------

   $replacementCount=0; 
   $userAgent="pingrpc.php by tayefeh";

   // Read pinglist file. Must contain one fully qualified URL
   // (e.g: http://rpc.technorati.com/rpc/ping) PER LINE (-> 
   // delimiter is an ASCII-linebreak)
   $fp=fopen($pingListFile,"r");
   while ( ! feof( $fp) )
   {
      $line = trim(fgets( $fp, 4096));
      // get the hostname
      $host=$line; // Make a copy of $line
      $host=preg_replace('/^.*http:\/\//','',$host); // Delete anything before http://
      $host=preg_replace('/\/.*$/','',$host); // Delete anything after behind the hostname

      // get the path 
      $path=$line; // Make another copy of $line
      $path=preg_replace('/^.*http:\/\/[a-zA-Z0-9\-_\.]*\.[a-zA-Z]{1,3}\//','',$path,-1,$replacementCount); // Delete anything before the path
      if(!$replacementCount) $path=''; // if there was no replacement (i.e. no explicit path), act appropiately
      if($host) $myList[$host]=$path;
   }
   echo "<h1>Ping process started</h1>";

   echo "<p>Reading URLs from file $pingListFile: ";
   echo count($myList)." urls read.</p>";

   // Use DOM to create the XML-File
   $xml= new DOMDocument('1.0');
   $xml->formatOutput=true;
   $xml->preserveWhiteSpace=false;
   $xml->substituteEntities=false;

   // Create the xml structure
   $methodCall=$xml->appendChild($xml->createElement('methodCall'));
   $methodName=$methodCall->appendChild($xml->createElement('methodName'));
   $params=$methodCall->appendChild($xml->createElement('params'));
   $param[1]=$params->appendChild($xml->createElement('param'));
   $value[1]=$param[1]->appendChild($xml->createElement('value'));
   $param[2]=$params->appendChild($xml->createElement('param'));
   $value[2]=$param[2]->appendChild($xml->createElement('value'));

   // Set the node values
   $methodName->nodeValue="weblogUpdates.ping";
   $value[1]->nodeValue=$blogTitle;
   $value[2]->nodeValue=$blogUrl;

   $xmlrpcReq = $xml->saveXML(); // Write the document into a string
   $xmlrpcLength = strlen( $xmlrpcReq ); // Get the string length.

   echo "Here's the xml-message I generated (size: $xmlrpcLength bytes):";

   echo "\n<pre>\n";
   echo htmlentities($xmlrpcReq);
   echo "</pre>";

   echo "<dl>";

   // Proceed every link read from file
   foreach ( $myList as $host => $path)
   {
      if($showDebugInfo) echo "<hr/>";

      echo "<dt><strong>Pinging host: $host  </strong>";
      $httpReq  = "POST /" . $path . " HTTP/1.0\r\n";
      $httpReq .= "User-Agent: " . $userAgent. "\r\n";
      $httpReq .= "Host: " . $host . "\r\n";
      $httpReq .= "Content-Type: text/xml\r\n";
      $httpReq .= "Content-length: $xmlrpcLength\r\n\r\n";
      $httpReq .= "$xmlrpcReq\r\n";
      echo "</dt>";

      if($showDebugInfo)
      {
 echo "<dd><strong>Request:</strong><pre><span style=\"color: #cc9900\">".htmlentities($httpReq)."</span></pre>";
 echo "<strong>Answer</strong>:<span style=\"color: #99cc00\"><pre>";
      }

      // Actually, send ping
      if ( $pinghandle = @fsockopen( $host, 80 ) )
      {
 @fputs( $pinghandle, $httpReq );
 while ( ! feof( $pinghandle ) )
 { 
    $pingresponse = @fgets( $pinghandle, 128 );
    if($showDebugInfo) echo htmlentities($pingresponse);
 }
 @fclose( $pinghandle );
      }
      if($showDebugInfo) echo "</span></pre></dd>";
   }
   echo "</dl>";
   echo "<p>FINISHED</p>";

?> 

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.