1、数据存入 Rides
/*------------------------data数据存入rides数据库-----------------------------*/
function _setByTj4($data)
{global $redis4;if (!$redis4) {$redis4 = new Redis();$redis4->connect('127.0.0.1');// 选择数据库,例如数据库3$redis4->select(4);}$jsonString = json_encode($data, true);$redis4->rPush('sqlQueue', $jsonString);
}
2、读取并删除Rides对应读取内容
// 连接到 Redis
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->select(4);// 从头部删除并返回指定数量的元素
function popLeftElements($listName, $count)
{global $redis;// 获取列表的前 count 个元素$elements = $redis->lRange($listName, 0, $count - 1);// 删除这些元素$redis->lTrim($listName, $count, -1);return $elements;
}// 删除并返回前2000个元素
$removedElements = popLeftElements('sqlQueue', 2000);$result = array_map(function ($json) {return json_decode($json, true); // 将 JSON 字符串转换为数组
}, $removedElements);// 构建批量插入SQL语句
$sql = "INSERT INTO access_records (member_id,ip,url,headers,source,addTime,wxopenid) VALUES ";$valuesArr = [];
foreach ($result as $row) {$member_id = $row['member_id'] ? $row['member_id'] : 0;$ip = $row['ip'] ? $row['ip'] : '';$url = $row['url'] ? $row['url'] : '';$headers = $row['headers'] ? $row['headers'] : '';$source = $row['source'] ? $row['source'] : '';$addTime = $row['addTime'];$wxopenid = $row['wxopenid'] ? $row['wxopenid'] : '';$valuesArr[] = "('{$member_id}', '{$ip}', '{$url}', '{$headers}', '{$source}', '{$addTime}', '{$wxopenid}')";
}
$sql .= implode(", ", $valuesArr);
_query($sql);
echo '执行成功' . count($result) . '条';