代码之家  ›  专栏  ›  技术社区  ›  Ivar

PHP/MySQL:获取新条目的最佳方法?

  •  0
  • Ivar  · 技术社区  · 16 年前

    3 回复  |  直到 16 年前
        1
  •  0
  •   Tom Haigh    16 年前

    如果你想立即通知他们,你可以在储存信息时立即给他们发邮件。

        2
  •  0
  •   Regent    16 年前

    如果可能的话,每个组会有很多消息,而不是像这样的组级字段 LastNotificationTime 然后安排任务查找创建时间晚于当前时间的消息 值(然后将有关它们的报告发送给用户)并更新 上次通知时间

    LastActivityTimeInGroup 字段并将消息创建日期与之进行比较(可能会为其添加一些分钟以获得更流畅的体验),因此只有当时处于非活动状态的用户才会收到任何消息,如果有消息,则每个任务间隔时间不超过1条。

        3
  •  0
  •   Jason    16 年前

    我目前为此使用了一个密钥存储(memcachedb)。您可以添加一个键,例如“messageread”_{消息id}_{用户id}'设置为您选择的任何值(我只使用int 1),然后使用memcached客户机对用户拥有的所有消息执行getmulti(作为上面发布的键数组)。返回的任何密钥都将被读取:)

    http://memcachedb.org/

    要做到这一点,您需要在这里从pecl安装memcache或memcached客户机 http://pecl.php.net/package/memcache 这里呢 http://pecl.php.net/package/memcached 分别。安装memcachedb(需要一个具有shell访问权限的盒子),然后启动服务。

    $keys = array();
    foreach($mresult as $current){
        $keys[$current['message_id']] = 'messageread_'.$current['message_id'].'_'.$myid;
    }
    

    //使用“memcached”php客户端

    $result = $memcacheobj->getMulti($keys);
    

    getmulti返回'memcachekey'=>'memcachevalue'结构中的关联数组

    foreach($keys as $key => $val){
        if(isset($result[$val])) unset($keys[$key]);
    }
    

    $unread = array_values(array_flip($keys));
    

    现在您有一个未读消息数组,其结构如下:

    数组( 1=大于23, 等。。。

    这只是一个粗略的模拟过程,我相信可以做一些清理,以优化这:)