コード例 #1
0
ファイル: DefaultController.php プロジェクト: radzserg/csb
 public function actionLive()
 {
     $model = new CsbRequest('search');
     $model->unsetAttributes();
     // clear any default values
     if (isset($_GET['CsbRequest'])) {
         $model->attributes = $_GET['CsbRequest'];
     }
     $this->render('live', array('model' => $model));
 }
コード例 #2
0
ファイル: CsbRequestTest.php プロジェクト: radzserg/csb
 public function testLongRequest()
 {
     $ip = '2.2.2.2';
     // test 100 requests per 600 last seconds
     for ($i = 1; $i <= 100; $i++) {
         $request = new CsbRequest();
         $request->ip = ip2long($ip);
         $request->time = date('Y-m-d H:i:s', strtotime("-" . $i * 5 . " second"));
         $request->save();
     }
     CsbRequest::model()->checkLongIntervals();
     // check logs
     $this->assertEquals(1, CsbIpInfo::model()->count('ip = :ip', array(':ip' => ip2long($ip))));
     $this->assertEquals(1, CsbLog::model()->count('ip = :ip', array(':ip' => ip2long($ip))));
 }
コード例 #3
0
ファイル: CsbCheckerCommand.php プロジェクト: radzserg/csb
 public function actionIndex()
 {
     $scheduleSeconds = (int) Yii::app()->params['csb']['checkScriptSchedule'];
     $fromCheckPointTime = date('Y-m-d H:i:s', strtotime("-{$scheduleSeconds} seconds"));
     $this->_verbose('Check long interval requests...');
     CsbRequest::model()->checkLongIntervals();
     // clear data
     CsbRequest::model()->deleteAll('time < :time', array(':time' => $fromCheckPointTime));
     CsbIpInfo::model()->deleteAll('till_time < :time', array(':time' => date('Y-m-d H:i:s')));
     $this->_sendNotification($fromCheckPointTime);
 }
コード例 #4
0
ファイル: CsbRequest.php プロジェクト: radzserg/csb
 /**
  * Get request count for ip for last time
  * @param $ip
  * @param $minusSecond
  * @return string
  */
 public static function getRequestCount($ip, $minusSecond)
 {
     return CsbRequest::model()->count('ip = :ip AND time > :time', array(':ip' => ip2long($ip), ':time' => date('Y-m-d H:i:s', strtotime("- {$minusSecond} second"))));
 }