summaryrefslogtreecommitdiff
path: root/lib/exe/indexer.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/exe/indexer.php')
-rw-r--r--lib/exe/indexer.php55
1 files changed, 55 insertions, 0 deletions
diff --git a/lib/exe/indexer.php b/lib/exe/indexer.php
new file mode 100644
index 000000000..fe9562d08
--- /dev/null
+++ b/lib/exe/indexer.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * DokuWiki indexer
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
+require_once(DOKU_INC.'inc/init.php');
+require_once(DOKU_INC.'inc/indexer.php');
+//close session
+session_write_close();
+
+
+$ID = cleanID($_REQUEST['id']);
+if(!$ID) sendGIF();
+
+// check if indexing needed
+$last = @filemtime(metaFN($ID,'.indexed'));
+if($last > @filemtime(wikiFN($ID))) sendGIF();
+
+// keep running
+@ignore_user_abort(true);
+
+// try to aquire a lock
+$lock = $conf['lockdir'].'/_indexer.lock';
+while(!@mkdir($lock)){
+ if(time()-@filemtime($lock) > 60*5){
+ // looks like a stale lock - remove it
+ @rmdir($lock);
+ }else{
+ sendGIF();
+ }
+}
+
+// do the work
+idx_addPage($ID);
+
+// we're finished
+io_saveFile(metaFN($id,'.indexed'),'');
+@rmdir($lock);
+sendGIF();
+
+/**
+ * Just send a 1x1 pixel blank gif to the browser and exit
+ */
+function sendGIF(){
+ header('Content-Type: image/gif');
+ print base64_decode('R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAIBTAA7');
+ exit;
+}
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :
+?>