统计点击tab方法

//点击tab写入文件,定时将数据更新到数据库
public function timing_update_data(){
if(!$_SESSION['id'] || !$_SESSION['nickname']){
echo json_encode(['code'=>'no', 'message'=>'请重新登录']);die;
}

$update_time = 1800;//多长时间更新一次,单位是秒,默认半小时
$title = $this->_post('title');//接收ajax传递的值
$uid = $_SESSION['id'];
$nickname = $_SESSION['nickname'];
$date = date('Y-m-d', time());
$filename = dirname(dirname(__FILE__)).'/tab.txt';//文件路径
$updatefilename = dirname(dirname(__FILE__)).'/last_update.txt';
$s = '';
if (file_exists($filename)) {
//读取文件信息
$content = file_get_contents($filename);
$arr = $arrList = array();
if ($content) {
//文件中内容不为空
//数据处理
$ary = explode("\n", $content);
foreach ($ary as $line) {
$data_ary = explode('|', $line);
if($data_ary[0] && $data_ary[1] && $data_ary[2] && $data_ary[3]){
$arr['title'] = $data_ary[0];
$arr['uid'] = $data_ary[1];
$arr['click_date'] = $data_ary[2];
$arr['click_date_num'] = $data_ary[3];
$arrList[] = $arr;
}
}
}else{
//文件内容为空
$arr['title'] = $title;
$arr['uid'] = $uid;
$arr['click_date'] = $date;
$arr['click_date_num'] = 1;
$arrList[] = $arr;
}
$aa = [
'title' => $title,
'uid' => $uid,
'click_date' => $date,
];
if($this->multidimensional_search($arrList, $aa) !== false){
foreach ($arrList as $key=>$list){
if(in_array($title, $list) && in_array($uid, $list) && in_array($date, $list)){
//当前进来的数据已存在,次数+1
$arrList[$key]['click_date_num'] += 1;
}
}
}else{
$aa['click_date_num'] = 1;
array_push($arrList, $aa);unset($aa);
}
//将数据整理成字符串
foreach ($arrList as $key => $val) {
$s .= $val['title'] . '|' . $val['uid'] . '|' . $val['click_date'] . '|' . $val['click_date_num'] . "\n";
}
} else {
$s .= $title . '|' . $uid . '|' . $date . '|1' . "\n";//这个是初始化记录文件
}
unset($arrList);unset($arr);
//从第一个位置开始写入记录文件
$fp = fopen($filename, "w");
//加入锁定
if (flock($fp, LOCK_EX)) { // 锁定文件
fwrite($fp, $s); //写入信息
flock($fp, LOCK_UN); // 释放锁定
}

//fwrite($fp, $s);
fclose($fp);
@chmod($filename, 0777);

$last_update = file_get_contents($updatefilename);//取上一次更新的时间
$last_update = intval($last_update);
if (($last_update + $update_time) < time()) {
//将数据写入MySQL
$data = file_get_contents($filename);
$clickData = array();
if ($data) {
$arrays = explode("\n", $data);
foreach ($arrays as $line) {
$array = explode('|', $line);
if($array[0] && $array[1] && $array[2] && $array[3]){
$arr1['title'] = $array[0];
$arr1['uid'] = $array[1];
$arr1['click_date'] = $array[2];
if($info = M('taobao_user_click')->where($arr1)->find()){
$ar = [
'click_date_num'=>$info['click_date_num']+$array[3],
'update_time' =>time()
];
if(!M('taobao_user_click')->where(['id'=>$info['id']])->save($ar)){
echo json_encode(['message'=>'新增失败','code'=>'error']);die;
}
}else{
$arr1['click_date_num'] = $array[3];
$arr1['nickname'] = $nickname;
$arr1['create_time'] = time();
$arr1['update_time'] = time();
$clickData[] = $arr1;unset($arr1);
}
}
}
if($clickData){
if(!M('taobao_user_click')->addAll($clickData)){
echo json_encode(['message'=>'新增失败','code'=>'error']);die;
}
}
}
unset($clickData);unset($arrays);unset($array);unset($data);
//点击数更新完了,将这个记录文件清空
$fp = fopen($filename, "w");
fwrite($fp, '');
fclose($fp);
@chmod($filename, 0777);

//将最后一次更新时间改为当前时间
$fp = fopen($updatefilename, "w");
fwrite($fp, time());
fclose($fp);
@chmod($updatefilename, 0777);
}
echo json_encode(['message'=>'成功','code'=>'ok']);
}

猜你喜欢

转载自www.cnblogs.com/liujiyun/p/9132553.html