Last active
December 19, 2015 15:18
-
-
Save markphi2013/5974974 to your computer and use it in GitHub Desktop.
hello, Can you help me out with the loop for the rediskey in the public function getProgramStats($program)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
StatsComponent<?php | |
App::uses('Component', 'Controller'); | |
App::uses('Program', 'Model'); | |
class StatsComponent extends Component { | |
public function getRedis() | |
{ | |
$redis = new Redis(); | |
$redis->connect('127.0.0.1'); | |
return $redis; | |
} | |
protected function _getProgramStats($program) | |
{ | |
$database = $program['Program']['database']; | |
$redis = $this->getRedis(); | |
$redisKey = 'vusion:programs:'.$database.':stats'; | |
$tempParticipant = new Participant(array('database' => $database)); | |
$activeParticipantCount = $tempParticipant->find( | |
'count', array( | |
'conditions' => array('session-id' => array( | |
'$ne' => null) | |
) | |
) | |
); | |
$participantCount = $tempParticipant->find('count'); | |
$tempHistory = new History(array('database' => $database)); | |
$AllReceivedMessagesCount = $tempHistory->find( | |
'count',array( | |
'conditions' => array('message-direction' => 'incoming')) | |
); | |
$AllSentMessagesCount = $tempHistory->find( | |
'count',array( | |
'conditions' => array('message-direction' => 'outgoing')) | |
); | |
$historyCount = $tempHistory->find( | |
'count', array( | |
'conditions' => array('object-type' => array('$in' => $tempHistory->messageType)))); | |
$tempSchedule = new Schedule(array('database' => $database)); | |
$now = new DateTime('now'); | |
$todayScheduleCount = $tempSchedule->find( | |
'count',array( | |
'conditions' => array('date-time' => $now) | |
)); | |
$scheduleCount = $tempSchedule->find('count'); | |
$programStats = array( | |
'active-participant-count' => $activeParticipantCount, | |
'participant-count' => $participantCount, | |
'all-received-messages-count'=> $AllReceivedMessagesCount, | |
'all-sent-messages-count' => $AllSentMessagesCount, | |
'history-count' => $historyCount, | |
'today-schedule-count' => $todayScheduleCount, | |
'schedule-count' => $scheduleCount); | |
$program['Program']['active-participant-count'] = $programStats['active-participant-count']; | |
$program['Program']['participant-count'] = $programStats['participant-count']; | |
$program['Program']['all-received-messages-count'] = $programStats['all-received-messages-count']; | |
$program['Program']['all-sent-messages-count'] = $programStats['all-sent-messages-count']; | |
$program['Program']['history-count'] = $programStats['history-count']; | |
$program['Program']['today-schedule-count'] = $programStats['today-schedule-count']; | |
$program['Program']['schedule-count'] = $programStats['schedule-count']; | |
$redis->setex($redisKey, 60000, $program['Program']['active-participant-count']); | |
$redis->setex($redisKey, 60000, $program['Program']['participant-count']); | |
$redis->setex($redisKey, 60000, $program['Program']['all-received-messages-count']); | |
$redis->setex($redisKey, 60000, $program['Program']['history-count']); | |
$redis->setex($redisKey, 60000, $program['Program']['today-schedule-count']); | |
$redis->setex($redisKey, 60000, $program['Program']['schedule-count']); | |
return $program; | |
} | |
public function getProgramStats($program) | |
{ | |
$database = $program['Program']['database']; | |
$redis = $this->getRedis(); | |
$redisKey = 'vusion:programs:'.$database.':stats'; | |
Need aloop for the $redisStored; | |
$redisStored = $redis->get($redisKey); | |
$stats = $this->_getProgramStats($program); | |
if(!isset($redisStored)){ | |
return $stats; | |
} | |
return $redisStored; | |
} | |
} | |
?> |
overnin
commented
Jul 11, 2013
$program['Program']['active-participant-count'] = $programStats['active-participant-count'];
$program['Program']['participant-count'] = $programStats['participant-count'];
$program['Program']['all-received-messages-count'] = $programStats['all-received-messages-count'];
$program['Program']['all-sent-messages-count'] = $programStats['all-sent-messages-count'];
$program['Program']['history-count'] = $programStats['history-count'];
$program['Program']['today-schedule-count'] = $programStats['today-schedule-count'];
$program['Program']['schedule-count'] = $programStats['schedule-count'];
connect('127.0.0.1');
return $redis;
}
protected function _getProgramStats($program)
{
$database = $program['Program']['database'];
$tempParticipant = new Participant(array('database' => $database));
$activeParticipantCount = $tempParticipant->find(
'count', array(
'conditions' => array('session-id' => array(
'$ne' => null)
)
)
);
$participantCount = $tempParticipant->find('count');
$tempHistory = new History(array('database' => $database));
$AllReceivedMessagesCount = $tempHistory->find(
'count',array(
'conditions' => array('message-direction' => 'incoming'))
);
$AllSentMessagesCount = $tempHistory->find(
'count',array(
'conditions' => array('message-direction' => 'outgoing'))
);
$historyCount = $tempHistory->find(
'count', array(
'conditions' => array('object-type' => array('$in' => $tempHistory->messageType))));
$tempSchedule = new Schedule(array('database' => $database));
$now = new DateTime('now');
$todayScheduleCount = $tempSchedule->find(
'count',array(
'conditions' => array('date-time' => $now)
));
$scheduleCount = $tempSchedule->find('count');
$programStats = array(
'active-participant-count' => $activeParticipantCount,
'participant-count' => $participantCount,
'all-received-messages-count'=> $AllReceivedMessagesCount,
'all-sent-messages-count' => $AllSentMessagesCount,
'history-count' => $historyCount,
'today-schedule-count' => $todayScheduleCount,
'schedule-count' => $scheduleCount);
return $programStats;
}
public function getProgramStats($program)
{
$programStats = $this->_getProgramStats($program);
$program['Program']['stats'] = $this->_getProgramStats($programStats);
$program['Program']['stats']['active-participant-count'] = $programStats['active-participant-count'];
$program['Program']['stats']['participant-count'] = $programStats['participant-count'];
$program['Program']['stats']['all-received-messages-count'] = $programStats['all-received-messages-count'];
$program['Program']['stats']['all-sent-messages-count'] = $programStats['all-sent-messages-count'];
$program['Program']['stats']['history-count'] = $programStats['history-count'];
$program['Program']['stats']['today-schedule-count'] = $programStats['today-schedule-count'];
$program['Program']['stats']['schedule-count'] = $programStats['schedule-count'];
$database = $program['Program']['database'];
$redis = $this->getRedis();
$statsKey = 'vusion:programs:'.$database.':stats';
$stats = $redis->get($statsKey);
if(isset($stats)){
return json_decode($stats);
}else{
$redis->setex($statsKey, 100,json_encode($programStats));
//return $r;
}
}
```
}
?>
$program['Program']['stats'] = $this->_getProgramStats($program);
it's ok i changed $programstats to $program
connect('127.0.0.1');
return $redis;
}
protected function _getProgramStats($program)
{
$database = $program['Program']['database'];
$tempParticipant = new Participant(array('database' => $database));
$activeParticipantCount = $tempParticipant->find(
'count', array(
'conditions' => array('session-id' => array(
'$ne' => null)
)
)
);
$participantCount = $tempParticipant->find('count');
```
$tempHistory = new History(array('database' => $database));
$AllReceivedMessagesCount = $tempHistory->find(
'count',array(
'conditions' => array('message-direction' => 'incoming'))
);
$AllSentMessagesCount = $tempHistory->find(
'count',array(
'conditions' => array('message-direction' => 'outgoing'))
);
$historyCount = $tempHistory->find(
'count', array(
'conditions' => array('object-type' => array('$in' => $tempHistory->messageType))));
$tempSchedule = new Schedule(array('database' => $database));
$now = new DateTime('now');
$todayScheduleCount = $tempSchedule->find(
'count',array(
'conditions' => array('date-time' => $now)
));
$scheduleCount = $tempSchedule->find('count');
$programStats = array(
'active-participant-count' => $activeParticipantCount,
'participant-count' => $participantCount,
'all-received-messages-count'=> $AllReceivedMessagesCount,
'all-sent-messages-count' => $AllSentMessagesCount,
'history-count' => $historyCount,
'today-schedule-count' => $todayScheduleCount,
'schedule-count' => $scheduleCount);
return $programStats;
```
}
public function getProgramStats($program)
{
$programStats = $this->_getProgramStats($program);
$program['Program']['stats'] = $this->_getProgramStats($program);
$program['Program']['stats']['active-participant-count'] = $programStats['active-participant-count'];
$program['Program']['stats']['participant-count'] = $programStats['participant-count'];
$program['Program']['stats']['all-received-messages-count'] = $programStats['all-received-messages-count'];
$program['Program']['stats']['all-sent-messages-count'] = $programStats['all-sent-messages-count'];
$program['Program']['stats']['history-count'] = $programStats['history-count'];
$program['Program']['stats']['today-schedule-count'] = $programStats['today-schedule-count'];
$program['Program']['stats']['schedule-count'] = $programStats['schedule-count'];
```
$database = $program['Program']['database'];
$redis = $this->getRedis();
$statsKey = 'vusion:programs:'.$database.':stats';
$stats = $redis->get($statsKey);
if(isset($stats)){
return json_decode($stats);
}else{
$redis->setex($statsKey, 100,json_encode($programStats));
//return $r;
}
```
}
}
?>
connect('127.0.0.1');
return $redis;
}
protected function _getProgramStats($program)
{
$database = $program['Program']['database'];
$tempParticipant = new Participant(array('database' => $database));
$activeParticipantCount = $tempParticipant->find(
'count', array(
'conditions' => array('session-id' => array(
'$ne' => null)
)
)
);
$participantCount = $tempParticipant->find('count');
```
$tempHistory = new History(array('database' => $database));
$AllReceivedMessagesCount = $tempHistory->find(
'count',array(
'conditions' => array('message-direction' => 'incoming'))
);
$AllSentMessagesCount = $tempHistory->find(
'count',array(
'conditions' => array('message-direction' => 'outgoing'))
);
$historyCount = $tempHistory->find(
'count', array(
'conditions' => array('object-type' => array('$in' => $tempHistory->messageType))));
$tempSchedule = new Schedule(array('database' => $database));
$now = new DateTime('now');
$todayScheduleCount = $tempSchedule->find(
'count',array(
'conditions' => array('date-time' => $now)
));
$scheduleCount = $tempSchedule->find('count');
$programStats = array(
'active-participant-count' => $activeParticipantCount,
'participant-count' => $participantCount,
'all-received-messages-count'=> $AllReceivedMessagesCount,
'all-sent-messages-count' => $AllSentMessagesCount,
'history-count' => $historyCount,
'today-schedule-count' => $todayScheduleCount,
'schedule-count' => $scheduleCount);
return $programStats;
```
}
public function getProgramStats($program)
{
$programStats = $this->_getProgramStats($program);
$program['Program']['stats'] = $this->_getProgramStats($program);
$program['Program']['stats']['active-participant-count'] = $programStats['active-participant-count'];
$program['Program']['stats']['participant-count'] = $programStats['participant-count'];
$program['Program']['stats']['all-received-messages-count'] = $programStats['all-received-messages-count'];
$program['Program']['stats']['all-sent-messages-count'] = $programStats['all-sent-messages-count'];
$program['Program']['stats']['history-count'] = $programStats['history-count'];
$program['Program']['stats']['today-schedule-count'] = $programStats['today-schedule-count'];
$program['Program']['stats']['schedule-count'] = $programStats['schedule-count'];
```
$database = $program['Program']['database'];
$redis = $this->getRedis();
$statsKey = 'vusion:programs:'.$database.':stats';
$stats = $redis->get($statsKey);
if(isset($stats)){
return json_decode($stats);
}else{
$redis->setex($statsKey, 100,json_encode($programStats));
//return $r;
}
```
}
}
?>
isn't it sufficient?
public function getProgramStats($program)
{
$database = $program['Program']['database'];
$redis = $this->getRedis();
$statsKey = 'vusion:programs:'.$database.':stats';
$stats = $redis->get($statsKey);
if(isset($stats)){
return json_decode($stats);
}else{
// only in the case that it is not cache u need to calculate a again the stats
$programStats = $this->_getProgramStats($program);
$redis->setex($statsKey, 100,json_encode($programStats));
return $programStats;
}
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment