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

Reply via email to