Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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
PHP-等待2小时执行查询_Php_Mysql_Date_Time_Wait - Fatal编程技术网

PHP-等待2小时执行查询

PHP-等待2小时执行查询,php,mysql,date,time,wait,Php,Mysql,Date,Time,Wait,我正在制作恢复密码系统,我需要PHP等待2个小时,然后更新数据库表中的特定行,我将如何做到这一点 将开始时间存储在用户行上,然后每隔5分钟左右运行一次cron作业,并查询需要更新的作业 或者-当您需要访问应在2小时后更新的数据时,请检查该时间是否超过2小时,执行更新,然后获取数据。将开始时间存储在用户行上,然后每隔5分钟左右运行一次cron作业,并查询需要更新的作业 或者-当您需要访问本应在2小时后更新的数据时,检查该时间是否超过2小时,执行更新,然后获取数据。如果您在专用服务器上,您可以每10

我正在制作恢复密码系统,我需要PHP等待2个小时,然后更新数据库表中的特定行,我将如何做到这一点

将开始时间存储在用户行上,然后每隔5分钟左右运行一次cron作业,并查询需要更新的作业


或者-当您需要访问应在2小时后更新的数据时,请检查该时间是否超过2小时,执行更新,然后获取数据。

将开始时间存储在用户行上,然后每隔5分钟左右运行一次cron作业,并查询需要更新的作业


或者-当您需要访问本应在2小时后更新的数据时,检查该时间是否超过2小时,执行更新,然后获取数据。

如果您在专用服务器上,您可以每10分钟使用一个CRON,删除2小时以上的表项。


如果你不是在一个专用的服务器上,我认为你的服务提供商可以给你一个好方法

如果您使用的是专用服务器,您可以每10分钟使用一个CRON,删除超过2小时的表项。


如果你不是在一个专用的服务器上,我认为你的服务提供商可以给你一个好方法

您不会让PHP等待。向数据库中的恢复信息添加到期时间戳,然后在用户实际通过恢复系统时(如果?)检查该时间戳,例如

SELECT ...
WHERE (expirytimestamp >= NOW() - INTERVAL 2 HOUR)
如果用户在2小时内到达,此查询将返回相关记录,他们可以继续。如果他们超过了2小时的限制,恢复选项将过期,您将他们转移到“获取另一封重置电子邮件”路径


如果您不希望数据库中充斥着放弃的恢复尝试,那么您可以使用标准的CRON作业来删除过期的记录。

您不需要让PHP等待。向数据库中的恢复信息添加到期时间戳,然后在用户实际通过恢复系统时(如果?)检查该时间戳,例如

SELECT ...
WHERE (expirytimestamp >= NOW() - INTERVAL 2 HOUR)
如果用户在2小时内到达,此查询将返回相关记录,他们可以继续。如果他们超过了2小时的限制,恢复选项将过期,您将他们转移到“获取另一封重置电子邮件”路径


如果您不希望数据库中充斥着废弃的恢复尝试,那么您可以使用标准的CRON作业来删除过期的记录。

编程是简单意味着效率的事情之一。通过尝试找到定时删除行的方法,您添加了另一个需要编码的作业,这是另一个失败点

实现两小时重置限制的最佳方法是向表中添加时间戳行(
time()
,在PHP中)。然后,当您从恢复脚本中的表中读取行时

if ($time < time() - 2 * 60 * 60) {
    // Delete row
} else {
    // Perform recovery
if($time

这假设
$time
是存储的时间戳,并且您具有删除和恢复功能。顺便说一下,时间戳是以秒为单位的,因此
$time
检查存储的时间戳是否比当前时间戳短两小时(以秒计)。

编程是简单意味着效率的事情之一。通过尝试找到按时间删除行的方法,您正在添加另一个需要编码的作业,以及另一个故障点

实现两小时重置限制的最佳方法是向表中添加时间戳行(
time()
,在PHP中)

if ($time < time() - 2 * 60 * 60) {
    // Delete row
} else {
    // Perform recovery
if($time

这假设
$time
是存储的时间戳,并且您具有删除和恢复功能。顺便说一下,时间戳是以秒为单位的,因此
$time
检查存储的时间戳是否比当前时间戳短两小时(以秒计)。

是否需要在2小时后使记录过期?我需要删除该行。在检查脚本中的行之前,请在2小时内删除所有行。我会避免使用cron,因为它会增加额外的失败点。是否需要记录在2小时后过期?我需要删除该行。在检查脚本中的行之前,请在2小时内删除所有行。我会避免使用cron,因为cron会增加额外的故障点,但有没有更快的方法?说真的,上面的方法是最简单、最可靠的方法。请使用每周运行一次的脚本,然后重试自动恢复数据库,但通常只检查有人试图访问该行的日期。这样可以节省大量服务器资源。在高流量网站上,您可以期望人们一直尝试恢复密码,因此您可以使用这些恢复请求删除旧的“过期”密码行而不必使用cron。开销应该是最小的,没有人会注意到。简单但有效。谢谢,但是有没有更快的方法?说真的,上面的方法是最简单和最可靠的方法。有一个每周运行一次并清理数据库的脚本,但通常只在有人试图访问时检查日期这一行。您将为自己节省大量服务器资源。在高流量网站上,您可以期望人们随时尝试恢复其密码,因此您可以使用这些恢复请求删除旧的“过期”行而不必使用cron。开销应该最小,没有人会注意到。简单但有效。这允许最多两小时十分钟的恢复时间,而不是两小时。这允许最多两小时十分钟的恢复时间,而不是两小时