目前正致力于一个用于后台的CRM项目,用户可以在其中创建新客户端并定义某些事件,如后续控制,SLA控制等。
这个想法是在网页上发布通知,但仅针对新事件,例如,我会在14:00触发事件,在14:15触发另一个事件,但是每个事件只发射一次。
实现这一目标的最佳方法是什么?我应该考虑哪个时间间隔以避免在mysql数据库中挣扎?
答案 0 :(得分:0)
正如你提到的ajax我假设你指的是类似于浏览器上的小弹出窗口。
如果是这样,你需要使用javascript来进行调用。我已经读过人们正在使用网络套接字进行实时更新,但由于我不熟悉,所以我会留下专家来指导您。
另外,为了使弹出很好,你将不得不使用像pnotify这样的东西。
您需要遵循的步骤。
让您的javascript每5分钟左右查询一次服务器。我每5分钟提一次的原因是计数器在页面加载时被重置。因此,如果页面/脚本在10分钟内加载,则下一次调用将从该加载开始15分钟。因此,您需要确定间隔值。
<script>
function getnewrecords(){
$.ajax({ //notice I have used jquery to do the ajax calling.
url: "http://yourapiurl.org/api/function",
type: 'GET',
success: function(res) { //res is the ajax result
console.log(res); //console output
//call javascript notified plugins function to display popup here
}
});
}
setInterval ( getnewrecords, 900000); //time mentioned in miliseconds. 1 second = 1000 ms. Therefore 60,000 * 15 = 900,000
</script>
在CI控制器中调用模型并获取db结果。时间问题也出现在这里。所以你可能不得不考虑逻辑。例如存储最后一次在会话中调用此函数墙并在此时间之后插入记录。 做模型调用并回显你需要的输出。 javascript将只显示此处的输出。因此,您可能必须考虑输出格式,例如是否需要是json对象等。相应地替换您的javascript代码。
需要注意的是调用javascript函数的时间间隔,以及存储/识别上次在CI中调用函数的方法。
此外,如果您需要点击类似电子邮件的内容,则需要使用cronjob来调用您的CI网址。
0 20 * * * wget yourCIurl/controller/function
cron会将此视为调用常规http网址。
祝你好运