Php Yii的消息系统实现
这已经在很多网站上实现了,比如说odesk,我想的是实现一个消息发送方案,通知用户他们已经收到消息 比如说 你给我发消息,我会从绿色显示消息红色图标。显然,我们需要一个数据库表来存储发送者id、接收者id等等,但我们如何实现它,使用户不需要点击刷新按钮 我是从c#出身的新手,所以不知道很多方法Php Yii的消息系统实现,php,module,yii,message,Php,Module,Yii,Message,这已经在很多网站上实现了,比如说odesk,我想的是实现一个消息发送方案,通知用户他们已经收到消息 比如说 你给我发消息,我会从绿色显示消息红色图标。显然,我们需要一个数据库表来存储发送者id、接收者id等等,但我们如何实现它,使用户不需要点击刷新按钮 我是从c#出身的新手,所以不知道很多方法 我正在用Yii开发它。没有什么好建议您可以通过使用简单的javascript方法来实现这一点 在具有消息指示器的视图中类似这样的内容: <?php Yii::app()->clientScri
我正在用Yii开发它。没有什么好建议您可以通过使用简单的javascript方法来实现这一点 在具有消息指示器的视图中类似这样的内容:
<?php Yii::app()->clientScript->registerScript('autoupdate-div-inbox-update',
"setInterval(function(){
// do an ajax call to server to check for new messages
// using jquery's ajax method
$.ajax({
url: 'http://example.com/index.php?r=controller/action',// this is the url that will check for new messages for the current user
success: function(data) {// data is the data returned from the server
if(data){
// update your new message div
// you can show your red icon here
}
}
});
return false;
},1000);"
);
?>
请阅读更多有关该网站的信息
这种模式也称为轮询,还有其他流行的方法,如长轮询和服务器推送,我不太熟悉,但在决定模式之前,您也应该检查它们
希望这能有所帮助,如果有,请询问澄清。谢谢。url可以是:url:“控制器/操作”。因为我使用apache的端口82,所以手动修改它以适应新的服务器配置可能会让人不舒服。哦,我忘了。“控制器/操作”仅适用于我们希望在视图中实现这一点的情况。我们应该将字符串凹形,如url:\“”。CController::createUrl('controller/action')。“\”,当然是的,但我会稍微改一句::“controller/action”只在php解析值时才起作用,在我的回答中,整个javascript脚本只是php的一个字符串。我不想通过连接使答案复杂化,假设询问者知道这一点。但感谢您的帮助,连接肯定会更好。
public function actionMessages(){
// check for new messages in the db
$xyz = checkMessage();
// assuming checkMessage returns the number of new messages if any or false if none
// whatever we echo will be available to the javascript we wrote in the data variable
echo $xyz;
}