note 28951 added to function.stream-get-meta-data

From: Date: Wed, 29 Jan 2003 01:54:46 +0000
Subject: note 28951 added to function.stream-get-meta-data
Groups: php.notes 
Request: Send a blank email to php-notes+get-42957@lists.php.net to get a copy of this message
Below is a function I wrote to pull the "Last-Modified" header from a given URL. In PHP version 4.3 and above, it takes advantage of the stream_get_meta_data function, and in older version it uses a conventional GET procedure. On failure to connect to $url, it returns NULL. If the server does not return the Last-Modified header, it returns the current time. All times are returned in PHP's integer format (seconds since epoch). Use it as so: $last_modified = stream_last_modified('http://www.php.net/news.rss'); if (!is_null($last_modified)) if ($last_modified < time()-3600) //Older than an hour echo 'URL is older than an hour.'; else echo 'URL is fairly new.'; else echo 'Invalid URL!'; function stream_last_modified($url) { if (function_exists('version_compare') && version_compare(phpversion(), '4.3.0') > 0) { if (!($fp = @fopen($url, 'r'))) return NULL; $meta = stream_get_meta_data($fp); for ($j = 0; isset($meta['wrapper_data'][$j]); $j++) { if (strstr(strtolower($meta['wrapper_data'][$j]), 'last-modified')) { $modtime = substr($meta['wrapper_data'][$j], 15); break; } } fclose($fp); } else { $parts = parse_url($url); $host = $parts['host']; $path = $parts['path']; if (!($fp = @fsockopen($host, 80))) return NULL; $req = "HEAD $path HTTP/1.0\r\nUser-Agent: PHP/".phpversion()."\r\nHost: $host:80\r\nAccept: */*\r\n\r\n"; fputs($fp, $req); while (!feof($fp)) { $str = fgets($fp, 4096); if (strstr(strtolower($str), 'last-modified')) { $modtime = substr($str, 15); break; } } fclose($fp); } return isset($modtime) ? strtotime($modtime) : time(); } -- http://www.php.net/manual/en/function.stream-get-meta-data.php http://master.php.net/manage/user-notes.php?action=edit+28951 http://master.php.net/manage/user-notes.php?action=delete+28951 http://master.php.net/manage/user-notes.php?action=reject+28951

« previous php.notes (#42957) next »