⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ct_split_sql.inc

📁 PHPLOB注释详细版 使用模板技术的好帮手 PHP最有用的东东了
💻 INC
字号:
<?php#### Copyright (c) 1999-2000 Internet Images srl##                    Massimiliano Masserelli#### $Id: ct_split_sql.inc,v 1.2 2000/07/12 18:22:33 kk Exp $#### PHPLIB Data Storage Container using a SQL database and multiple## rows for each element#### Every session-name pair will end up in one OR MORE table rows, thus## allowing serialization of huge quantities of data.##class CT_Split_Sql {    ##    ## Define these parameters by overwriting or by    ## deriving your own class from it (recommened)    ##        var $database_table = "active_sessions_split";    var $database_class = "";    var $database_lock_semaphore = "";    var $split_length = 4096;  ## Split data every xxx bytes    ## The only supported storage method is base64 encoding    ## end of configuration    var $db;    function ac_start() {        $name = $this->database_class;        $this->db = new $name;    }    function ac_get_lock() {        if ( "" != $this->database_lock_semaphore ) {            while ( ! $this->db->query("SELECT get_lock('%s')",                         $this->database_lock_semaphore) ) {                $t = 1 + time(); while ( $t > time() ) { ; }            }        }    }    function ac_release_lock() {        if ( "" != $this->database_lock_semaphore ) {            $this->db->query("SELECT release_lock('%s')",                     $this->database_lock_semaphore);        }    }    function ac_gc($gc_time, $name) {        $timeout = time();        $sqldate = date("YmdHis", $timeout - ($gc_time * 60));        $this->db->query(sprintf("DELETE FROM %s ".                    "WHERE ct_changed < '%s' AND ct_name = '%s'",                    $this->database_table,                     $sqldate,                    addslashes($name)));    }    function ac_store($id, $name, $str) {        $ret = true;        $str = base64_encode($str);        $name = addslashes($name);        $now = date("YmdHis", time());        $this->db->query("BEGIN TRANSACTION");        $this->db->query(sprintf("DELETE FROM %s WHERE ct_sid='%s' AND ct_name='%s'",            $this->database_table,            $id,            $name        ));        $count = 0;        while ($part = substr($str, 0, $this->split_length)) {            $this->db->query(sprintf("INSERT INTO %s ".                " (ct_sid, ct_name, ct_pos, ct_val, ct_changed) ".                "  VALUES ".                " ('%s','%s','%06d','%s','%s')",                $this->database_table,                $id,                $name,                $count++,                $part,                $now            ));            $str = substr($str, $this->split_length);        }        $this->db->query("END TRANSACTION");        return $ret;    }    function ac_delete($id, $name) {        $this->db->query(sprintf("DELETE FROM %s ".                    "WHERE ct_name = '%s' AND ct_sid = '%s'",                    $this->database_table,                    addslashes($name),                    $id));    }    function ac_get_value($id, $name) {        $this->db->query(sprintf("SELECT ct_val, ct_pos FROM %s ".                        "WHERE ct_sid  = '%s' AND ct_name = '%s' ".                        "ORDER BY ct_pos",                    $this->database_table,                    $id,                    addslashes($name)));        $str="";        while ($this->db->next_record()) {          $str .= $this->db->f("ct_val");        }        if (! empty($str)) {            $str = base64_decode($str);        };## DEB        echo $str;        return $str;    }    function ac_newid($str, $name) {        return $str;    }    function ac_halt($s) {        $this->db->halt($s);    }}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -