保存SESSION到SQLITE,
保存SESSION到SQLITE Save Session ThinkPHP ?php/** * Sqlite保存SESSION * @author WeakSun 52132522@qq.com */namespace Think\Session\Driver;use SessionHandlerInterface;use PDO;class Sqlite implements SessionHandlerInterface {static protected $
保存SESSION到SQLITE Save Session ThinkPHP
<?php /** * Sqlite保存SESSION * @author WeakSun <52132522@qq.com> */ namespace Think\Session\Driver; use SessionHandlerInterface; use PDO; class Sqlite implements SessionHandlerInterface { static protected $tableNameName, $expire, $handler, $nowTime; public function __construct() { empty(static::$expire) && static::$expire = C('SESSION_EXPIRE', null, false) ? C('SESSION_EXPIRE') : ini_get('session.gc_maxlifetime'); empty(static::$nowTime) && static::$nowTime = isset($GLOBALS['_beginTime']) ? $GLOBALS['_beginTime'] : microtime(true); empty(static::$tableNameName) && static::$tableNameName = C('SESSION_TABLE') ? C('SESSION_TABLE') : 'iSession'; $dbFile = TEMP_PATH . 'Caches.tmp'; $isCreate = is_file($dbFile); if (empty(static::$handler)) { static::$handler = new PDO("sqlite:{$dbFile}", null, null, array(PDO::ATTR_PERSISTENT => true)); empty($isCreate) && $this->exec("PRAGMA encoding = 'UTF8';PRAGMA temp_store = 2;PRAGMA auto_vacuum = 0;PRAGMA count_changes = 1;PRAGMA cache_size = 9000;"); $this->chkTable() || $this->createTable(); } } /** * 创建SessionID * @return string */ public function create_sid() { return uniqid(sprintf('%08x', mt_rand(0, 2147483647))); } /** * 打开session * @param string $path * @param string $name * @return boolean */ public function open($path, $name) { return is_object(static::$handler); } /** * 关闭Session * @return boolean */ public function close() { return true; } /** * 读取Session * @param string $id * @return string */ public function read($id = null) { $table = static::$tableNameName; $sth = static::$handler->query("SELECT `value` FROM `{$table}` WHERE `id`='{$id}' AND `expire` > strftime('%s','now') LIMIT 1", PDO::FETCH_NUM); if (!empty($sth)) { list($data) = $sth->fetch(); unset($sth); } else { $data = ''; } return $data; } /** * 写入Session * @param string $id * @param string $data * @return integer */ public function write($id = null, $data = null) { $table = static::$tableNameName; $expire = ceil(static::$expire + static::$nowTime); return $this->exec("REPLACE INTO `{$table}` VALUES('{$id}','{$data}',{$expire})"); } /** * 销毁Session * @param string $id * @return integer */ public function destroy($id = 0) { $table = static::$tableNameName; return $this->exec("DELETE FROM `{$table}` WHERE `id` = '{$id}'"); } /** * 垃圾回收 * @param string $expire * @return integer */ public function gc($expire = 0) { $table = static::$tableNameName; return $this->exec("DELETE FROM `{$table}` WHERE `expire` < strftime('%s','now');VACUUM;"); } /** * 检查当前表是否存在 * @return bool 返回检查结果,存在返回True,失败返回False */ protected function chkTable() { return in_array(static::$tableNameName, $this->getTables()); } /** * 获取当前数据库的数据表列表 * @return array 返回获取到的数据表列表数组 */ protected function getTables() { $tables = $data = array(); $sth = $this->query("SELECT `name` FROM `sqlite_master` WHERE `type` = 'table' UNION ALL SELECT `name` FROM `sqlite_temp_master`"); if (!empty($sth)) { while ($row = $sth->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)) { $tables[] = $row[0]; } unset($sth, $row); } return $tables; } /** * 创建当前数据表 * @return integer 成功返回1,失败返回0 */ protected function createTable() { $tableName = static::$tableNameName; return $this->exec("CREATE TABLE IF NOT EXISTS `{$tableName}` (`id` VARCHAR PRIMARY KEY ON CONFLICT FAIL NOT NULL COLLATE 'NOCASE',`value` TEXT NOT NULL,`expire` INTEGER NOT NULL);"); } public function __call($method, $arguments) { if (method_exists(self::$handler, $method)) { return call_user_func_array(array(self::$handler, $method), $arguments); } else { E(__CLASS__ . ':' . $method . L('_METHOD_NOT_EXIST_')); return; } } }

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

小紅書擁有豐富的內容,讓大家可以在這裡自由的查看,讓你們每天都可以使用這個軟體解悶,為自己帶來幫助,在使用這個軟體的過程中,有時候會看到各種的美圖,很多人想要保存起來,但是保存後的圖片,都有水印,非常的影響,大家都想要知道在這裡該怎麼保存沒有水印的圖片,小編為你們提供方法,有需要的小伙伴們,都可以馬上的了解使用起來! 1.點擊圖片右上角的「…」複製連結 2.開啟微信小程式 3.微信小程式搜尋紅薯庫 4.進入紅薯庫確定取得連結 5.獲取圖片儲存至手機相冊取得圖片儲存至手機相冊取得圖片儲存至

1.開啟抖音app,找到想要下載儲存的視頻,點選右下角的【分享】按鈕。 2.在出現的彈跳窗中,向右滑第二排的功能按鈕,找到並點選【儲存本地】。 3.此時會出現新的彈跳窗,使用者能夠看到該影片的下載進度,等待下載完成。 4.下載完成後,會有【已儲存,請去相簿查看】的提示,這樣剛下載的影片就成功的儲存到用戶的手機相簿裡面了。

使用PHP和SQLite實現使用者權限和存取控制在現代的web應用程式中,使用者權限和存取控制是非常重要的一部分。透過正確的權限管理,可以確保只有經過授權的使用者能夠存取特定的頁面和功能。在本文中,我們將學習如何使用PHP和SQLite來實現基本的使用者權限和存取控制。首先,我們需要建立一個SQLite資料庫來儲存使用者和其權限的資訊。下面是簡單的使用者表和權限表的結構

PHP和SQLite:如何進行資料壓縮和加密在許多Web應用程式中,資料的安全性和儲存空間的利用率是非常重要的考慮因素。 PHP和SQLite是兩個非常廣泛使用的工具,本文將介紹如何使用它們來進行資料壓縮和加密。 SQLite是一種輕量級的嵌入式資料庫引擎,它沒有獨立的伺服器進程,而是直接與應用程式互動。 PHP是一種流行的伺服器端腳本語言,被廣泛用於建立動態

session失效通常是由於 session 的生存時間過期或伺服器關閉導致的。其解決方法:1、延長session的生存時間;2、使用持久化儲存;3、使用cookie;4、非同步更新session;5、使用會話管理中介軟體。

PHPSession跨域問題的解決方法在前後端分離的開發中,跨域請求已成為常態。在處理跨域問題時,我們通常會涉及session的使用和管理。然而,由於瀏覽器的同源策略限制,跨域情況下預設無法共享session。為了解決這個問題,我們需要採用一些技巧和方法來實現session的跨域共享。一、使用cookie跨域共享session最常

影片號碼是一款熱門的短影片應用程序,讓用戶可以拍攝、編輯和分享自己製作的影片。然而,有時候我們可能會想要將這些精彩的影片保存到我們的相簿中,以便在需要的時候隨時回顧。所以,接下來我將分享一些方法,教你如何將影片號碼的影片儲存到相簿。可以透過影片號應用程式自帶的功能來保存影片。打開應用程序,找到需要儲存的影片。點擊影片右下角的選項圖標,會彈出一個選單,選擇「儲存到相簿」。這樣就能將影片儲存到手機相簿中。方法二是透過截圖的方式保存影片。這種方法比較直接,但是保存的圖片會包含影片控制條等元素,不夠純淨。你

PHP和SQLite:如何處理長連結和斷線重連引言:在Web開發中,PHP和SQLite是兩個常用的技術。然而,長連接和斷線重連是在使用PHP和SQLite時經常遇到的一些問題。本文將介紹如何在PHP中處理長連接和斷線重連的問題,並提供一些實例程式碼,以幫助開發者更好地理解和解決這些問題。一、長連接問題在使用PHP連接SQLite資料庫時,長連接(Persis
