0

我正在使用 CodeIgniter 在 PHP 中开发 Ticker 支持客户端,我想知道用户是否已经打开票证以从列表中隐藏此票证。

我知道有在打开票证时更改数据库中的标志的解决方案,然后使用:

 $(window).unload(function() {
    $.ajax({async:false ..... 
    /* change flag in database */
 });

但是,如果用户的导航器强制关闭怎么办?我是否需要运行 CRON 任务来重置这些标志?您对完整的解决方案有一些反馈吗?谢谢。

4

2 回答 2

2

由于 PHP 在每次页面加载时只运行一次,因此持续检查用户是否仍在所需页面上的唯一方法需要 Javascript + AJAX。如何?

每隔 1-5 分钟,您使用上次更新的时间戳(如您所说)更新数据库中的特定字段,并在 PHP 脚本中检查该字段以关闭或保持该票证打开。

顺便注意一下,此解决方案需要启用 Javascript,因此您可以强制用户启用它(否则通过阻止它),或者您定义在没有页面加载的几分钟(15-1 小时)后关闭工单。

于 2012-12-19T09:31:54.317 回答
0

我可以提出几个选择。

  • 使用Jeffrey 建议的ajax 解决方案。

    优点:易于实现,支持所有浏览器

    缺点:不是真的住

  • 使用服务器发送事件(类似于 ajax 轮询解决方案)

    优点:开销少

    缺点: IE & Android 上不支持,不是真的直播

  • websockets一个完全实时的解决方案。在连接丢失或关闭时建立连接 => 释放票证。

    优点:直播,开销最小

    缺点: IE10 & Android上不支持<,在服务器端更难实现。

但是对于“不支持”的问题,有备用技术(modernizr

于 2012-12-19T09:45:15.030 回答