2013-01-16 47 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,如果没有,使用钩子 –