0

目前我使用以下 php 块选择最新的行,我有一个 ajax 循环,它每隔几秒钟运行一次这个 php 块以返回提要。我想在最新时间戳未更改时向 ajax 回显 false,以便 ajax 不会重复结果并用相同的内容填充我的 Div (#feed)。

<?php 
require_once 'db_conx.php';
$Result = mysql_query("SELECT * FROM profiles ORDER BY lastupdated desc limit 1") or die   (mysql_error());
while($row = mysql_fetch_array($Result)){
echo $row['name'];
}
mysql_close($con);
?> 
4

3 回答 3

2

在会话中的某处,或在请求者中,您需要存储上次获取的时间。最好将其存储为会话变量(我认为这是特定于客户端的,因为不同的客户端将在不同的时间加载),然后获取所有lastupdated时间大于last_fetched时间的记录。

每次从数据库中获取条目时,只需将last_fetched变量更新为当前时间戳。

于 2013-10-23T19:34:02.577 回答
1

如果你每 5 秒运行一次,我会做类似的事情

$Result = mysql_query("SELECT * FROM profiles WHERE lastupdated >  ADDTIME( NOW( ) ,  '-00:00:05.00000' ) ORDER BY lastupdated desc limit 1") or die   (mysql_error());
$num_rows = mysql_num_rows($result);
if ($num_rows = 0)  {
   return false;
} else {
   return true;
}

这将为您提供在过去 5 秒内已更新的所有行,如果它比这更旧,它应该在上次运行中被拾取。

希望这可以帮助

于 2013-10-23T21:55:36.520 回答
0

当您从服务器检索结果时,我猜您将最后一个查询的时间戳存储在某个 PHP 变量中,以便比较下一个查询的返回结果。我会将时间戳作为 where 子句连接到您的查询中,这样您的 sql 查询就会变成类似

$Result = mysql_query("SELECT * FROM profiles WHERE lastupdated > " . $timestamp . " ORDER BY lastupdated desc limit 1") or die   (mysql_error());

还值得注意的是,如果自上次更新周期以来更新了多个配置文件,则执行此操作时,它将仅返回最近更新的行。这回答了你的问题了吗?

于 2013-10-23T19:39:46.590 回答