您好我想创建一个脚本来检测mysql表中的某些行是否不再为空。
我想我需要每隔5秒运行一个php脚本来检查certail表行。如果其中任何一个为空,则应继续更新。如果没有,它应该重定向到另一个显示更新/填充表的php页面。
关于如何做到这一点的任何想法?
有点像游戏“谁想成为百万富翁”,x人得到他们需要回答的同一个问题。回答它们会将答案存储在某些表行中。当这些行不为空时,主页面需要显示所有答案以及他们花费多长时间来回答它们。
我只需要每个第5个脚本的updste返回“true”或“false”(如果任何行为空)。
干杯,
的Mads
答案 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');