【问题标题】:PHP how to check current DateTime and future DateTime until difference becomes 0PHP如何检查当前日期时间和未来日期时间,直到差异变为0
【发布时间】:2016-08-29 18:23:15
【问题描述】:

是否可以使用 PHP 每 30 秒检查一次当前 DateTime 和未来 DateTime 直到差异变为 0(当前 DateTime 等于未来 DateTime),精度为一分钟? 我的代码不是每 30 秒连续一次:

<?php
  $dt_format = 'Y-m-d H:i';

  $new_row = "<br>";

  $dt_now = new DateTime();
  $date1 = DateTime::createFromFormat($dt_format, '2016-09-01 14:00');
  $date2 = DateTime::createFromFormat($dt_format, '2016-09-01 14:15');

  print("Today is " . $dt_now->format($dt_format) . $new_row);

  $diff1 = $dt_now->diff($date1);
  print ($diff1->format('%y years %m months %d days %h hours %i minutes') . $new_row);

  $diff2 = $dt_now->diff($date2);
  print ($diff2->format('%y years %m months %d days %h hours %i minutes') . $new_row);
?>

【问题讨论】:

  • 嗯什么?我相信这会造成一个悖论。
  • @cmorrissey 伟大的斯科特!
  • 我相信他们要问的是他们能否在变量中设置未来的日期/时间,并让 php 每 30 秒(cron 或类似)检查一次以查看当前时间是否等于该变量日期/时间。可能会触发某种动作。
  • 你到底想达到什么目的?

标签: php datetime


【解决方案1】:

您想阻止页面加载到时间匹配吗?如果目标时间太长,这将导致服务器资源耗尽。

PHP 是单线程的,因此您无法在后台执行此检查。

最好为用户写一个等待页面,它会尝试每 30 秒重新加载一次。

如果时间到了,显示内容,否则显示有这个内容的页面:

<p>Please wait until (put target time)</p>
<script>
     setTimeout(function() {
          window.location.reload();
     }, 30000);
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    相关资源
    最近更新 更多