-1

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

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

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

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

我只需要每 5 秒更新一次返回“true”或“false”的脚本(如果任何行为空)。

干杯,

麦兹

4

2 回答 2

0

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

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

如果您有能力将数据库更改为 PostgreSQL,那么它可以很好地解决这个问题。即,您在感兴趣的表上创建触发器,并在该触发器内使用NOTIFY.

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

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

于 2012-12-15T20:20:45.170 回答
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');
于 2012-12-15T20:23:02.593 回答