[Aminet-commit] r130 - trunk/phpinclude/include

aminet-discuss at aminet.net aminet-discuss at aminet.net
Thu Apr 10 02:57:54 CEST 2008


Author: mendoza
Date: 2008-04-09 17:57:54 -0700 (Wed, 09 Apr 2008)
New Revision: 130

Modified:
   trunk/phpinclude/include/search.php
Log:
Adding caching in searches

Modified: trunk/phpinclude/include/search.php
===================================================================
--- trunk/phpinclude/include/search.php	2008-04-10 00:57:27 UTC (rev 129)
+++ trunk/phpinclude/include/search.php	2008-04-10 00:57:54 UTC (rev 130)
@@ -4,8 +4,17 @@
 
 #  $page = "Search";
 
+$cachetime = 60 * 50;
+
+function cachefile_hash($_SEARCH) {
+   global $amirepo_root;
+   $cachedir = $amirepo_root . '/cache';
+   $cachefile = $cachedir . '/' . md5(var_export($_SEARCH,true));
+   return $cachefile;
+}
+
 function do_search($_SEARCH,$search_form=0) {
-  global $myurl,$sort_url,$format;
+  global $myurl,$sort_url,$format,$cachetime;
 
   !isset($_SEARCH['arch'])?$_SEARCH['arch']="":"";
   !isset($_SEARCH['sort'])?$_SEARCH['sort']="":"";
@@ -29,6 +38,21 @@
   !isset($_SEARCH['date'])?$_SEARCH['date']="":"";
   !isset($_SEARCH['format'])?$_SEARCH['format']="":"";
 
+  $cachefile = cachefile_hash($_SEARCH);
+   if (file_exists($cachefile) ) {
+      $stat = stat($cachefile);
+      aminet_log("found cache file: $cachefile");
+      if ($stat[9] > (time() - $cachetime) 
+          || ( file_exists("$cachefile.lock") && $stat[9] > (time() - $cachetime * 2) ) ) {
+        aminet_log("fetching from cachefile: $cachefile (".$_SERVER['REQUEST_URI'].")");
+        return file_get_contents($cachefile);
+      }
+     aminet_log("$cachefile too old (".$_SERVER['REQUEST_URI'].")");
+   }
+
+  aminet_log("didn't find cachefile: $cachefile (".$_SERVER['REQUEST_URI'].")");
+  touch("$cachefile.lock");
+
   $result = "";
 
   $mtime = microtime();
@@ -390,6 +414,8 @@
   $endtime = $mtime;
   $totaltime = ($endtime - $starttime);
   $result .= sprintf("<br><br><div align=\"center\">Search finished in %f seconds</div>", $totaltime);
+  file_put_contents($cachefile, $result);
+  unlink("$cachefile.lock");
   return $result;
 }
 
@@ -491,7 +517,7 @@
       } else {
 	$indexurl = $myurl."&start=".($i*$amount);
       }
-      $num = "<a href=\"/search?$indexurl\">".($i+1)."</a>";
+      $num = "<a rel=\"nofollow\" href=\"/search?$indexurl\">".($i+1)."</a>";
       
     }
     array_push($array,$num);




More information about the Aminet-commit mailing list