Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计时器mysql php检查_Php_Mysql_Timer - Fatal编程技术网

计时器mysql php检查

计时器mysql php检查,php,mysql,timer,Php,Mysql,Timer,这已经困扰了我一天了,我真的找不到,我有一个基本的登录/注册页面,注册时,mysql数据库中会存储一个时间戳(表计时器、列冷却): 我现在要做的是(我正在创建一个浏览器mmorpg),当我执行一个特定的POST请求时,我希望数据库中的计时器启动。此计时器应为1分钟,也可为用户显示,例如:每当计时器为=0时,我可以再次执行特定功能,并且计时器将再次设置为60秒 很抱歉,我缺乏相关知识,但我在任何地方都找不到如何做到这一点。您在这里尝试做的工作——一项背景工作——违背了PHP无共享环境中请求-响应循

这已经困扰了我一天了,我真的找不到,我有一个基本的登录/注册页面,注册时,mysql数据库中会存储一个时间戳(表计时器、列冷却):

我现在要做的是(我正在创建一个浏览器mmorpg),当我执行一个特定的POST请求时,我希望数据库中的计时器启动。此计时器应为1分钟,也可为用户显示,例如:
每当计时器为=0时,我可以再次执行特定功能,并且计时器将再次设置为60秒


很抱歉,我缺乏相关知识,但我在任何地方都找不到如何做到这一点。

您在这里尝试做的工作——一项背景工作——违背了PHP无共享环境中请求-响应循环的web开发原则。 但打破这种僵化循环有几种方法:

  • 如果您只需要在1分钟后进行一些数据库更新,您可以使用MySQL事件:
  • 如果要调用的函数没有运行太长时间,则可以在每个用户请求上检查
    timer
    表中是否有超过1分钟的条目
  • 创建一个每分钟由cron作业调用的PHP脚本。它检查
    timer
    表中是否有未处理的项,并对它们进行处理
  • 创建一个脚本,每分钟醒来检查一次
  • 如果您需要在1分钟后更改用户页面上的某些内容,那么使用JavaScript超时和AJAX或websockets执行PHP脚本调用客户端是更好的选择

要向用户显示倒计时,必须使用JavaScript。如果您使用的是服务器端计时器,那么您可以将其仅用于显示目的,在倒计时结束时隐藏倒计时。要解决“用户在timout完成之前打开新页面”的问题,请将剩余几秒钟的数据放入HTML
data
属性中,您的JavaScript代码可以读取这些数据。

在开始创建如此复杂的游戏之前,请先阅读
mysqli.*
PDO
。。。
mysql.*
函数已被弃用。是否在数据库中设置计时器?我相信您正在寻找一些调用不同函数的jQuery计时器,可能是ajax或post,但我建议在客户端侧井处理计时器,我对其他可能性持开放态度,但是如果我打开另一个页面,Javascript中的“冷却时间”就会重置,对吗?将其存储在数据库中并链接到用户ID不是更好吗?好吧,这是不可能的。只有在用户发送操作后才能在服务器上执行操作。您可以尝试使用CLI。它每X分钟自动在服务器上运行一次php脚本,但不会直接回答您的问题(不会被事件激活)。您可以尝试计算自上次用户操作以来经过了多少时间,并计算经过了多少“滴答声”(60秒间隔),然后正确设置数据(例如,200秒后的用户操作=3个“滴答声”+20秒)因此玩家的“金币”增加3*(每60秒金币的数量),您将计时器设置为-20秒以进行补偿。不知道他们是怎么做的,但我没有更好的解决方案
$settime = mysql_query("INSERT INTO `timer` (`cooldown`) VALUES(0)") or die(mysql_error());