本帖最后由 xuzuning 于 2011-09-20 15:42:13 编辑

解决方案 »

  1.   

    这位兄弟,你可以用memcached啊,memcached有自动过期功能,有动作的时候就设置一下动作key,同时把过期设置成5个小时。至于其他判断就很简单了
      

  2.   

    Fatal error: Class 'MemCachedClient' not found
    还要给Php装扩展吗?这个我没办法改啊
      

  3.   

    就是存储的时候直接存储时间戳,不转换成日期格式。取出来的时候不用strtotime,直接相减就行了啊
      

  4.   

    直接设置cookie就可以了
    帐号登陆时候设置cookie,失效时间为5小时
    如果有动作,那么就继续设置cookie,失效时间为5小时如果5小时没有动作,cookie消失了,登陆就失效了
      

  5.   

    用数组会好一些。参考:// 这个放在函数外面,最好统一设置,保持系统时间的一致。
    date_default_timezone_set ( 'Asia/Chongqing' );function is_send_codes($code, $cache_path = "./codelist.txt") {

    $fp = @fopen ( $cache_path, 'r+' );
    if (FALSE === $fp) {
    $fp = @fopen ( $cache_path, 'w+' );
    }

    // 读取文件
    $data_string = NULL;
    while ( ! feof ( $fp ) ) {
    $data_string .= fread ( $fp, 8192 );
    }
    fclose ( $fp );

    if ($data_string != "") {
    $data = unserialize ( $data_string ); // 反序列化,转化成数组
    } else {
    $data = array (); // 默认为空数据
    }

    // 没有缓存过该帐号
    if (! isset ( $data [$code] )) {
    $data [$code] = time ();
    $fp = fopen ( $cache_path, 'w+' );
    fwrite ( $fp, serialize ( $data ) );
    fclose ( $fp );
    return TRUE;
    }

    // 缓存过,但超时
    if (time () - $data [$code] > 60 * 60 * 5) {
    $data [$code] = time ();
    $fp = fopen ( $cache_path, 'w+' );
    fwrite ( $fp, serialize ( $data ) );
    fclose ( $fp );
    return TRUE;
    }
    return FALSE;
    }