CronAction.class.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <?php
  2. class CronAction extends Action {
  3. public function deleteWdRecords( ){
  4. $config = C('ORACLE_CONFIG');
  5. $host= $config['host'];
  6. $port= $config['port'];
  7. $instance_name= $config['instance_name'];
  8. $username= $config['username'];
  9. $password= $config['password'];
  10. /*
  11. $host= '192.168.100.23';
  12. $port= '1521';
  13. $instance_name= 'helowin';
  14. $username= 'DSSC3';
  15. $password= 'Rliandssc3';
  16. */
  17. $conn = oci_connect($username, $password, $host.':'.$port.'/'. $instance_name,'AL32UTF8');
  18. if (!$conn) {
  19. $e = oci_error();
  20. trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
  21. }
  22. $min_id=0;
  23. $query_sql='select ID from DSSC2.W_DW_RF_RECORD where rownum = 1 order by ID Asc ';
  24. $stid = oci_parse($conn, $query_sql);
  25. oci_define_by_name($stid, 'ID', $min_id);
  26. oci_execute($stid);
  27. oci_fetch($stid);
  28. $max_id=0;
  29. $query_sql='select ID from DSSC2.W_DW_RF_RECORD where rownum = 1 order by ID Desc ';
  30. $stid = oci_parse($conn, $query_sql);
  31. oci_define_by_name($stid, 'ID', $max_id);
  32. oci_execute($stid);
  33. oci_fetch($stid);
  34. if(($max_id-$min_id )<2900000000){
  35. echo '['.date('Y-m-d H:i:s').']无数据删除,起始ID:'.$min_id.',结束ID:'.$max_id.PHP_EOL;
  36. oci_close($conn);
  37. return;
  38. }
  39. $time=date("Y-m-d",strtotime("-1 day"));
  40. $where=array(
  41. 'date'=>$time
  42. );
  43. $count=M('station_passing')->where($where)->sum('num');
  44. echo '['.date('Y-m-d H:i:s').']删除:'.$count.'数据,起始ID:'.$min_id.PHP_EOL;
  45. for($i=0;$i<=$count;$i++){
  46. $del_sql='DELETE FROM DSSC2.W_DW_RF_RECORD WHERE ID = '.$min_id;
  47. $stid = oci_parse($conn, $del_sql);
  48. $r = oci_execute($stid);
  49. oci_free_statement($stid);
  50. $min_id++;
  51. }
  52. oci_close($conn);
  53. /*
  54. ;
  55. $length=C('ORACLE_DATA_LENGTH')?C('ORACLE_DATA_LENGTH'):800000000;
  56. $delete_id=$max_id-$length;
  57. while($min_id<=$delete_id){
  58. $del_sql='DELETE FROM DSSC2.W_DW_RF_RECORD WHERE ID = '.$min_id;
  59. $stid = oci_parse($conn, $del_sql);
  60. $r = oci_execute($stid);
  61. oci_free_statement($stid);
  62. $min_id++;
  63. }
  64. oci_close($conn);
  65. */
  66. }
  67. public function monitor_proces( ){
  68. //检测 消费进程是否正常消费
  69. $redis = Redis("nbfd_monitor_process_id","hash");
  70. $list=$redis->select();
  71. foreach($list as $key=>$val){
  72. $item=json_decode($val,true);
  73. $int=time()-$item['time'];
  74. if($int>12*3600){
  75. posix_kill($item['pid'], SIGHUP);
  76. $redis->where($key)->delete();
  77. }
  78. }
  79. //检测ftp目录文件是否堆积
  80. $dir=C('FTP_LOCAL_DIR');
  81. $arr = scandir($dir);
  82. $all = count($arr)-2;//所有文件总数除./和../
  83. if($all>=20){
  84. //超过20则推送告警 并记录告警时间 间隔多久推送一次
  85. $str='目录'.$dir.'文件堆积数量过多,堆积数:'.$all;
  86. $email=C('FTP_DIR_ALARM_EMAIL');
  87. $config = new Darabonba\OpenApi\Models\Config([
  88. // 必填,您的 AccessKey ID
  89. "accessKeyId" =>'LTAI4FecTAyMPdhAdkUwhAGA',
  90. // 必填,您的 AccessKey Secret
  91. "accessKeySecret" =>'Ih0knSSfcje3OUi1YrdjeXQZYIfmTK'
  92. ]);
  93. // 访问的域名
  94. $config->endpoint = "dm.aliyuncs.com";
  95. $client =new \AlibabaCloud\SDK\Dm\V20151123\Dm($config);
  96. $singleSendMailRequest =new \AlibabaCloud\SDK\Dm\V20151123\Models\SingleSendMailRequest([
  97. "addressType" => 1,
  98. "accountName" => "system@fdmail.renlianiot.com",
  99. "tagName" => "renlianiot",
  100. "toAddress" =>$email,
  101. "htmlBody" => $str,
  102. "replyToAddress" => true,
  103. "subject" => "防盗监控告警"
  104. ]);
  105. $resp = $client->singleSendMail($singleSendMailRequest);
  106. }
  107. // var_dump($resp);
  108. }
  109. }