php - 使用ajax实时获取mysql新记录

标签 php jquery mysql ajax twitter

我在 mysql 中有一个 Twitter 流数据,它不断地每 5-10 条记录/秒添加一次。现在,我想获取创建时间的每条新记录,从客户端打开页面开始,一直持续到页面关闭。数据是 json,其中包含用于标记 map 的地理位置,并且它必须位于 javascript 变量内,这里是 json 格式:

{最大数据:30;数据:[{“lat”:-6.92015,“lon”:107.67024,“value”:0.1},...]}

我一直在研究 AJAX,但没有成功。这是我当前的代码:

get_query.php

<?php
require_once('./db_connect.php');
$dbcon=new db;

$query="SELECT geo_lat, geo_long FROM location WHEN created_at >= NOW()";

$result = mysqli_query($dbcon, $query);
$data= array(); 

while($row= mysqli_fetch_assoc($result)){
    $data[] = array("lat"=>(float)$row["geo_lat"], "lon"=>(float)$row["geo_long"], "value"=>0.1);
}

echo json_encode($data);
?>

data.js

var data = new array();

$(function() {
setInterval(function() {
    $.ajax({
        type: "GET",
        url: "/absolute/path/of/get_query.php",
        dataType: "json",
        data: $(this).serialize(),
        success: function(response) {
           data = response;
       }
    });
}, 1000);
});

我的问题: 1. 如何在用户打开页面后持续运行我的php代码? 2. 如何使用ajax从php连续获取数据而不删除以前的数据? 3.当用户关闭页面清空mysql中的记录时可能会收到事件吗?

谢谢

最佳答案

对于1和2,您需要使用轮询。检查这个例子:How do I implement basic "Long Polling"?

对于 3,你可以使用这个:

window.onbeforeunload = function() {
    $.ajax({
       type: 'POST',
       async: false, //Important
       url: 'function.php', //Here goes the function that deletes rows
       data: {param: param} //Here the params, if needed
    });
 };

我认为这应该可以解决这个问题!

关于php - 使用ajax实时获取mysql新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16780992/

相关文章:

php - 我应该如何在 phpmyadmin 中导入一个巨大的表

PHP + MsSQL = 复选框问题。需要帮忙!

javascript - 使用 foreach 可以更简单地编写吗?

mysql - innodb表中下一个id的生成

php - 从两个表中返回相同的值

php - 正则表达式允许字母数字和点

php - 将具有 NULL 字符的内存块从 C 传输到 PHP 程序

javascript - 在 onChange 之前捕获输入,最好只捕获数字

javascript - 鼠标悬停时停止滑动并在鼠标移出时开始播放

MySQL 将 3 个测验表与按属性/用户计算的总数连接起来