检测是否设置了某些db表行?

时间:2012-12-15 20:12:35

标签: php jquery

您好我想创建一个脚本来检测mysql表中的某些行是否不再为空。

我想我需要每隔5秒运行一个php脚本来检查certail表行。如果其中任何一个为空,则应继续更新。如果没有,它应该重定向到另一个显示更新/填充表的php页面。

关于如何做到这一点的任何想法?

有点像游戏“谁想成为百万富翁”,x人得到他们需要回答的同一个问题。回答它们会将答案存储在某些表行中。当这些行不为空时,主页面需要显示所有答案以及他们花费多长时间来回答它们。

我只需要每个第5个脚本的updste返回“true”或“false”(如果任何行为空)。

干杯,

的Mads

2 个答案:

答案 0 :(得分:0)

每5秒轮询一次听起来非常错误。

您应该重新考虑您对外部事件做出反应的工作流程。

如果您能负担得起将数据库更改为PostgreSQL,则可以为此问题提供良好的解决方案。也就是说,您在感兴趣的表上创建触发器,并在该触发器内使用NOTIFY

另一个想要对表更改做出反应的连接将使用LISTEN注册通知,然后使用连接句柄上的select()进入睡眠状态。然后,一旦触发器触发,此连接将立即收到此事件并立即对其作出反应。

这种方法允许在服务器和客户端上使用0个CPU时间,并立即对更改做出反应。

答案 1 :(得分:0)

一种方法:

当玩家回答问题时显示一个JavaScript计时器(例如,显示“等待其他玩家回答”消息)并每隔5秒触发一次异步查询到php脚本(比如waiting.php)。如果waiting.php返回0,则没有任何反应。在waiting.php返回1时,播放器被重定向到页面上将显示所有答案和时间

在waiting.php中,写下类似的内容:

echo (current(mysql_fetch_row(mysqli_query('SELECT count(*) from responses WHERE questionId = '.$_GET['QuestionId'].' AND answer_field IS NULL'))) > 0 ? '0' : '1');