Ejemplo n.º 1
0
 public function m_0_4_15()
 {
     @apache_setenv('no-gzip', 1);
     @ini_set('zlib.output_compression', 0);
     @ini_set('implicit_flush', 1);
     ini_set('memory_limit', '-1');
     $this->flushNotification("\n...Please wait... Updating is going on... DO NOT LEAVE THIS PAGE!");
     $this->flushNotification("<br/><br/>...Update fields types!");
     $sql = "ALTER TABLE `station_calculation_data` CHANGE `value` `value` DECIMAL( 15, 4 ) NOT NULL";
     Yii::app()->db->createCommand($sql)->query();
     Yii::app()->db->createCommand("COMMIT")->query();
     $this->flushNotification("<br/><br/>...Done!");
     $this->flushNotification("<br/><br/>...Update fields types!");
     $sql = "ALTER TABLE `sensor_data` CHANGE `sensor_feature_value` `sensor_feature_value` DECIMAL( 15, 4 ) NOT NULL";
     Yii::app()->db->createCommand($sql)->query();
     Yii::app()->db->createCommand("COMMIT")->query();
     $this->flushNotification("<br/><br/>...Done!");
     $this->flushNotification("<br/><br/>...Update fields types!");
     $sql = "ALTER TABLE `sensor_data` CHANGE `sensor_feature_normalized_value` `sensor_feature_normalized_value` DECIMAL( 15, 4 ) NOT NULL";
     Yii::app()->db->createCommand($sql)->query();
     Yii::app()->db->createCommand("COMMIT")->query();
     $this->flushNotification("<br/><br/>...Done!");
     $sql = "SELECT t2.sensor_data_id, `t1`.`calculation_data_id`, `t1`.`listener_log_id`, `t1`.`value`\n                FROM `" . StationCalculationData::model()->tableName() . "` `t1`\n                LEFT JOIN `" . SensorData::model()->tableName() . "` `t2` ON `t2`.`listener_log_id` = `t1`.`listener_log_id`\n                where    t2.sensor_data_id is null \n                ";
     $res = Yii::app()->db->createCommand($sql)->queryAll();
     if ($res) {
         $total = count($res);
         for ($i = 0; $i < $total; $i++) {
             if (!$res[$i]['sensor_data_id']) {
                 StationCalculationData::model()->deleteByPk($res[$i]['calculation_data_id']);
             }
         }
     }
     $sql = "SELECT `t1`.`station_id`, t1.handler_id\n                FROM `" . StationCalculation::model()->tableName() . "` `t1`\n                LEFT JOIN `" . Station::model()->tableName() . "` `t2` ON t2.station_id = t1.station_id";
     $res_stations = Yii::app()->db->createCommand($sql)->queryAll();
     $count = count($res_stations);
     $stations = array();
     if (is_array($res_stations) && $count) {
         $station_ids = array();
         for ($i = 0; $i < $count; $i++) {
             if (!$stations[$res_stations[$i]['station_id']]) {
                 $stations[$res_stations[$i]['station_id']]['station_object'] = Station::model()->findByPk($res_stations[$i]['station_id']);
                 $stations[$res_stations[$i]['station_id']]['last_logs'] = ListenerLog::getLastMessages($res_stations[$i]['station_id']);
             }
             $handler_id = $res_stations[$i]['handler_id'] == 1 ? 'DewPoint' : 'PressureSeaLevel';
             $handler = CalculationHandler::create($handler_id);
             if ($stations[$res_stations[$i]['station_id']]['last_logs'][0]['log_id']) {
                 $handler->calculate($stations[$res_stations[$i]['station_id']]['station_object'], $stations[$res_stations[$i]['station_id']]['last_logs'][0]['log_id']);
             }
             if ($stations[$res_stations[$i]['station_id']]['last_logs'][1]['log_id']) {
                 $handler->calculate($stations[$res_stations[$i]['station_id']]['station_object'], $stations[$res_stations[$i]['station_id']]['last_logs'][1]['log_id']);
             }
         }
     }
     It::memStatus('update__success');
     $this->flushNotification('<script type="text/javascript"> setTimeout(function(){document.location.href="' . Yii::app()->controller->createUrl('update/index') . '"}, 5000)</script>');
 }