You are viewing a plain text version of this content. The canonical link for it is here.
Posted to olio-dev@incubator.apache.org by Shanti Subramanyam <Sh...@Sun.COM> on 2009/01/13 02:41:57 UTC

Re: svn commit: r733989 - in /incubator/olio/webapp/php/trunk: classes/ etc/ nbproject/ public_html/

Akara - do we want the nbproject files ?

Shanti

akara@apache.org wrote:
> Author: akara
> Date: Mon Jan 12 17:53:50 2009
> New Revision: 733989
>
> URL: http://svn.apache.org/viewvc?rev=733989&view=rev
> Log:
> Fix for issue OLIO-3 and OLIO-30:
> - Fix for OLIO-3 submitted by Damien Cooke
> - Fix for OLIO-30 - added database selection mechanism and changed all write transaction to write to the write instance of the DB connection obtained via DBConnection::getWriteInstance();
>
> Added:
>     incubator/olio/webapp/php/trunk/nbproject/   (with props)
>     incubator/olio/webapp/php/trunk/nbproject/project.properties
>     incubator/olio/webapp/php/trunk/nbproject/project.xml
> Modified:
>     incubator/olio/webapp/php/trunk/classes/DBConnection.php
>     incubator/olio/webapp/php/trunk/classes/MemCached.php
>     incubator/olio/webapp/php/trunk/classes/ODBCConnection.php
>     incubator/olio/webapp/php/trunk/classes/PDOConnection.php
>     incubator/olio/webapp/php/trunk/etc/config.php
>     incubator/olio/webapp/php/trunk/public_html/addAttendee.php
>     incubator/olio/webapp/php/trunk/public_html/addDeleteFriend.php
>     incubator/olio/webapp/php/trunk/public_html/addEventResult.php
>     incubator/olio/webapp/php/trunk/public_html/addPersonResult.php
>     incubator/olio/webapp/php/trunk/public_html/approveFriendship.php
>     incubator/olio/webapp/php/trunk/public_html/deleteAttendee.php
>     incubator/olio/webapp/php/trunk/public_html/deleteCommentsRating.php
>     incubator/olio/webapp/php/trunk/public_html/deleteEvent.php
>     incubator/olio/webapp/php/trunk/public_html/events.php
>     incubator/olio/webapp/php/trunk/public_html/index.php
>     incubator/olio/webapp/php/trunk/public_html/rejectInvite.php
>     incubator/olio/webapp/php/trunk/public_html/revokeInvite.php
>
> Modified: incubator/olio/webapp/php/trunk/classes/DBConnection.php
> URL: http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/classes/DBConnection.php?rev=733989&r1=733988&r2=733989&view=diff
> ==============================================================================
> --- incubator/olio/webapp/php/trunk/classes/DBConnection.php (original)
> +++ incubator/olio/webapp/php/trunk/classes/DBConnection.php Mon Jan 12 17:53:50 2009
> @@ -17,11 +17,37 @@
>   * limitations under the License.
>   */ 
>      
> -abstract class DBConnection
> -{
> +abstract class DBConnection {
> +
> +    var $writeInstance;
> +    var $dbTarget;
> +
> +
>      static function getInstance() {
>          $classname = Web20::$config['dbDriver'] . 'Connection';
> -        return new $classname;
> +        $instance = new $classname;
> +        $instance->writeInstance = false;
> +        return $instance;
> +    }
> +
> +    static function getWriteInstance() {
> +        $classname = Web20::$config['dbDriver'] . 'Connection';
> +        $instance = new $classname;
> +        $instance->writeInstance = true;
> +        return $instance;
> +    }
> +
> +    function selectInstance() {
> +        $this->dbTarget = Web20::$config['dbTarget'];
> +        if (is_array($this->dbTarget)) {
> +            if ($this->writeInstance || count($this->dbTarget) == 1) {
> +                $this->dbTarget = $this->dbTarget[0];
> +            } else {
> +                $idx = (getmypid() % (count($this->dbTarget) - 1)) + 1;
> +                // $idx = rand(1, count($this->dbTarget) - 1);
> +                $this->dbTarget = $this->dbTarget[$idx];
> +            }
> +        }
>      }
>      
>      abstract function query();
>
> Modified: incubator/olio/webapp/php/trunk/classes/MemCached.php
> URL: http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/classes/MemCached.php?rev=733989&r1=733988&r2=733989&view=diff
> ==============================================================================
> --- incubator/olio/webapp/php/trunk/classes/MemCached.php (original)
> +++ incubator/olio/webapp/php/trunk/classes/MemCached.php Mon Jan 12 17:53:50 2009
> @@ -68,18 +68,15 @@
>  	    $updateSema = $key . 'UpdateSema';
>  	    if (!$this->memcache->get($updateSema)) {
>  	        $updateLock = $key . 'UpdateLock';
> -	        if (!$this->memcache->get($updateLock)) {
> -	            $hostPid = php_uname('n') . ':' . getmypid();
> -	            // The updateLock times out in 5 secs.
> -	            $this->memcache->set($updateLock, $hostPid, 0, 5);
> -	            if ($this->memcache->get($updateLock) == $hostPid) {
> -                        error_log('Verified updateLock');
> -	                return true;
> -                    }
> -	        }
> +	        $hostPid = php_uname('n') . ':' . getmypid();
> +            if ($this->memcache->add($updateLock, $hostPid, 0, 5)) {
> +                error_log($hostPid." obtained ".$updateLock);
> +                return true;
> +            }
>  	    }
>  	    return false;
> -	}
> +    }
> +
>  	
>  	function doneRefresh($key, $timeToNextRefresh) {
>  	    $updateSema = $key . 'UpdateSema';
> @@ -90,6 +87,7 @@
>  	    	                    ' not locked by this process!');
>  	    $this->memcache->set($updateSema, 1, 0, $timeToNextRefresh);
>  	    $this->memcache->delete($updateLock);
> +        error_log($hostPid." released ".$updateLock);
>  	}
>  }
>  ?>
>
> Modified: incubator/olio/webapp/php/trunk/classes/ODBCConnection.php
> URL: http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/classes/ODBCConnection.php?rev=733989&r1=733988&r2=733989&view=diff
> ==============================================================================
> --- incubator/olio/webapp/php/trunk/classes/ODBCConnection.php (original)
> +++ incubator/olio/webapp/php/trunk/classes/ODBCConnection.php Mon Jan 12 17:53:50 2009
> @@ -21,6 +21,18 @@
>  
>      var $connection;
>  
> +    private function ensureConnection() {
> +        if (!isset($this->dbTarget)) {
> +            $this->selectInstance();
> +        }
> +    	if (!isset($this->connection)) {
> +            $this->connection = odbc_connect($this->dbTarget,
> +                Web20::$config['dbUser'], Web20::$config['dbPass']);
> +            if (is_resource($this->connection))
> +                throw new Exception("Unable to connect ".$this->dbTarget."!");
> +        }
> +    }
> +
>      function query() {
>      	if (func_num_args() > 1) {
>      	    $args = func_get_args();
> @@ -30,13 +42,7 @@
>      	} else {
>      		$sql = func_get_arg(0);
>      	}
> -    	if (!isset($this->connection)) {
> -            $this->connection = odbc_connect(Web20::$config['dbTarget'],
> -                Web20::$config['dbUser'], Web20::$config['dbPass']);
> -            if (is_resource($this->connection))
> -                throw new Exception("Unable to connect " .
> -                                     Web20::$config['dbTarget']."!");
> -        }
> +        $this->ensureConnection();
>          if (isset($args)) {
>          	error_log("You are using prepared statements. This is extremely slow!");
>          	$result = odbc_prepare($this->connection, $sql);
> @@ -65,13 +71,7 @@
>      	} else {
>      		$sql = func_get_arg(0);
>      	}
> -    	if (!isset($this->connection)) {
> -            $this->connection = odbc_connect(Web20::$config['dbTarget'],
> -                Web20::$config['dbUser'], Web20::$config['dbPass']);
> -            if (!$this->connection)
> -                throw new Exception("Unable to connect " .
> -                                     Web20::$config['dbTarget'] . "!");
> -        }
> +        $this->ensureConnection();
>          if (isset($args)) {
>          	$result = odbc_prepare($this->connection, $sql);
>          	if (!odbc_execute($result, $args))
>
> Modified: incubator/olio/webapp/php/trunk/classes/PDOConnection.php
> URL: http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/classes/PDOConnection.php?rev=733989&r1=733988&r2=733989&view=diff
> ==============================================================================
> --- incubator/olio/webapp/php/trunk/classes/PDOConnection.php (original)
> +++ incubator/olio/webapp/php/trunk/classes/PDOConnection.php Mon Jan 12 17:53:50 2009
> @@ -22,16 +22,18 @@
>      var $connection;
>      
>      private function ensureConnection() {
> +        if (!isset($this->dbTarget)) {
> +            $this->selectInstance();
> +        }
>      	if (!isset($this->connection)) {
> -            $this->connection = new PDO(Web20::$config['dbTarget'],
> +            $this->connection = new PDO($this->dbTarget,
>                  Web20::$config['dbUser'], Web20::$config['dbPass'], 
>                  array(PDO::ATTR_PERSISTENT => true));
>              $this->connection->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
>              $this->connection->setAttribute( // throw exception on error.
>                  PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);                
>              if (!$this->connection)
> -                throw new Exception("Unable to connect " .
> -                                     Web20::$config['dbTarget']."!");
> +                throw new Exception("Unable to connect " . $this->dbTarget."!");
>          }    	
>      }
>      
>
> Modified: incubator/olio/webapp/php/trunk/etc/config.php
> URL: http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/etc/config.php?rev=733989&r1=733988&r2=733989&view=diff
> ==============================================================================
> --- incubator/olio/webapp/php/trunk/etc/config.php (original)
> +++ incubator/olio/webapp/php/trunk/etc/config.php Mon Jan 12 17:53:50 2009
> @@ -23,6 +23,10 @@
>  
>  // $web20config['dbTarget'] = 'myodbc3'; // ODBC target in odbc.ini.
>  $web20config['dbTarget'] = 'mysql:host=localhost;dbname=web20load'; // PDO target.
> +// For master/slave clusters, specify dbTarget as an array, listing the master first.
> +// $web20config['dbTarget'] = array('mysql:host=master;dbname=web20load',
> +//                                  'mysql:host=slave1;dbname=web20load',
> +//                                  'mysql:host=slave2;dbname=web20load');
>  
>  $web20config['dbUser'] = 'web20'; // DB user name.
>  
>
> Propchange: incubator/olio/webapp/php/trunk/nbproject/
> ------------------------------------------------------------------------------
> --- svn:ignore (added)
> +++ svn:ignore Mon Jan 12 17:53:50 2009
> @@ -0,0 +1 @@
> +private
>
> Added: incubator/olio/webapp/php/trunk/nbproject/project.properties
> URL: http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/nbproject/project.properties?rev=733989&view=auto
> ==============================================================================
> --- incubator/olio/webapp/php/trunk/nbproject/project.properties (added)
> +++ incubator/olio/webapp/php/trunk/nbproject/project.properties Mon Jan 12 17:53:50 2009
> @@ -0,0 +1,6 @@
> +include.path=${php.global.include.path}
> +source.encoding=UTF-8
> +src.dir=.
> +tags.asp=false
> +tags.short=true
> +web.root=.
>
> Added: incubator/olio/webapp/php/trunk/nbproject/project.xml
> URL: http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/nbproject/project.xml?rev=733989&view=auto
> ==============================================================================
> --- incubator/olio/webapp/php/trunk/nbproject/project.xml (added)
> +++ incubator/olio/webapp/php/trunk/nbproject/project.xml Mon Jan 12 17:53:50 2009
> @@ -0,0 +1,9 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<project xmlns="http://www.netbeans.org/ns/project/1">
> +    <type>org.netbeans.modules.php.project</type>
> +    <configuration>
> +        <data xmlns="http://www.netbeans.org/ns/php-project/1">
> +            <name>Olio PHP Application</name>
> +        </data>
> +    </configuration>
> +</project>
>
> Modified: incubator/olio/webapp/php/trunk/public_html/addAttendee.php
> URL: http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/addAttendee.php?rev=733989&r1=733988&r2=733989&view=diff
> ==============================================================================
> --- incubator/olio/webapp/php/trunk/public_html/addAttendee.php (original)
> +++ incubator/olio/webapp/php/trunk/public_html/addAttendee.php Mon Jan 12 17:53:50 2009
> @@ -23,19 +23,23 @@
>   */
>  session_start();
>  require_once("../etc/config.php");
> -$connection = DBConnection::getInstance();
>  $se = $_REQUEST['id'];
>  $username = $HTTP_SESSION_VARS["uname"];
> -if(!is_null($username)){
> +if (!is_null($username)) {
> +    $connection = DBConnection::getWriteInstance();
>      $checkuserIfAttending = "select count(username) as count from PERSON_SOCIALEVENT where socialeventid = '$se' and username = '$username'";
>      $result = $connection->query($checkuserIfAttending);
>      $row = $result->getArray();
>      $userExists = $row['count'];
> -    if($userExists <= 0){
> +    if ($userExists <= 0) {
>          $insertuser = "insert into PERSON_SOCIALEVENT values('$username','$se')";
>          $connection->exec($insertuser);
>      }
>  }
> +
> +if (!isset($connection)) { // If connection not there, we're read-only.
> +    $connection = DBConnection::getInstance();
> +}
>  $listquery = "select username from PERSON_SOCIALEVENT where socialeventid = '$se'";
>  $listqueryresult = $connection->query($listquery);
>  $username = $HTTP_SESSION_VARS["uname"];
>
> Modified: incubator/olio/webapp/php/trunk/public_html/addDeleteFriend.php
> URL: http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/addDeleteFriend.php?rev=733989&r1=733988&r2=733989&view=diff
> ==============================================================================
> --- incubator/olio/webapp/php/trunk/public_html/addDeleteFriend.php (original)
> +++ incubator/olio/webapp/php/trunk/public_html/addDeleteFriend.php Mon Jan 12 17:53:50 2009
> @@ -24,7 +24,7 @@
>      
>  session_start();
>  require_once("../etc/config.php");
> -$connection = DBConnection::getInstance();
> +$connection = DBConnection::getWriteInstance();
>  $friends = Users_Controller::getInstance();
>  $person = $_REQUEST['person'];
>  $friend = $_REQUEST['friend'];
>
> Modified: incubator/olio/webapp/php/trunk/public_html/addEventResult.php
> URL: http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/addEventResult.php?rev=733989&r1=733988&r2=733989&view=diff
> ==============================================================================
> --- incubator/olio/webapp/php/trunk/public_html/addEventResult.php (original)
> +++ incubator/olio/webapp/php/trunk/public_html/addEventResult.php Mon Jan 12 17:53:50 2009
> @@ -19,7 +19,7 @@
>      
>  session_start();    
>  require_once("../etc/config.php");
> -$connection = DBConnection::getInstance();
> +$connection = DBConnection::getWriteInstance();
>  
>  // 1. Get data from submission page.
>  	$description=$_POST['description'];
>
> Modified: incubator/olio/webapp/php/trunk/public_html/addPersonResult.php
> URL: http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/addPersonResult.php?rev=733989&r1=733988&r2=733989&view=diff
> ==============================================================================
> --- incubator/olio/webapp/php/trunk/public_html/addPersonResult.php (original)
> +++ incubator/olio/webapp/php/trunk/public_html/addPersonResult.php Mon Jan 12 17:53:50 2009
> @@ -18,7 +18,7 @@
>   */ 
>          
>  require_once("../etc/config.php");
> -$connection = DBConnection::getInstance();
> +$connection = DBConnection::getWriteInstance();
>  
>  if(isset($_POST['addpersonsubmit'])) {
>  	//insert into person table using the data from addPerson page
>
> Modified: incubator/olio/webapp/php/trunk/public_html/approveFriendship.php
> URL: http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/approveFriendship.php?rev=733989&r1=733988&r2=733989&view=diff
> ==============================================================================
> --- incubator/olio/webapp/php/trunk/public_html/approveFriendship.php (original)
> +++ incubator/olio/webapp/php/trunk/public_html/approveFriendship.php Mon Jan 12 17:53:50 2009
> @@ -23,7 +23,7 @@
>   */    
>  session_start();
>  require_once("../etc/config.php");
> -$connection = DBConnection::getInstance();
> +$connection = DBConnection::getWriteInstance();
>  $friends = Users_Controller::getInstance();
>  $person = $_REQUEST['person'];
>  $friend = $_REQUEST['friend'];
>
> Modified: incubator/olio/webapp/php/trunk/public_html/deleteAttendee.php
> URL: http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/deleteAttendee.php?rev=733989&r1=733988&r2=733989&view=diff
> ==============================================================================
> --- incubator/olio/webapp/php/trunk/public_html/deleteAttendee.php (original)
> +++ incubator/olio/webapp/php/trunk/public_html/deleteAttendee.php Mon Jan 12 17:53:50 2009
> @@ -25,13 +25,17 @@
>      
>  session_start();
>  require_once("../etc/config.php");
> -$connection = DBConnection::getInstance();
>  $se = $_REQUEST['id'];
>  $username = $HTTP_SESSION_VARS["uname"];
>  if(!is_null($username)){
> +    $connection = DBConnection::getWriteInstance();
>      $deleteuser = "delete from PERSON_SOCIALEVENT where username='$username' and socialeventid='$se'";
>      $connection->exec($deleteuser);
>  }
> +
> +if (!isset($connection)) {
> +    $connection = DBConnection::getInstance();
> +}
>  $listquery = "select username from PERSON_SOCIALEVENT where socialeventid = '$se'";
>  $listqueryresult = $connection->query($listquery);
>  $username = $HTTP_SESSION_VARS["uname"];
>
> Modified: incubator/olio/webapp/php/trunk/public_html/deleteCommentsRating.php
> URL: http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/deleteCommentsRating.php?rev=733989&r1=733988&r2=733989&view=diff
> ==============================================================================
> --- incubator/olio/webapp/php/trunk/public_html/deleteCommentsRating.php (original)
> +++ incubator/olio/webapp/php/trunk/public_html/deleteCommentsRating.php Mon Jan 12 17:53:50 2009
> @@ -25,7 +25,7 @@
>  
>  session_start();
>  require_once("../etc/config.php");
> -$connection = DBConnection::getInstance();
> +$connection = DBConnection::getWriteInstance();
>  $events = Events_Controller::getInstance();
>  $dateFormat = "l,  F j,  Y,  h:i A";
>  $commentid = $_REQUEST['commentid'];
>
> Modified: incubator/olio/webapp/php/trunk/public_html/deleteEvent.php
> URL: http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/deleteEvent.php?rev=733989&r1=733988&r2=733989&view=diff
> ==============================================================================
> --- incubator/olio/webapp/php/trunk/public_html/deleteEvent.php (original)
> +++ incubator/olio/webapp/php/trunk/public_html/deleteEvent.php Mon Jan 12 17:53:50 2009
> @@ -24,7 +24,7 @@
>   */ 
>  session_start();
>  require_once("../etc/config.php");
> -$connection = DBConnection::getInstance();
> +$connection = DBConnection::getWriteInstance();
>  $se = $_REQUEST['socialEventID'];
>  $deleteEvent = "delete from SOCIALEVENT where socialeventid='$se'";
>  $connection->exec($deleteEvent);
>
> Modified: incubator/olio/webapp/php/trunk/public_html/events.php
> URL: http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/events.php?rev=733989&r1=733988&r2=733989&view=diff
> ==============================================================================
> --- incubator/olio/webapp/php/trunk/public_html/events.php (original)
> +++ incubator/olio/webapp/php/trunk/public_html/events.php Mon Jan 12 17:53:50 2009
> @@ -28,7 +28,12 @@
>  $comments = $_POST['comments'];
>  $cid = $_POST['editingcid'];
>  $editcomments = $_POST['editcomments'];
> -$connection = DBConnection::getInstance();
> +if (isset($_POST['commentsratingsubmit']) || 
> +    (isset($_POST['editcommentsratingsubmit']) && isset($_POST['editingcid']))) {
> +    $connection = DBConnection::getWriteInstance();
> +} else {
> +    $connection = DBConnection::getInstance();
> +}
>  $tagslist = Tags_Controller::getInstance();
>  $events = Events_Controller::getInstance();
>  $username = $HTTP_SESSION_VARS["uname"];
> @@ -80,11 +85,10 @@
>  }
>  unset($listqueryresult);
>  
> -$editCRforCid = $_POST['editcommentsratingsubmit'].$cid;
>  if (isset($_POST['commentsratingsubmit'])) {
>  	 $insertSql = "insert into COMMENTS_RATING (username,socialeventid,comments,ratings) values ('$username','$se','$comments','$rating')";
>          $connection->exec($insertSql);
> -}else if (isset($editCRforCid)) {
> +} else if (isset($_POST['editcommentsratingsubmit']) && isset($_POST['editingcid'])) {
>  	 $updateSql = "update COMMENTS_RATING set comments='$editcomments', ratings='$rating' where username='$username' and socialeventid='$se' and commentid='$cid'";
>           $connection->exec($updateSql);
>  }
>
> Modified: incubator/olio/webapp/php/trunk/public_html/index.php
> URL: http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/index.php?rev=733989&r1=733988&r2=733989&view=diff
> ==============================================================================
> --- incubator/olio/webapp/php/trunk/public_html/index.php (original)
> +++ incubator/olio/webapp/php/trunk/public_html/index.php Mon Jan 12 17:53:50 2009
> @@ -24,22 +24,23 @@
>   */
>  
>  session_start();
> -require_once("../etc/config.php");
> -$connection = DBConnection::getInstance();
> -$eventlist = Events_Controller::getInstance();
> -$tagcloud = Tags_Controller::getInstance();
> -$url = RequestUrl::getInstance();
> +require("../etc/config.php");
> +
>  $signedinuser = $HTTP_SESSION_VARS["uname"];
>  $page= $_REQUEST['page'];
>  $flag = $_REQUEST['flag'];
>  
> +$url = RequestUrl::getInstance();
> +
>  $href = $url->getGetRequest();
> -if(!is_null($page)){
> -$href = substr($href, 0, strrpos($href,"&"));
> -}
> +if(!is_null($page)) {
> +    $href = substr($href, 0, strrpos($href,"&"));
> +} // else {
> +  //  error_log('$page is null.',0);
> +  //}
>  
> -if($href==""){
> -$href = "?";
> +if($href=="") {
> +    $href = "?";
>  }
>  
>  if(!is_null($page)){
> @@ -53,47 +54,185 @@
>      $next_page = $HTTP_SESSION_VARS["currentpage"] + 1;
>      $offset = ($page * 10) - 10;
>      if($offset < 0) {
> -    $offset = 0;
> +        $offset = 0;
>      }
>      if($prev_page < 0) {
> -    $prev_page = 1;
> +        $prev_page = 1;
>      }
>      if($next_page >  $numPages) {
> -    $next_page = $numPages;
> +        $next_page = $numPages;
>      }
> -}else{
> +    $cacheType = 0;
> +} else {
> +    // error_log('$page is still null.',0);
>      $zipcode = $_REQUEST['zipcode'];
>      $order = $_REQUEST['order'];
>      $m= $_REQUEST['month'];
>      $d= $_REQUEST['day'];
>      $y= $_REQUEST['year'];
>  
> -    if(!is_null($_REQUEST['month']) && !is_null($_REQUEST['day'])  && !is_null($_REQUEST['year']) ){
> -    $eventdate= $y."-".$m."-".$d;
> +    if(!is_null($_REQUEST['month']) && !is_null($_REQUEST['day'])  &&
> +            !is_null($_REQUEST['year'])) {
> +        $eventdate= $y."-".$m."-".$d;
> +    }    
> +    if (is_null($zipcode) && is_null($order) &&
> +            !isset($eventdate)) {
> +        //if (is_null($signedinuser)) { // Get whole page if not logged in...
> +        if($HTTP_SESSION_VARS["uname"] == ''){
> +            $cacheType = 2;
> +        } else { // And just the page content if logged in.
> +            $cacheType = 1;
> +        }
> +    } else {
> +        $HTTP_SESSION_VARS["eventdate"]= $eventdate;
> +        $HTTP_SESSION_VARS["zipcode"] = $zipcode;
> +        $HTTP_SESSION_VARS["order"] = $order;
> +
> +        $connection = DBConnection::getInstance();
> +        $eventlist = Events_Controller::getInstance();
> +        $numPages  = $eventlist->getNumPages($zipcode,$eventdate,$connection);
> +        $tagcloud = Tags_Controller::getInstance();
> +        $HTTP_SESSION_VARS["numPages"] = $numPages;
> +        // error_log("numPages = $numPages",0);
> +        $cacheType = 0;
>      }
> -    $HTTP_SESSION_VARS["eventdate"]= $eventdate;
> -    $HTTP_SESSION_VARS["zipcode"] = $zipcode;
> -    $HTTP_SESSION_VARS["order"] = $order;
> -    $numPages  = $eventlist->getNumPages($zipcode,$eventdate,$connection);
> -    $HTTP_SESSION_VARS["numPages"] = $numPages;
> -
>      $prev_page = 1;
>      $next_page = 2;
>      $curr_page = 1;
>      $offset = 0;
>      session_unregister ("currentpage");
>  }
> -$indexEvents = $eventlist->getIndexEvents($zipcode,$order,$eventdate,$offset,null,$signedinuser,$connection);
>  
> -ob_start();
> -require("../views/paginate.php");
> -$paginateView = ob_get_clean();
> -
> -ob_start();
> -require("../views/index.php");
> -$fillContent = ob_get_clean();
> -if($flag == "authenticated"){
> -$fillMessage ="<font color=green>Successfully logged in!</font>";
> +switch ($cacheType) {
> +    case 0: noCachePage(); break;
> +    case 1: contentCachePage(); break;
> +    case 2: fullCachePage();
> +}
> +
> +
> +function fullCachePage() {
> +    // error_log('fullCachePage Called',0);
> +    global $signedinuser, $page, $flag, $url, $href, $eventdate, $zipcode;
> +    global $order, $numPages, $curr_page, $prev_page, $next_page, $offset;
> +    global $HTTP_SESSION_VARS;
> +
> +    // error_log('Accesssing Cache subsystem to collect the page if possible.',0);
> +    $cache = CacheSystem::getInstance();
> +    $pageContent = $cache->get('Home');
> +    // error_log("Checking the Cache status for logged in and normal Home pages",0);
> +    if ($pageContent != '') {
> +        echo $pageContent;
> +        // error_log("Cache hit for Home page...",0);
> +    }
> +
> +    $needsRefresh = false;
> +    for (;;) {
> +        // error_log('refresh logic accessed.');
> +        if ($cache->needsRefresh('Home')) {
> +            $needsRefresh = true;
> +            // error_log('Home needs refresh.');
> +            break;
> +        } else if ($pageContent == '') {
> +            error_log('index.php waiting for cache.');
> +            usleep(200000);
> +            $pageContent = $cache->get('Home');
> +            if ($pageContent != '') {
> +                echo $pageContent;
> +                break;
> +            } 
> +        } else {
> +            // error_log('.');
> +            break;
> +        }
> +    }
> +
> +    if ($needsRefresh) {
> +        // error_log("Regenerating page................");
> +        $connection = DBConnection::getInstance();
> +        $eventlist = Events_Controller::getInstance();
> +        $numPages  = $eventlist->getNumPages($zipcode,$eventdate,$connection);
> +        $indexEvents = $eventlist->getIndexEvents($zipcode,$order,$eventdate,
> +                $offset,null,$signedinuser,$connection);
> +        $tagcloud = Tags_Controller::getInstance();
> +
> +        ob_start();
> +        require("../views/paginate.php");
> +        $paginateView = ob_get_clean();
> +
> +        ob_start();
> +        require("../views/index.php");
> +        $fillContent = ob_get_clean();
> +
> +        ob_start();
> +
> +        require("../views/site.php");
> +
> +        // error_log('refreshing cache contents',0);
> +        $newPageContent = ob_get_contents();
> +        $cache->set('Home', $newPageContent, 0, 0);
> +        $cache->set('HomeContent', $fillContent, 0, 0);
> +        $cache->doneRefresh('Home', 300);
> +
> +        if ($pageContent == '') { // Not displayed yet, just display now.
> +            // error_log("Display newly generated page");
> +            ob_end_flush();
> +        } else {
> +            // error_log("Display of cache generated page has occured");
> +            ob_end_clean(); // Otherwise just don't display the new one.
> +        }
> +    }
> +}
> +
> +function contentCachePage() {
> +    // error_log('ContentCachePage Called',0);
> +    global $signedinuser, $page, $flag, $url, $href, $eventdate, $zipcode;
> +    global $order, $numPages, $curr_page, $prev_page, $next_page, $offset;
> +    global $HTTP_SESSION_VARS;
> +
> +    $cache = CacheSystem::getInstance();
> +    for (;;) {
> +        $fillContent = $cache->get('HomeContent');
> +        if ($fillContent != '') {
> +            break;
> +        }
> +        usleep(20000);
> +        error_log('Retry loading fillContent from cache.');
> +    }
> +
> +    if ($flag == "authenticated") {
> +        $fillMessage ="<font color=green>Successfully logged in!</font>";
> +    }
> +    require("../views/site.php");
> +}
> +
> +function noCachePage() {
> +    // error_log('noCachePage Called',0);
> +    global $signedinuser, $page, $flag, $url, $href, $eventdate, $zipcode;
> +    global $order, $numPages, $curr_page, $prev_page, $next_page, $offset;
> +    global $HTTP_SESSION_VARS;
> +
> +    $connection = DBConnection::getInstance();
> +    $eventlist = Events_Controller::getInstance();
> +    $tagcloud = Tags_Controller::getInstance();
> +
> +    if (!is_null($page)) {
> +        $numPages  = $eventlist->getNumPages($zipcode,$eventdate,$connection);
> +    }
> +    $indexEvents = $eventlist->getIndexEvents($zipcode,$order,$eventdate,
> +                                        $offset,null,$signedinuser,$connection);
> +
> +    ob_start();
> +    require("../views/paginate.php");
> +    $paginateView = ob_get_clean();
> +
> +    ob_start();
> +    require("../views/index.php");
> +    $fillContent = ob_get_clean();
> +
> +    if($flag == "authenticated") {
> +        $fillMessage ="<font color=green>Successfully logged in!</font>";
> +    }
> +
> +    require("../views/site.php");
>  }
> -require_once("../views/site.php");
>  ?>
>
> Modified: incubator/olio/webapp/php/trunk/public_html/rejectInvite.php
> URL: http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/rejectInvite.php?rev=733989&r1=733988&r2=733989&view=diff
> ==============================================================================
> --- incubator/olio/webapp/php/trunk/public_html/rejectInvite.php (original)
> +++ incubator/olio/webapp/php/trunk/public_html/rejectInvite.php Mon Jan 12 17:53:50 2009
> @@ -24,7 +24,7 @@
>   */ 
>  session_start();
>  require_once("../etc/config.php");
> -$connection = DBConnection::getInstance();
> +$connection = DBConnection::getWriteInstance();
>  $friends = Users_Controller::getInstance();
>  $person = $_REQUEST['person'];
>  $friend = $_REQUEST['friend'];
>
> Modified: incubator/olio/webapp/php/trunk/public_html/revokeInvite.php
> URL: http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/revokeInvite.php?rev=733989&r1=733988&r2=733989&view=diff
> ==============================================================================
> --- incubator/olio/webapp/php/trunk/public_html/revokeInvite.php (original)
> +++ incubator/olio/webapp/php/trunk/public_html/revokeInvite.php Mon Jan 12 17:53:50 2009
> @@ -24,7 +24,7 @@
>   */ 
>  session_start();
>  require_once("../etc/config.php");
> -$connection = DBConnection::getInstance();
> +$connection = DBConnection::getWriteInstance();
>  $friends = Users_Controller::getInstance();
>  $person = $_REQUEST['person'];
>  $friend = $_REQUEST['friend'];
>
>
>   

Re: svn commit: r733989 - in /incubator/olio/webapp/php/trunk: classes/ etc/ nbproject/ public_html/

Posted by Akara Sucharitakul <Ak...@Sun.COM>.
That was inadvertently added to the bulk commit. I already removed them.

-Akara

Shanti Subramanyam wrote:
> Akara - do we want the nbproject files ?
> 
> Shanti
> 
> akara@apache.org wrote:
>> Author: akara
>> Date: Mon Jan 12 17:53:50 2009
>> New Revision: 733989
>>
>> URL: http://svn.apache.org/viewvc?rev=733989&view=rev
>> Log:
>> Fix for issue OLIO-3 and OLIO-30:
>> - Fix for OLIO-3 submitted by Damien Cooke
>> - Fix for OLIO-30 - added database selection mechanism and changed all 
>> write transaction to write to the write instance of the DB connection 
>> obtained via DBConnection::getWriteInstance();
>>
>> Added:
>>     incubator/olio/webapp/php/trunk/nbproject/   (with props)
>>     incubator/olio/webapp/php/trunk/nbproject/project.properties
>>     incubator/olio/webapp/php/trunk/nbproject/project.xml
>> Modified:
>>     incubator/olio/webapp/php/trunk/classes/DBConnection.php
>>     incubator/olio/webapp/php/trunk/classes/MemCached.php
>>     incubator/olio/webapp/php/trunk/classes/ODBCConnection.php
>>     incubator/olio/webapp/php/trunk/classes/PDOConnection.php
>>     incubator/olio/webapp/php/trunk/etc/config.php
>>     incubator/olio/webapp/php/trunk/public_html/addAttendee.php
>>     incubator/olio/webapp/php/trunk/public_html/addDeleteFriend.php
>>     incubator/olio/webapp/php/trunk/public_html/addEventResult.php
>>     incubator/olio/webapp/php/trunk/public_html/addPersonResult.php
>>     incubator/olio/webapp/php/trunk/public_html/approveFriendship.php
>>     incubator/olio/webapp/php/trunk/public_html/deleteAttendee.php
>>     incubator/olio/webapp/php/trunk/public_html/deleteCommentsRating.php
>>     incubator/olio/webapp/php/trunk/public_html/deleteEvent.php
>>     incubator/olio/webapp/php/trunk/public_html/events.php
>>     incubator/olio/webapp/php/trunk/public_html/index.php
>>     incubator/olio/webapp/php/trunk/public_html/rejectInvite.php
>>     incubator/olio/webapp/php/trunk/public_html/revokeInvite.php
>>
>> Modified: incubator/olio/webapp/php/trunk/classes/DBConnection.php
>> URL: 
>> http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/classes/DBConnection.php?rev=733989&r1=733988&r2=733989&view=diff 
>>
>> ============================================================================== 
>>
>> --- incubator/olio/webapp/php/trunk/classes/DBConnection.php (original)
>> +++ incubator/olio/webapp/php/trunk/classes/DBConnection.php Mon Jan 
>> 12 17:53:50 2009
>> @@ -17,11 +17,37 @@
>>   * limitations under the License.
>>   */      -abstract class DBConnection
>> -{
>> +abstract class DBConnection {
>> +
>> +    var $writeInstance;
>> +    var $dbTarget;
>> +
>> +
>>      static function getInstance() {
>>          $classname = Web20::$config['dbDriver'] . 'Connection';
>> -        return new $classname;
>> +        $instance = new $classname;
>> +        $instance->writeInstance = false;
>> +        return $instance;
>> +    }
>> +
>> +    static function getWriteInstance() {
>> +        $classname = Web20::$config['dbDriver'] . 'Connection';
>> +        $instance = new $classname;
>> +        $instance->writeInstance = true;
>> +        return $instance;
>> +    }
>> +
>> +    function selectInstance() {
>> +        $this->dbTarget = Web20::$config['dbTarget'];
>> +        if (is_array($this->dbTarget)) {
>> +            if ($this->writeInstance || count($this->dbTarget) == 1) {
>> +                $this->dbTarget = $this->dbTarget[0];
>> +            } else {
>> +                $idx = (getmypid() % (count($this->dbTarget) - 1)) + 1;
>> +                // $idx = rand(1, count($this->dbTarget) - 1);
>> +                $this->dbTarget = $this->dbTarget[$idx];
>> +            }
>> +        }
>>      }
>>           abstract function query();
>>
>> Modified: incubator/olio/webapp/php/trunk/classes/MemCached.php
>> URL: 
>> http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/classes/MemCached.php?rev=733989&r1=733988&r2=733989&view=diff 
>>
>> ============================================================================== 
>>
>> --- incubator/olio/webapp/php/trunk/classes/MemCached.php (original)
>> +++ incubator/olio/webapp/php/trunk/classes/MemCached.php Mon Jan 12 
>> 17:53:50 2009
>> @@ -68,18 +68,15 @@
>>          $updateSema = $key . 'UpdateSema';
>>          if (!$this->memcache->get($updateSema)) {
>>              $updateLock = $key . 'UpdateLock';
>> -            if (!$this->memcache->get($updateLock)) {
>> -                $hostPid = php_uname('n') . ':' . getmypid();
>> -                // The updateLock times out in 5 secs.
>> -                $this->memcache->set($updateLock, $hostPid, 0, 5);
>> -                if ($this->memcache->get($updateLock) == $hostPid) {
>> -                        error_log('Verified updateLock');
>> -                    return true;
>> -                    }
>> -            }
>> +            $hostPid = php_uname('n') . ':' . getmypid();
>> +            if ($this->memcache->add($updateLock, $hostPid, 0, 5)) {
>> +                error_log($hostPid." obtained ".$updateLock);
>> +                return true;
>> +            }
>>          }
>>          return false;
>> -    }
>> +    }
>> +
>>     
>>      function doneRefresh($key, $timeToNextRefresh) {
>>          $updateSema = $key . 'UpdateSema';
>> @@ -90,6 +87,7 @@
>>                                  ' not locked by this process!');
>>          $this->memcache->set($updateSema, 1, 0, $timeToNextRefresh);
>>          $this->memcache->delete($updateLock);
>> +        error_log($hostPid." released ".$updateLock);
>>      }
>>  }
>>  ?>
>>
>> Modified: incubator/olio/webapp/php/trunk/classes/ODBCConnection.php
>> URL: 
>> http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/classes/ODBCConnection.php?rev=733989&r1=733988&r2=733989&view=diff 
>>
>> ============================================================================== 
>>
>> --- incubator/olio/webapp/php/trunk/classes/ODBCConnection.php (original)
>> +++ incubator/olio/webapp/php/trunk/classes/ODBCConnection.php Mon Jan 
>> 12 17:53:50 2009
>> @@ -21,6 +21,18 @@
>>  
>>      var $connection;
>>  
>> +    private function ensureConnection() {
>> +        if (!isset($this->dbTarget)) {
>> +            $this->selectInstance();
>> +        }
>> +        if (!isset($this->connection)) {
>> +            $this->connection = odbc_connect($this->dbTarget,
>> +                Web20::$config['dbUser'], Web20::$config['dbPass']);
>> +            if (is_resource($this->connection))
>> +                throw new Exception("Unable to connect 
>> ".$this->dbTarget."!");
>> +        }
>> +    }
>> +
>>      function query() {
>>          if (func_num_args() > 1) {
>>              $args = func_get_args();
>> @@ -30,13 +42,7 @@
>>          } else {
>>              $sql = func_get_arg(0);
>>          }
>> -        if (!isset($this->connection)) {
>> -            $this->connection = odbc_connect(Web20::$config['dbTarget'],
>> -                Web20::$config['dbUser'], Web20::$config['dbPass']);
>> -            if (is_resource($this->connection))
>> -                throw new Exception("Unable to connect " .
>> -                                     Web20::$config['dbTarget']."!");
>> -        }
>> +        $this->ensureConnection();
>>          if (isset($args)) {
>>              error_log("You are using prepared statements. This is 
>> extremely slow!");
>>              $result = odbc_prepare($this->connection, $sql);
>> @@ -65,13 +71,7 @@
>>          } else {
>>              $sql = func_get_arg(0);
>>          }
>> -        if (!isset($this->connection)) {
>> -            $this->connection = odbc_connect(Web20::$config['dbTarget'],
>> -                Web20::$config['dbUser'], Web20::$config['dbPass']);
>> -            if (!$this->connection)
>> -                throw new Exception("Unable to connect " .
>> -                                     Web20::$config['dbTarget'] . "!");
>> -        }
>> +        $this->ensureConnection();
>>          if (isset($args)) {
>>              $result = odbc_prepare($this->connection, $sql);
>>              if (!odbc_execute($result, $args))
>>
>> Modified: incubator/olio/webapp/php/trunk/classes/PDOConnection.php
>> URL: 
>> http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/classes/PDOConnection.php?rev=733989&r1=733988&r2=733989&view=diff 
>>
>> ============================================================================== 
>>
>> --- incubator/olio/webapp/php/trunk/classes/PDOConnection.php (original)
>> +++ incubator/olio/webapp/php/trunk/classes/PDOConnection.php Mon Jan 
>> 12 17:53:50 2009
>> @@ -22,16 +22,18 @@
>>      var $connection;
>>           private function ensureConnection() {
>> +        if (!isset($this->dbTarget)) {
>> +            $this->selectInstance();
>> +        }
>>          if (!isset($this->connection)) {
>> -            $this->connection = new PDO(Web20::$config['dbTarget'],
>> +            $this->connection = new PDO($this->dbTarget,
>>                  Web20::$config['dbUser'], Web20::$config['dbPass'], 
>>                  array(PDO::ATTR_PERSISTENT => true));
>>              
>> $this->connection->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 
>> true);
>>              $this->connection->setAttribute( // throw exception on 
>> error.
>>                  PDO::ATTR_ERRMODE, 
>> PDO::ERRMODE_EXCEPTION);                             if 
>> (!$this->connection)
>> -                throw new Exception("Unable to connect " .
>> -                                     Web20::$config['dbTarget']."!");
>> +                throw new Exception("Unable to connect " . 
>> $this->dbTarget."!");
>>          }       
>>      }
>>     
>> Modified: incubator/olio/webapp/php/trunk/etc/config.php
>> URL: 
>> http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/etc/config.php?rev=733989&r1=733988&r2=733989&view=diff 
>>
>> ============================================================================== 
>>
>> --- incubator/olio/webapp/php/trunk/etc/config.php (original)
>> +++ incubator/olio/webapp/php/trunk/etc/config.php Mon Jan 12 17:53:50 
>> 2009
>> @@ -23,6 +23,10 @@
>>  
>>  // $web20config['dbTarget'] = 'myodbc3'; // ODBC target in odbc.ini.
>>  $web20config['dbTarget'] = 'mysql:host=localhost;dbname=web20load'; 
>> // PDO target.
>> +// For master/slave clusters, specify dbTarget as an array, listing 
>> the master first.
>> +// $web20config['dbTarget'] = 
>> array('mysql:host=master;dbname=web20load',
>> +//                                  
>> 'mysql:host=slave1;dbname=web20load',
>> +//                                  
>> 'mysql:host=slave2;dbname=web20load');
>>  
>>  $web20config['dbUser'] = 'web20'; // DB user name.
>>  
>>
>> Propchange: incubator/olio/webapp/php/trunk/nbproject/
>> ------------------------------------------------------------------------------ 
>>
>> --- svn:ignore (added)
>> +++ svn:ignore Mon Jan 12 17:53:50 2009
>> @@ -0,0 +1 @@
>> +private
>>
>> Added: incubator/olio/webapp/php/trunk/nbproject/project.properties
>> URL: 
>> http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/nbproject/project.properties?rev=733989&view=auto 
>>
>> ============================================================================== 
>>
>> --- incubator/olio/webapp/php/trunk/nbproject/project.properties (added)
>> +++ incubator/olio/webapp/php/trunk/nbproject/project.properties Mon 
>> Jan 12 17:53:50 2009
>> @@ -0,0 +1,6 @@
>> +include.path=${php.global.include.path}
>> +source.encoding=UTF-8
>> +src.dir=.
>> +tags.asp=false
>> +tags.short=true
>> +web.root=.
>>
>> Added: incubator/olio/webapp/php/trunk/nbproject/project.xml
>> URL: 
>> http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/nbproject/project.xml?rev=733989&view=auto 
>>
>> ============================================================================== 
>>
>> --- incubator/olio/webapp/php/trunk/nbproject/project.xml (added)
>> +++ incubator/olio/webapp/php/trunk/nbproject/project.xml Mon Jan 12 
>> 17:53:50 2009
>> @@ -0,0 +1,9 @@
>> +<?xml version="1.0" encoding="UTF-8"?>
>> +<project xmlns="http://www.netbeans.org/ns/project/1">
>> +    <type>org.netbeans.modules.php.project</type>
>> +    <configuration>
>> +        <data xmlns="http://www.netbeans.org/ns/php-project/1">
>> +            <name>Olio PHP Application</name>
>> +        </data>
>> +    </configuration>
>> +</project>
>>
>> Modified: incubator/olio/webapp/php/trunk/public_html/addAttendee.php
>> URL: 
>> http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/addAttendee.php?rev=733989&r1=733988&r2=733989&view=diff 
>>
>> ============================================================================== 
>>
>> --- incubator/olio/webapp/php/trunk/public_html/addAttendee.php 
>> (original)
>> +++ incubator/olio/webapp/php/trunk/public_html/addAttendee.php Mon 
>> Jan 12 17:53:50 2009
>> @@ -23,19 +23,23 @@
>>   */
>>  session_start();
>>  require_once("../etc/config.php");
>> -$connection = DBConnection::getInstance();
>>  $se = $_REQUEST['id'];
>>  $username = $HTTP_SESSION_VARS["uname"];
>> -if(!is_null($username)){
>> +if (!is_null($username)) {
>> +    $connection = DBConnection::getWriteInstance();
>>      $checkuserIfAttending = "select count(username) as count from 
>> PERSON_SOCIALEVENT where socialeventid = '$se' and username = 
>> '$username'";
>>      $result = $connection->query($checkuserIfAttending);
>>      $row = $result->getArray();
>>      $userExists = $row['count'];
>> -    if($userExists <= 0){
>> +    if ($userExists <= 0) {
>>          $insertuser = "insert into PERSON_SOCIALEVENT 
>> values('$username','$se')";
>>          $connection->exec($insertuser);
>>      }
>>  }
>> +
>> +if (!isset($connection)) { // If connection not there, we're read-only.
>> +    $connection = DBConnection::getInstance();
>> +}
>>  $listquery = "select username from PERSON_SOCIALEVENT where 
>> socialeventid = '$se'";
>>  $listqueryresult = $connection->query($listquery);
>>  $username = $HTTP_SESSION_VARS["uname"];
>>
>> Modified: incubator/olio/webapp/php/trunk/public_html/addDeleteFriend.php
>> URL: 
>> http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/addDeleteFriend.php?rev=733989&r1=733988&r2=733989&view=diff 
>>
>> ============================================================================== 
>>
>> --- incubator/olio/webapp/php/trunk/public_html/addDeleteFriend.php 
>> (original)
>> +++ incubator/olio/webapp/php/trunk/public_html/addDeleteFriend.php 
>> Mon Jan 12 17:53:50 2009
>> @@ -24,7 +24,7 @@
>>       session_start();
>>  require_once("../etc/config.php");
>> -$connection = DBConnection::getInstance();
>> +$connection = DBConnection::getWriteInstance();
>>  $friends = Users_Controller::getInstance();
>>  $person = $_REQUEST['person'];
>>  $friend = $_REQUEST['friend'];
>>
>> Modified: incubator/olio/webapp/php/trunk/public_html/addEventResult.php
>> URL: 
>> http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/addEventResult.php?rev=733989&r1=733988&r2=733989&view=diff 
>>
>> ============================================================================== 
>>
>> --- incubator/olio/webapp/php/trunk/public_html/addEventResult.php 
>> (original)
>> +++ incubator/olio/webapp/php/trunk/public_html/addEventResult.php Mon 
>> Jan 12 17:53:50 2009
>> @@ -19,7 +19,7 @@
>>       session_start();     require_once("../etc/config.php");
>> -$connection = DBConnection::getInstance();
>> +$connection = DBConnection::getWriteInstance();
>>  
>>  // 1. Get data from submission page.
>>      $description=$_POST['description'];
>>
>> Modified: incubator/olio/webapp/php/trunk/public_html/addPersonResult.php
>> URL: 
>> http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/addPersonResult.php?rev=733989&r1=733988&r2=733989&view=diff 
>>
>> ============================================================================== 
>>
>> --- incubator/olio/webapp/php/trunk/public_html/addPersonResult.php 
>> (original)
>> +++ incubator/olio/webapp/php/trunk/public_html/addPersonResult.php 
>> Mon Jan 12 17:53:50 2009
>> @@ -18,7 +18,7 @@
>>   */           require_once("../etc/config.php");
>> -$connection = DBConnection::getInstance();
>> +$connection = DBConnection::getWriteInstance();
>>  
>>  if(isset($_POST['addpersonsubmit'])) {
>>      //insert into person table using the data from addPerson page
>>
>> Modified: 
>> incubator/olio/webapp/php/trunk/public_html/approveFriendship.php
>> URL: 
>> http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/approveFriendship.php?rev=733989&r1=733988&r2=733989&view=diff 
>>
>> ============================================================================== 
>>
>> --- incubator/olio/webapp/php/trunk/public_html/approveFriendship.php 
>> (original)
>> +++ incubator/olio/webapp/php/trunk/public_html/approveFriendship.php 
>> Mon Jan 12 17:53:50 2009
>> @@ -23,7 +23,7 @@
>>   */     session_start();
>>  require_once("../etc/config.php");
>> -$connection = DBConnection::getInstance();
>> +$connection = DBConnection::getWriteInstance();
>>  $friends = Users_Controller::getInstance();
>>  $person = $_REQUEST['person'];
>>  $friend = $_REQUEST['friend'];
>>
>> Modified: incubator/olio/webapp/php/trunk/public_html/deleteAttendee.php
>> URL: 
>> http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/deleteAttendee.php?rev=733989&r1=733988&r2=733989&view=diff 
>>
>> ============================================================================== 
>>
>> --- incubator/olio/webapp/php/trunk/public_html/deleteAttendee.php 
>> (original)
>> +++ incubator/olio/webapp/php/trunk/public_html/deleteAttendee.php Mon 
>> Jan 12 17:53:50 2009
>> @@ -25,13 +25,17 @@
>>       session_start();
>>  require_once("../etc/config.php");
>> -$connection = DBConnection::getInstance();
>>  $se = $_REQUEST['id'];
>>  $username = $HTTP_SESSION_VARS["uname"];
>>  if(!is_null($username)){
>> +    $connection = DBConnection::getWriteInstance();
>>      $deleteuser = "delete from PERSON_SOCIALEVENT where 
>> username='$username' and socialeventid='$se'";
>>      $connection->exec($deleteuser);
>>  }
>> +
>> +if (!isset($connection)) {
>> +    $connection = DBConnection::getInstance();
>> +}
>>  $listquery = "select username from PERSON_SOCIALEVENT where 
>> socialeventid = '$se'";
>>  $listqueryresult = $connection->query($listquery);
>>  $username = $HTTP_SESSION_VARS["uname"];
>>
>> Modified: 
>> incubator/olio/webapp/php/trunk/public_html/deleteCommentsRating.php
>> URL: 
>> http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/deleteCommentsRating.php?rev=733989&r1=733988&r2=733989&view=diff 
>>
>> ============================================================================== 
>>
>> --- 
>> incubator/olio/webapp/php/trunk/public_html/deleteCommentsRating.php 
>> (original)
>> +++ 
>> incubator/olio/webapp/php/trunk/public_html/deleteCommentsRating.php 
>> Mon Jan 12 17:53:50 2009
>> @@ -25,7 +25,7 @@
>>  
>>  session_start();
>>  require_once("../etc/config.php");
>> -$connection = DBConnection::getInstance();
>> +$connection = DBConnection::getWriteInstance();
>>  $events = Events_Controller::getInstance();
>>  $dateFormat = "l,  F j,  Y,  h:i A";
>>  $commentid = $_REQUEST['commentid'];
>>
>> Modified: incubator/olio/webapp/php/trunk/public_html/deleteEvent.php
>> URL: 
>> http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/deleteEvent.php?rev=733989&r1=733988&r2=733989&view=diff 
>>
>> ============================================================================== 
>>
>> --- incubator/olio/webapp/php/trunk/public_html/deleteEvent.php 
>> (original)
>> +++ incubator/olio/webapp/php/trunk/public_html/deleteEvent.php Mon 
>> Jan 12 17:53:50 2009
>> @@ -24,7 +24,7 @@
>>   */  session_start();
>>  require_once("../etc/config.php");
>> -$connection = DBConnection::getInstance();
>> +$connection = DBConnection::getWriteInstance();
>>  $se = $_REQUEST['socialEventID'];
>>  $deleteEvent = "delete from SOCIALEVENT where socialeventid='$se'";
>>  $connection->exec($deleteEvent);
>>
>> Modified: incubator/olio/webapp/php/trunk/public_html/events.php
>> URL: 
>> http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/events.php?rev=733989&r1=733988&r2=733989&view=diff 
>>
>> ============================================================================== 
>>
>> --- incubator/olio/webapp/php/trunk/public_html/events.php (original)
>> +++ incubator/olio/webapp/php/trunk/public_html/events.php Mon Jan 12 
>> 17:53:50 2009
>> @@ -28,7 +28,12 @@
>>  $comments = $_POST['comments'];
>>  $cid = $_POST['editingcid'];
>>  $editcomments = $_POST['editcomments'];
>> -$connection = DBConnection::getInstance();
>> +if (isset($_POST['commentsratingsubmit']) || +    
>> (isset($_POST['editcommentsratingsubmit']) && 
>> isset($_POST['editingcid']))) {
>> +    $connection = DBConnection::getWriteInstance();
>> +} else {
>> +    $connection = DBConnection::getInstance();
>> +}
>>  $tagslist = Tags_Controller::getInstance();
>>  $events = Events_Controller::getInstance();
>>  $username = $HTTP_SESSION_VARS["uname"];
>> @@ -80,11 +85,10 @@
>>  }
>>  unset($listqueryresult);
>>  
>> -$editCRforCid = $_POST['editcommentsratingsubmit'].$cid;
>>  if (isset($_POST['commentsratingsubmit'])) {
>>       $insertSql = "insert into COMMENTS_RATING 
>> (username,socialeventid,comments,ratings) values 
>> ('$username','$se','$comments','$rating')";
>>          $connection->exec($insertSql);
>> -}else if (isset($editCRforCid)) {
>> +} else if (isset($_POST['editcommentsratingsubmit']) && 
>> isset($_POST['editingcid'])) {
>>       $updateSql = "update COMMENTS_RATING set 
>> comments='$editcomments', ratings='$rating' where username='$username' 
>> and socialeventid='$se' and commentid='$cid'";
>>           $connection->exec($updateSql);
>>  }
>>
>> Modified: incubator/olio/webapp/php/trunk/public_html/index.php
>> URL: 
>> http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/index.php?rev=733989&r1=733988&r2=733989&view=diff 
>>
>> ============================================================================== 
>>
>> --- incubator/olio/webapp/php/trunk/public_html/index.php (original)
>> +++ incubator/olio/webapp/php/trunk/public_html/index.php Mon Jan 12 
>> 17:53:50 2009
>> @@ -24,22 +24,23 @@
>>   */
>>  
>>  session_start();
>> -require_once("../etc/config.php");
>> -$connection = DBConnection::getInstance();
>> -$eventlist = Events_Controller::getInstance();
>> -$tagcloud = Tags_Controller::getInstance();
>> -$url = RequestUrl::getInstance();
>> +require("../etc/config.php");
>> +
>>  $signedinuser = $HTTP_SESSION_VARS["uname"];
>>  $page= $_REQUEST['page'];
>>  $flag = $_REQUEST['flag'];
>>  
>> +$url = RequestUrl::getInstance();
>> +
>>  $href = $url->getGetRequest();
>> -if(!is_null($page)){
>> -$href = substr($href, 0, strrpos($href,"&"));
>> -}
>> +if(!is_null($page)) {
>> +    $href = substr($href, 0, strrpos($href,"&"));
>> +} // else {
>> +  //  error_log('$page is null.',0);
>> +  //}
>>  
>> -if($href==""){
>> -$href = "?";
>> +if($href=="") {
>> +    $href = "?";
>>  }
>>  
>>  if(!is_null($page)){
>> @@ -53,47 +54,185 @@
>>      $next_page = $HTTP_SESSION_VARS["currentpage"] + 1;
>>      $offset = ($page * 10) - 10;
>>      if($offset < 0) {
>> -    $offset = 0;
>> +        $offset = 0;
>>      }
>>      if($prev_page < 0) {
>> -    $prev_page = 1;
>> +        $prev_page = 1;
>>      }
>>      if($next_page >  $numPages) {
>> -    $next_page = $numPages;
>> +        $next_page = $numPages;
>>      }
>> -}else{
>> +    $cacheType = 0;
>> +} else {
>> +    // error_log('$page is still null.',0);
>>      $zipcode = $_REQUEST['zipcode'];
>>      $order = $_REQUEST['order'];
>>      $m= $_REQUEST['month'];
>>      $d= $_REQUEST['day'];
>>      $y= $_REQUEST['year'];
>>  
>> -    if(!is_null($_REQUEST['month']) && !is_null($_REQUEST['day'])  && 
>> !is_null($_REQUEST['year']) ){
>> -    $eventdate= $y."-".$m."-".$d;
>> +    if(!is_null($_REQUEST['month']) && !is_null($_REQUEST['day'])  &&
>> +            !is_null($_REQUEST['year'])) {
>> +        $eventdate= $y."-".$m."-".$d;
>> +    }    +    if (is_null($zipcode) && is_null($order) &&
>> +            !isset($eventdate)) {
>> +        //if (is_null($signedinuser)) { // Get whole page if not 
>> logged in...
>> +        if($HTTP_SESSION_VARS["uname"] == ''){
>> +            $cacheType = 2;
>> +        } else { // And just the page content if logged in.
>> +            $cacheType = 1;
>> +        }
>> +    } else {
>> +        $HTTP_SESSION_VARS["eventdate"]= $eventdate;
>> +        $HTTP_SESSION_VARS["zipcode"] = $zipcode;
>> +        $HTTP_SESSION_VARS["order"] = $order;
>> +
>> +        $connection = DBConnection::getInstance();
>> +        $eventlist = Events_Controller::getInstance();
>> +        $numPages  = 
>> $eventlist->getNumPages($zipcode,$eventdate,$connection);
>> +        $tagcloud = Tags_Controller::getInstance();
>> +        $HTTP_SESSION_VARS["numPages"] = $numPages;
>> +        // error_log("numPages = $numPages",0);
>> +        $cacheType = 0;
>>      }
>> -    $HTTP_SESSION_VARS["eventdate"]= $eventdate;
>> -    $HTTP_SESSION_VARS["zipcode"] = $zipcode;
>> -    $HTTP_SESSION_VARS["order"] = $order;
>> -    $numPages  = 
>> $eventlist->getNumPages($zipcode,$eventdate,$connection);
>> -    $HTTP_SESSION_VARS["numPages"] = $numPages;
>> -
>>      $prev_page = 1;
>>      $next_page = 2;
>>      $curr_page = 1;
>>      $offset = 0;
>>      session_unregister ("currentpage");
>>  }
>> -$indexEvents = 
>> $eventlist->getIndexEvents($zipcode,$order,$eventdate,$offset,null,$signedinuser,$connection); 
>>
>>  
>> -ob_start();
>> -require("../views/paginate.php");
>> -$paginateView = ob_get_clean();
>> -
>> -ob_start();
>> -require("../views/index.php");
>> -$fillContent = ob_get_clean();
>> -if($flag == "authenticated"){
>> -$fillMessage ="<font color=green>Successfully logged in!</font>";
>> +switch ($cacheType) {
>> +    case 0: noCachePage(); break;
>> +    case 1: contentCachePage(); break;
>> +    case 2: fullCachePage();
>> +}
>> +
>> +
>> +function fullCachePage() {
>> +    // error_log('fullCachePage Called',0);
>> +    global $signedinuser, $page, $flag, $url, $href, $eventdate, 
>> $zipcode;
>> +    global $order, $numPages, $curr_page, $prev_page, $next_page, 
>> $offset;
>> +    global $HTTP_SESSION_VARS;
>> +
>> +    // error_log('Accesssing Cache subsystem to collect the page if 
>> possible.',0);
>> +    $cache = CacheSystem::getInstance();
>> +    $pageContent = $cache->get('Home');
>> +    // error_log("Checking the Cache status for logged in and normal 
>> Home pages",0);
>> +    if ($pageContent != '') {
>> +        echo $pageContent;
>> +        // error_log("Cache hit for Home page...",0);
>> +    }
>> +
>> +    $needsRefresh = false;
>> +    for (;;) {
>> +        // error_log('refresh logic accessed.');
>> +        if ($cache->needsRefresh('Home')) {
>> +            $needsRefresh = true;
>> +            // error_log('Home needs refresh.');
>> +            break;
>> +        } else if ($pageContent == '') {
>> +            error_log('index.php waiting for cache.');
>> +            usleep(200000);
>> +            $pageContent = $cache->get('Home');
>> +            if ($pageContent != '') {
>> +                echo $pageContent;
>> +                break;
>> +            } +        } else {
>> +            // error_log('.');
>> +            break;
>> +        }
>> +    }
>> +
>> +    if ($needsRefresh) {
>> +        // error_log("Regenerating page................");
>> +        $connection = DBConnection::getInstance();
>> +        $eventlist = Events_Controller::getInstance();
>> +        $numPages  = 
>> $eventlist->getNumPages($zipcode,$eventdate,$connection);
>> +        $indexEvents = 
>> $eventlist->getIndexEvents($zipcode,$order,$eventdate,
>> +                $offset,null,$signedinuser,$connection);
>> +        $tagcloud = Tags_Controller::getInstance();
>> +
>> +        ob_start();
>> +        require("../views/paginate.php");
>> +        $paginateView = ob_get_clean();
>> +
>> +        ob_start();
>> +        require("../views/index.php");
>> +        $fillContent = ob_get_clean();
>> +
>> +        ob_start();
>> +
>> +        require("../views/site.php");
>> +
>> +        // error_log('refreshing cache contents',0);
>> +        $newPageContent = ob_get_contents();
>> +        $cache->set('Home', $newPageContent, 0, 0);
>> +        $cache->set('HomeContent', $fillContent, 0, 0);
>> +        $cache->doneRefresh('Home', 300);
>> +
>> +        if ($pageContent == '') { // Not displayed yet, just display 
>> now.
>> +            // error_log("Display newly generated page");
>> +            ob_end_flush();
>> +        } else {
>> +            // error_log("Display of cache generated page has occured");
>> +            ob_end_clean(); // Otherwise just don't display the new one.
>> +        }
>> +    }
>> +}
>> +
>> +function contentCachePage() {
>> +    // error_log('ContentCachePage Called',0);
>> +    global $signedinuser, $page, $flag, $url, $href, $eventdate, 
>> $zipcode;
>> +    global $order, $numPages, $curr_page, $prev_page, $next_page, 
>> $offset;
>> +    global $HTTP_SESSION_VARS;
>> +
>> +    $cache = CacheSystem::getInstance();
>> +    for (;;) {
>> +        $fillContent = $cache->get('HomeContent');
>> +        if ($fillContent != '') {
>> +            break;
>> +        }
>> +        usleep(20000);
>> +        error_log('Retry loading fillContent from cache.');
>> +    }
>> +
>> +    if ($flag == "authenticated") {
>> +        $fillMessage ="<font color=green>Successfully logged 
>> in!</font>";
>> +    }
>> +    require("../views/site.php");
>> +}
>> +
>> +function noCachePage() {
>> +    // error_log('noCachePage Called',0);
>> +    global $signedinuser, $page, $flag, $url, $href, $eventdate, 
>> $zipcode;
>> +    global $order, $numPages, $curr_page, $prev_page, $next_page, 
>> $offset;
>> +    global $HTTP_SESSION_VARS;
>> +
>> +    $connection = DBConnection::getInstance();
>> +    $eventlist = Events_Controller::getInstance();
>> +    $tagcloud = Tags_Controller::getInstance();
>> +
>> +    if (!is_null($page)) {
>> +        $numPages  = 
>> $eventlist->getNumPages($zipcode,$eventdate,$connection);
>> +    }
>> +    $indexEvents = 
>> $eventlist->getIndexEvents($zipcode,$order,$eventdate,
>> +                                        
>> $offset,null,$signedinuser,$connection);
>> +
>> +    ob_start();
>> +    require("../views/paginate.php");
>> +    $paginateView = ob_get_clean();
>> +
>> +    ob_start();
>> +    require("../views/index.php");
>> +    $fillContent = ob_get_clean();
>> +
>> +    if($flag == "authenticated") {
>> +        $fillMessage ="<font color=green>Successfully logged 
>> in!</font>";
>> +    }
>> +
>> +    require("../views/site.php");
>>  }
>> -require_once("../views/site.php");
>>  ?>
>>
>> Modified: incubator/olio/webapp/php/trunk/public_html/rejectInvite.php
>> URL: 
>> http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/rejectInvite.php?rev=733989&r1=733988&r2=733989&view=diff 
>>
>> ============================================================================== 
>>
>> --- incubator/olio/webapp/php/trunk/public_html/rejectInvite.php 
>> (original)
>> +++ incubator/olio/webapp/php/trunk/public_html/rejectInvite.php Mon 
>> Jan 12 17:53:50 2009
>> @@ -24,7 +24,7 @@
>>   */  session_start();
>>  require_once("../etc/config.php");
>> -$connection = DBConnection::getInstance();
>> +$connection = DBConnection::getWriteInstance();
>>  $friends = Users_Controller::getInstance();
>>  $person = $_REQUEST['person'];
>>  $friend = $_REQUEST['friend'];
>>
>> Modified: incubator/olio/webapp/php/trunk/public_html/revokeInvite.php
>> URL: 
>> http://svn.apache.org/viewvc/incubator/olio/webapp/php/trunk/public_html/revokeInvite.php?rev=733989&r1=733988&r2=733989&view=diff 
>>
>> ============================================================================== 
>>
>> --- incubator/olio/webapp/php/trunk/public_html/revokeInvite.php 
>> (original)
>> +++ incubator/olio/webapp/php/trunk/public_html/revokeInvite.php Mon 
>> Jan 12 17:53:50 2009
>> @@ -24,7 +24,7 @@
>>   */  session_start();
>>  require_once("../etc/config.php");
>> -$connection = DBConnection::getInstance();
>> +$connection = DBConnection::getWriteInstance();
>>  $friends = Users_Controller::getInstance();
>>  $person = $_REQUEST['person'];
>>  $friend = $_REQUEST['friend'];
>>
>>
>>