com web/people: Add some caching, for a week: include/misc.php
| From: | Hannes Magnusson | Date: | Thu, 12 Dec 2013 20:29:57 +0000 |
| Subject: | com web/people: Add some caching, for a week: include/misc.php | ||
| Groups: | php.webmaster | ||
| Request: | Send a blank email to php-webmaster+get-17552@lists.php.net to get a copy of this message | ||
Commit: 8b2ea4ca2820f9c9129c4b70a0c057646fe7ed28
Author: Hannes Magnusson <bjori@mongodb.com> 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);