2013-01-16 95 views

回答

3

我找到了答案是什麼,在組件中加入以下代碼/ Controller.php這樣

該代碼使用afterAction掛鉤,因此每次發生操作時都會觸發更新。

public function keepAlive() { 
     if (!Yii::app()->user->isGuest) { 
      User::model()->updateByPk(
        Yii::app()->user->id, array('lastactive' => date('Y-m-d H:i:s')) //CURRENT_TIMESTAMP..this working fine 
      ); 
     } 
    } 

// Runs after any action in controller 
    public function afterAction($action) { 
     self::keepAlive(); 
     parent::afterAction($action); 
    } 
1

您將需要自己動手使用javascript幫助。 將每個頁面的javascript間隔函數放在發送(ajax)請求到您的特定操作並更新用戶時間戳。

所以要sumup: 的JavaScript在頁面加載:ajaxUpdateActivity(userId); Yii的行動了解您的要求和更新需要更新actionAjaxUpdateActivity()

+0

是的,真的,你可以用js來做到這一點,但我找到了正確的答案,使用鉤子 –

+0

好吧,那很酷。是的,如果在長時間瀏覽頁面時沒有跟蹤用戶,則不需要js。如果他在頁面上10分鐘(哇,很長時間!),你會在過去10分鐘獲得活動。如果你願意在未來添加用戶活動更新,而他閱讀長篇文章,你將需要js。 –

+0

如果你想刷新計時器,從5到5分鐘,你應該使用JS,如果沒有,使用鉤子 –