亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

訪問頁面時間隔一段時間后調用函數

訪問頁面時間隔一段時間后調用函數

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 關注
  • 104 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號