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

Reply via email to