为了账号安全,请及时绑定邮箱和手机立即绑定

访问页面时间隔一段时间后调用函数

访问页面时间隔一段时间后调用函数

PHP
慕标5832272 2022-12-11 09:54:12
正如标题所说,我想在每次访问页面时调用一个函数,但前提是经过了特定的时间间隔。更准确地说:一个用户访问该页面并调用该函数。x 分钟后,当第一个用户访问该页面时,将再次调用该函数(无论其间是否有多少用户访问过该页面,或者经过了多少时间,如果至少为 x 分钟)。我正在使用 Wordpress,我的函数在 functions.php 中网站的特定页面正在调用该函数。我试图在我的 functions.php 中放置一个计时器来调用该函数,但它破坏了我的网站或让它永远加载(我尝试了多种代码和变体)$status=TRUE;do {    myFunction(){      //code here   }   sleep(60); //Sleep 60 seconds} while($status==TRUE);我认为另一种方法是检查时间(服务器时间或设置时区date_default_timezone_set('UTC');)并在特定时间(即:xx:00、xx:30)后调用该函数,但这将需要检查该函数之前是否被调用过。
查看完整描述

1 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

为此,您可以使用 Wordpress 瞬态 API ( https://codex.wordpress.org/Transients_API )。瞬态是一段具有超时的临时键值数据。在每次页面加载时,您测试您的瞬态是否存在。如果不是,请将其设置为 x 分钟过期时间(或您想要的任何过期时间)并执行您的代码。如果另一个用户在过期时间内访问该页面,瞬态仍然存在,代码将不会执行:


define('TRANSIENT_MY_INTERVAL'); // 5 minute interval for expiration


add_action('wp_loaded', 'do_this_regularly');


function do_this_regularly()

{

  $trans_timeout = 5 * MINUTE_IN_SECONDS; // define your timeout here

  $trans_lock = get_transient('my_transient_lock');

  if (! $trans_lock) { // will be false if expired or not set

    set_transient('my_transient_lock', true, $trans_timeout); // set the lock


    // <- perform your every x minutes action here!

  }

}

此代码仅在人们实际访问该页面时才会执行,就像使用 WP cron ( https://developer.wordpress.org/plugins/cron )一样。这也可以用于相同的确切目的 - 只是使用哪个的偏好问题。


查看完整回答
反对 回复 2022-12-11
  • 1 回答
  • 0 关注
  • 83 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信