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

正如标题所说,我想在每次访问页面时调用一个函数,但前提是经过了特定的时间间隔。


更准确地说:一个用户访问该页面并调用该函数。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)后调用该函数,但这将需要检查该函数之前是否被调用过。


慕标5832272
浏览 84回答 1
1回答

暮色呼如

为此,您可以使用 Wordpress 瞬态 API ( https://codex.wordpress.org/Transients_API )。瞬态是一段具有超时的临时键值数据。在每次页面加载时,您测试您的瞬态是否存在。如果不是,请将其设置为 x 分钟过期时间(或您想要的任何过期时间)并执行您的代码。如果另一个用户在过期时间内访问该页面,瞬态仍然存在,代码将不会执行:define('TRANSIENT_MY_INTERVAL'); // 5 minute interval for expirationadd_action('wp_loaded', 'do_this_regularly');function do_this_regularly(){&nbsp; $trans_timeout = 5 * MINUTE_IN_SECONDS; // define your timeout here&nbsp; $trans_lock = get_transient('my_transient_lock');&nbsp; if (! $trans_lock) { // will be false if expired or not set&nbsp; &nbsp; set_transient('my_transient_lock', true, $trans_timeout); // set the lock&nbsp; &nbsp; // <- perform your every x minutes action here!&nbsp; }}此代码仅在人们实际访问该页面时才会执行,就像使用 WP cron ( https://developer.wordpress.org/plugins/cron )一样。这也可以用于相同的确切目的 - 只是使用哪个的偏好问题。
打开App,查看更多内容
随时随地看视频慕课网APP