你可以在循环中添加一个定时器,每隔五秒进行一次检查。首先,查询onoffline表,根据on2off字段判断是在线日志还是离线日志(1表示离线,0表示在线)。然后,将本次查询的最大id赋值给变量$onoffline_id,以便避免重复查询。以下是修改后的代码示例:
$onoffline_id = 0;
while (1) {
try {
$conn = new mysqli(trim($dbhost), trim($dbuser), trim($dbpwd), trim($dbname));
if ($conn->connect_error) {
if ($debug)
echo("连接MySQL失败: ".$conn->connect_error."\n");
continue;
}
// 查询onoffline表
$query = "SELECT MAX(id) AS max_id FROM onoffline";
$result = $conn->query($query);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
$max_id = $row['max_id'];
// 判断是否有新行数据
if ($max_id > $onoffline_id) {
$query2 = "SELECT * FROM onoffline WHERE id > $onoffline_id";
$result2 = $conn->query($query2);
if ($result2->num_rows > 0) {
while ($row2 = $result2->fetch_assoc()) {
// 根据on2off字段判断是在线日志还是离线日志
if ($row2['on2off'] == 1) {
// 离线日志处理
// ...
} else {
// 在线日志处理
// ...
}
}
}
$onoffline_id = $max_id;
}
}
}
$conn->close();
} catch (mysqli_sql_exception $e) {
if ($debug)
echo 'Caught exception: '.$e->getMessage();
continue;
}
sleep(5); // 每隔五秒进行一次检查
}
注意:以上代码仅供参考,具体根据你的业务需求进行适当修改。
内容由零声教学AI助手提供,问题来源于学员提问




