Commit: 8b2ea4ca2820f9c9129c4b70a0c057646fe7ed28 Author: Hannes Magnusson <[email protected]> Thu, 12 Dec 2013 12:29:57 -0800 Parents: da4b9cf2c458178aeb3b205610320986b57e45c1 Branches: master
Link: http://git.php.net/?p=web/people.git;a=commitdiff;h=8b2ea4ca2820f9c9129c4b70a0c057646fe7ed28 Log: Add some caching, for a week Changed paths: M include/misc.php Diff: diff --git a/include/misc.php b/include/misc.php index d9359da..8d5e970 100644 --- a/include/misc.php +++ b/include/misc.php @@ -3,9 +3,10 @@ function getDOMNodeFrom($url, $nodename) { + $content = cached($url); $dom = new DOMDocument; $dom->preserveWhiteSpace = false; - if (@!$dom->load($url)) { + if (@!$dom->loadXML($content)) { return; } $search = $dom->getElementsByTagName($nodename); @@ -23,17 +24,13 @@ function findPHPUser($username) if (!$token) { $token = trim(file_get_contents("token")); } - $retval = @file_get_contents("https://master.php.net/fetch/user.php?username=" . $username . "&token=" . rawurlencode($token), false, $ctx); + $retval = cached("https://master.php.net/fetch/user.php?username=" . $username . "&token=" . rawurlencode($token), false, $ctx); if (!$retval) { - if (isset($http_response_header) && $http_response_header) { - list($protocol, $errcode, $errmsg) = explode(" ", $http_response_header[0], 3); - } else { - $error = error_get_last(); - // Remove the function name, arguments and all that stuff... we - // really only care about whatever comes after the last colon - $message = explode(":", $error["message"]); - $errmsg = array_pop($message); - } + $error = error_get_last(); + // Remove the function name, arguments and all that stuff... we + // really only care about whatever comes after the last colon + $message = explode(":", $error["message"]); + $errmsg = array_pop($message); error($errmsg); } $json = json_decode($retval, true); @@ -84,6 +81,23 @@ function findPEARUser($username) ); } +function cached($url, $options = false, $ctx = null) +{ + $tmpdir = sys_get_temp_dir(); + $user = sha1($url); + + $tmpfile = $tmpdir . "/" . $user; + if (file_exists($tmpfile) && filemtime($tmpfile) > strtotime("-1 week")) { + return file_get_contents($tmpfile); + } + $content = file_get_contents($url, $options, $ctx); + if ($content) { + file_put_contents($tmpfile, $content); + } + + return $content; + +} function findPHPUserProfile($username) { $opts = array("ignore_errors" => true); @@ -92,17 +106,13 @@ function findPHPUserProfile($username) if (!$token) { $token = trim(file_get_contents("token")); } - $retval = @file_get_contents("https://master.php.net/fetch/user-profile.php?username=" . $username . "&token=" . rawurlencode($token), false, $ctx); + $retval = cached("https://master.php.net/fetch/user-profile.php?username=" . $username . "&token=" . rawurlencode($token), false, $ctx); if (!$retval) { - if (isset($http_response_header) && $http_response_header) { - list($protocol, $errcode, $errmsg) = explode(" ", $http_response_header[0], 3); - } else { - $error = error_get_last(); - // Remove the function name, arguments and all that stuff... we - // really only care about whatever comes after the last colon - $message = explode(":", $error["message"]); - $errmsg = array_pop($message); - } + $error = error_get_last(); + // Remove the function name, arguments and all that stuff... we + // really only care about whatever comes after the last colon + $message = explode(":", $error["message"]); + $errmsg = array_pop($message); error($errmsg); } $json = json_decode($retval, true); -- PHP Webmaster List Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
