0)) { die("Error in parameter."); } $action=@$_GET['action']; if(!empty($action) && $action=='prepare') { $content="php -f /var/www/ftp2.westgis.ac.cn/wsndata.php $uid"; $filename='wsndata.sh'; if (!file_put_contents($filename, $content, LOCK_EX)) { sleep(1); if (!file_put_contents($filename, $content, LOCK_EX)) { sleep(1); if (!file_put_contents($filename, $content, LOCK_EX)) die("error in write wsndatar.sh"); } } } else { $sql_user = "SELECT distinct u.uid,u.site,u.starttime,u.endtime ,s.fld_name,case when (u.variable=-1) then '-1' else '1' end as variable from users_pm_down u left join tbl_site_info s on u.site=s.fld_site_id where starttime is not null and result=-1 and type='down' and uid=$uid"; $sth_user = $db->query($sql_user); $rows_user = $sth_user->fetchAll(); //有需要生成的数据 if($rows_user) { foreach($rows_user as $k=>$v ) { //逐个生成 $site = $v['site']; $variable = $v['variable']; $start = date('Y-m-d',strtotime($v['starttime'])); $end = date('Y-m-d',strtotime($v['endtime'])); $uid = $v['uid']; //计算有多少天 $days=round((strtotime($end)-strtotime($start))/3600/24)+1; //获取观测点的名称 $sitename= $v['fld_name']; //先为该用户创建一个文件夹 $aimDir_user=$basepath.'wsn_'.$uid; if (!file_exists($aimDir_user)) { $result = mkdir($aimDir_user); } //在该用户文件夹下面再建立一个观测点文件夹 $aimDir_site=$aimDir_user.DIRECTORY_SEPARATOR.$sitename; if (!file_exists($aimDir_site)) { $result = mkdir($aimDir_site); } //获取变量名称 $sql="select distinct va.fld_name from tbl_site_sensor_variable ssv left join tbl_variable_info va on ssv.fld_variable_id=va.fld_variable_id WHERE ssv.fld_site_id=$site"; if ($variable==1) { $sql.=" and va.fld_variable_id in (select distinct variable from users_pm_down where starttime is not null and result=-1 and type='down' and uid=$uid) "; } $sql.=" order by va.fld_name"; $sth=$db->query($sql); $rs=$sth->fetchAll(); if (!$rs) continue; $head = "Time"; $sql2= "select * from crosstab('SELECT v.fld_time as time,va.fld_name as variablename,v.fld_value as value FROM tbl_value v left join tbl_variable_info va on v.fld_variable_id=va.fld_variable_id WHERE v.fld_site_id=$site AND v.fld_time>=''$start'' AND v.fld_time<''$end'' "; if ($variable==1) { $sql2.=" and va.fld_variable_id in (select distinct variable from users_pm_down where starttime is not null and result=-1 and type=''down'' and uid=$uid) "; } $sql2.=" ORDER BY time', 'select distinct va.fld_name from tbl_variable_info va left join tbl_value v on v.fld_variable_id=va.fld_variable_id WHERE v.fld_site_id=$site AND v.fld_time>=''$start'' AND v.fld_time<''$end''"; if ($variable==1) { $sql2.=" and va.fld_variable_id in (select distinct variable from users_pm_down where starttime is not null and result=-1 and type=''down'' and uid=$uid) "; } $sql2.=" order by va.fld_name') as ct(time timestamp without time zone"; foreach($rs as $k=>$var) { $head.=", ".$var['fld_name']; $sql2.=",v".$k." real"; } $head.="\n"; $sql2.=")"; //获取数据 $sth2 = $db->query($sql2); //$rows2 = $sth2->fetchAll(); $endtime=date("Y-m-d",strtotime($start)+24*3600); $html=""; while ($v=$sth2->fetch()) { //组装数据 if ($v['time']>=$start && $v['time']<$endtime) { $html.=$v['time']; foreach ($rs as $k=>$var) $html.=",".$v['v'.$k]; $html.="\n"; } elseif ($v['time']>=$endtime) { //写入文件 $resulttime=date("Ymd",strtotime($start)); $fp = fopen($aimDir_site.DIRECTORY_SEPARATOR.$sitename.(($variable==-1)?"_all_":"_selected_").$resulttime.".CSV","w+"); fwrite($fp,$head.$html); //写入数据 fclose($fp); //关闭文件句柄 $start=$endtime; $endtime=date("Y-m-d",strtotime($start)+24*3600); $html=$v['time']; foreach ($rs as $k=>$var) $html.=",".$v['v'.$k]; $html.="\n"; } } //写入文件 $resulttime=date("Ymd",strtotime($start)); $fp = fopen($aimDir_site.DIRECTORY_SEPARATOR.$sitename.(($variable==-1)?"_all_":"_selected_").$resulttime.".CSV","w+"); fwrite($fp,$head.$html); //写入数据 fclose($fp); //关闭文件句柄 print $sitename."\r\n"; $sql_up= "update users_pm_down set result=0 WHERE site=$site and uid=$uid and result=-1 and type='down'"; $db->query($sql_up); } } }