On Wed, 3 Oct 2007, Mark wrote: > I'm currently fetching feeds about every hour (automatically in php) > but sometimes there are no new updates in a feed for 2 hours. so no i > wonder if it's possible to check the feed somehow to see if it changed > since i last fetched it and if it's the case than download it like it > should.. if it's not changed than just skip the download. > > Is this possible and how (with filemtime?)? i rather have a method > that works in php 4 and 5 (i use php 5 but alot of hosts still don't).
If you use a socket request to get the url you get to see the headers along with the file contents. > cat fsockopen.php #!/usr/bin/env php <?php $fp = fsockopen( 'destiney.com', 80, $errno, $errstr, 30 ); if( !$fp ) { echo "$errstr ($errno)\n"; } else { $out = "GET /rss HTTP/1.1\r\n"; $out .= "Host: destiney.com\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite( $fp, $out ); while( !feof( $fp ) ) echo fgets( $fp, 128 ); fclose( $fp ); } This particular request currently yields this Last-Modified header: Last-Modified: Fri, 21 Sep 2007 12:45:38 GMT This will let you develop a local cache for the rss contents and only update it when the remote file has changed. -- Greg Donald Cyberfusion Consulting http://cyberfusionconsulting.com/ -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php