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
https://forums.phpfreaks.com/topic/261471-auto-ping-for-non-blog-site/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • 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.