$time ); $count=M('station_passing')->where($where)->sum('num'); echo '['.date('Y-m-d H:i:s').']删除:'.$count.'数据,起始ID:'.$min_id.PHP_EOL; for($i=0;$i<=$count;$i++){ $del_sql='DELETE FROM DSSC2.W_DW_RF_RECORD WHERE ID = '.$min_id; $stid = oci_parse($conn, $del_sql); $r = oci_execute($stid); oci_free_statement($stid); $min_id++; } oci_close($conn); /* ; $length=C('ORACLE_DATA_LENGTH')?C('ORACLE_DATA_LENGTH'):800000000; $delete_id=$max_id-$length; while($min_id<=$delete_id){ $del_sql='DELETE FROM DSSC2.W_DW_RF_RECORD WHERE ID = '.$min_id; $stid = oci_parse($conn, $del_sql); $r = oci_execute($stid); oci_free_statement($stid); $min_id++; } oci_close($conn); */ } public function monitor_proces( ){ //检测 消费进程是否正常消费 $redis = Redis("nbfd_monitor_process_id","hash"); $list=$redis->select(); foreach($list as $key=>$val){ $item=json_decode($val,true); $int=time()-$item['time']; if($int>12*3600){ posix_kill($item['pid'], SIGHUP); $redis->where($key)->delete(); } } //检测ftp目录文件是否堆积 $dir=C('FTP_LOCAL_DIR'); $arr = scandir($dir); $all = count($arr)-2;//所有文件总数除./和../ if($all>=20){ //超过20则推送告警 并记录告警时间 间隔多久推送一次 $str='目录'.$dir.'文件堆积数量过多,堆积数:'.$all; $email=C('FTP_DIR_ALARM_EMAIL'); $config = new Darabonba\OpenApi\Models\Config([ // 必填,您的 AccessKey ID "accessKeyId" =>'LTAI4FecTAyMPdhAdkUwhAGA', // 必填,您的 AccessKey Secret "accessKeySecret" =>'Ih0knSSfcje3OUi1YrdjeXQZYIfmTK' ]); // 访问的域名 $config->endpoint = "dm.aliyuncs.com"; $client =new \AlibabaCloud\SDK\Dm\V20151123\Dm($config); $singleSendMailRequest =new \AlibabaCloud\SDK\Dm\V20151123\Models\SingleSendMailRequest([ "addressType" => 1, "accountName" => "system@fdmail.renlianiot.com", "tagName" => "renlianiot", "toAddress" =>$email, "htmlBody" => $str, "replyToAddress" => true, "subject" => "防盗监控告警" ]); $resp = $client->singleSendMail($singleSendMailRequest); } // var_dump($resp); } public function deleteVehicle( ){ $config = C('ORACLE_CONFIG'); $host= $config['host']; $port= $config['port']; $instance_name= $config['instance_name']; $username= $config['username']; $password= $config['password']; $conn = oci_connect($username, $password, $host.':'.$port.'/'. $instance_name,'AL32UTF8'); $total=9000000; $count=0; for($i=0;$i<=$total;$i++){ $start=$i; $end=$i+1; // echo '---start---'.$start.PHP_EOL; $sql = 'SELECT * FROM ( SELECT o.ID AS O_ID,o.PLATE_NO,o.CAR_TYPE,o.CAR_BRAND,s.ID,s.RFID_SN,s.INSTALLER,ROWNUM RN FROM DSSC3.W_DW_NON_MOTOR o,DSSC3.W_DW_RFID_TAGS s WHERE ROWNUM <= '.$end.' AND o.rfid_id = s.id Order by O_ID desc ) WHERE RN >'.$start; $stid = oci_parse($conn, $sql); $r = oci_execute($stid); while($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) { //查询与车辆相同车牌信息 $sql = 'SELECT * FROM ( SELECT o.ID AS O_ID,o.PLATE_NO,o.CAR_TYPE,o.CAR_BRAND,s.ID,s.RFID_SN,to_char(s.INSTA_DATE,\'yyyy-mm-dd hh24:mi:ss\') INSTA_DATE,ROWNUM RN FROM DSSC3.W_DW_NON_MOTOR o,DSSC3.W_DW_RFID_TAGS s WHERE ROWNUM <=100 AND o.PLATE_NO= \''.$row['PLATE_NO'].'\' AND o.rfid_id = s.id ORDER BY INSTA_DATE DESC ) WHERE RN >0'; $stid = oci_parse($conn, $sql); $r = oci_execute($stid); $rows=[]; while($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) { $rows[]=$row; } // var_dump($rows); if(count($rows)>1){ var_dump($rows); foreach($rows as $key=>$vitem){ echo $vitem['PLATE_NO'].' '.$key.' '.$vitem['RFID_SN'].PHP_EOL; $this->debug_log($vitem['PLATE_NO'].' '.$vitem['RFID_SN'].PHP_EOL,'repeatPlate'); if($key==0){ continue; } echo 'delete key'.$key.PHP_EOL; //保留第一个不删除 // $sql2='DELETE FROM DSSC3.W_DW_NON_MOTOR WHERE ID in ('.$vitem['O_ID'].')'; // $stid = oci_parse($conn, $sql2); // $r = oci_execute($stid); } } } oci_free_statement($stid); } } }