renamed php version of data access module
authorStephen Soltesz <soltesz@cs.princeton.edu>
Mon, 4 Aug 2008 16:43:23 +0000 (16:43 +0000)
committerStephen Soltesz <soltesz@cs.princeton.edu>
Mon, 4 Aug 2008 16:43:23 +0000 (16:43 +0000)
www/database.php [new file with mode: 0644]

diff --git a/www/database.php b/www/database.php
new file mode 100644 (file)
index 0000000..bef3e03
--- /dev/null
@@ -0,0 +1,67 @@
+
+<?php 
+
+// PICKLE_PATH="/home/soltesz/research/planetlab/monitor3/pdb";
+define("PICKLE_PATH", "pdb");
+
+class Pickle
+{
+       public function load($name)
+       {
+               if ( ! $this->exists("production." . $name) )
+               {
+                       print "Exception: No such file %s" . $name . "\n";
+                       return NULL;
+               }
+               $name = "production." . $name;
+               $fname = $this->__file($name);
+               $o = unserialize(file_get_contents($fname));
+
+               return $o;
+       }
+       public function dump($name, $obj)
+       {
+               if ( ! file_exists(PICKLE_PATH) )
+               {
+                       if ( ! mkdir(PICKLE_PATH, 0777, True) )
+                       {
+                               print "Exception: Unable to create directory :" . PICKLE_PATH . "\n";
+                       }
+               }
+               $name = "production." . $name;
+               $fname = $this->__file($name);
+
+               return file_put_contents($fname, serialize($obj));
+       }
+       private function __file($name)
+       {
+               return sprintf("%s/%s.phpserial", PICKLE_PATH, $name);
+       }
+
+       public function exists($name)
+       {
+               return file_exists($this->__file($name));
+       }
+
+       public function remove($name)
+       {
+               return unlink($this->__file($name));
+       }
+
+       public function if_cached_else($cond, $name, $function)
+       {
+               if ( $cond and $this->exists("production.%s" % $name) )
+               {
+                       $o = $this->load($name);
+               } else {
+                       $o = $function();
+                       if ($cond)
+                       {
+                               $this->dump($name, $o); # cache the object using 'name'
+                       }
+               }
+               return o;
+       }
+}
+
+?>