Rumah php教程 php手册 保存SESSION到SQLITE,

保存SESSION到SQLITE,

Jun 06, 2016 pm 07:38 PM
s session sqlite simpan

保存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;
		}
	}

}
Salin selepas log masuk
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menyimpan gambar tanpa tera air di Xiaohongshu Bagaimana untuk menyimpan gambar tanpa tera air di Xiaohongshu Bagaimana untuk menyimpan gambar tanpa tera air di Xiaohongshu Bagaimana untuk menyimpan gambar tanpa tera air di Xiaohongshu Mar 22, 2024 pm 03:40 PM

Xiaohongshu mempunyai kandungan yang kaya yang semua orang boleh lihat secara bebas di sini, supaya anda boleh menggunakan perisian ini untuk menghilangkan kebosanan setiap hari dan membantu diri sendiri Dalam proses menggunakan perisian ini, anda kadang-kadang akan melihat pelbagai perkara yang indah. tetapi gambar yang disimpan mempunyai tera air, yang sangat berpengaruh Semua orang ingin tahu cara menyimpan gambar tanpa tanda air di sini saya akan memberikan anda kaedah untuk mereka yang memerlukannya. 1. Klik "..." di penjuru kanan sebelah atas gambar untuk menyalin pautan 2. Buka applet WeChat 3. Cari perpustakaan keledek dalam applet WeChat 4. Masukkan perpustakaan keledek dan sahkan untuk mendapatkan pautan 5. Dapatkan gambar dan simpan ke album telefon bimbit

Melaksanakan kebenaran pengguna dan kawalan akses menggunakan PHP dan SQLite Melaksanakan kebenaran pengguna dan kawalan akses menggunakan PHP dan SQLite Jul 29, 2023 pm 02:33 PM

Melaksanakan kebenaran pengguna dan kawalan akses menggunakan PHP dan SQLite Dalam aplikasi web moden, kebenaran pengguna dan kawalan akses adalah bahagian yang sangat penting. Dengan pengurusan kebenaran yang betul, anda boleh memastikan bahawa hanya pengguna yang diberi kuasa boleh mengakses halaman dan fungsi tertentu. Dalam artikel ini, kita akan belajar cara melaksanakan kebenaran pengguna asas dan kawalan akses menggunakan PHP dan SQLite. Pertama, kita perlu mencipta pangkalan data SQLite untuk menyimpan maklumat tentang pengguna dan kebenaran mereka. Berikut ialah struktur jadual pengguna ringkas dan jadual kebenaran

PHP dan SQLite: Bagaimana untuk melakukan pemampatan dan penyulitan data PHP dan SQLite: Bagaimana untuk melakukan pemampatan dan penyulitan data Jul 29, 2023 am 08:36 AM

PHP dan SQLite: Cara Memampat dan Menyulitkan Data Dalam kebanyakan aplikasi web, keselamatan data dan penggunaan ruang storan adalah pertimbangan yang sangat penting. PHP dan SQLite ialah dua alat yang digunakan secara meluas, dan artikel ini akan memperkenalkan cara menggunakannya untuk pemampatan dan penyulitan data. SQLite ialah enjin pangkalan data terbenam ringan yang tidak mempunyai proses pelayan yang berasingan tetapi berinteraksi secara langsung dengan aplikasi. PHP ialah bahasa skrip sebelah pelayan yang popular yang digunakan secara meluas untuk membina dinamik

Bagaimana untuk menyelesaikan kegagalan sesi Bagaimana untuk menyelesaikan kegagalan sesi Oct 18, 2023 pm 05:19 PM

Kegagalan sesi biasanya disebabkan oleh tamat tempoh seumur hidup sesi atau penutupan pelayan. Penyelesaian: 1. Memanjangkan hayat sesi; 2. Gunakan storan berterusan;

Bagaimana untuk memuat turun dan menyimpan video Douyin Bagaimana untuk memuat turun dan menyimpan video Douyin Mar 29, 2024 pm 02:16 PM

1. Buka apl Douyin, cari video yang anda ingin muat turun dan simpan, dan klik butang [Kongsi] di sudut kanan bawah. 2. Dalam tetingkap pop timbul yang muncul, luncurkan butang fungsi dalam baris kedua ke kanan, cari dan klik [Save Local]. 3. Tetingkap pop timbul baharu akan muncul pada masa ini, dan pengguna boleh melihat kemajuan muat turun video dan menunggu muat turun selesai. 4. Selepas muat turun selesai, akan ada gesaan [Disimpan, sila pergi ke album untuk melihat], supaya video yang baru dimuat turun akan berjaya disimpan ke album telefon mudah alih pengguna.

Penyelesaian kepada masalah merentas domain Sesi PHP Penyelesaian kepada masalah merentas domain Sesi PHP Oct 12, 2023 pm 03:00 PM

Penyelesaian kepada masalah silang domain PHPSession Dalam pembangunan pemisahan front-end dan back-end, permintaan merentas domain telah menjadi kebiasaan. Apabila menangani isu merentas domain, kami biasanya melibatkan penggunaan dan pengurusan sesi. Walau bagaimanapun, disebabkan oleh sekatan dasar asal penyemak imbas, sesi tidak boleh dikongsi secara lalai merentas domain. Untuk menyelesaikan masalah ini, kita perlu menggunakan beberapa teknik dan kaedah untuk mencapai perkongsian sesi merentas domain. 1. Penggunaan kuki yang paling biasa untuk berkongsi sesi merentas domain

PHP dan SQLite: Cara menangani sambungan yang panjang dan pemotongan dan penyambungan semula PHP dan SQLite: Cara menangani sambungan yang panjang dan pemotongan dan penyambungan semula Jul 29, 2023 am 09:05 AM

PHP dan SQLite: Cara menangani sambungan yang panjang dan memutuskan sambungan dan penyambungan semula Pengenalan: Dalam pembangunan web, PHP dan SQLite ialah dua teknologi yang biasa digunakan. Walau bagaimanapun, sambungan panjang dan pemotongan dan penyambungan semula adalah beberapa masalah yang sering dihadapi apabila menggunakan PHP dan SQLite. Artikel ini akan memperkenalkan cara menangani masalah sambungan panjang dan pemotongan dan penyambungan semula dalam PHP, serta menyediakan beberapa contoh kod untuk membantu pembangun memahami dan menyelesaikan masalah ini dengan lebih baik. 1. Masalah sambungan berterusan Apabila menggunakan PHP untuk menyambung ke pangkalan data SQLite, sambungan panjang (Persis

Bagaimana untuk menyimpan video akaun video ke album foto? Perkongsian kaedah Bagaimana untuk menyimpan video akaun video ke album foto? Perkongsian kaedah Mar 26, 2024 am 11:21 AM

Akaun video ialah aplikasi video pendek popular yang membolehkan pengguna merakam, mengedit dan berkongsi video mereka sendiri. Walau bagaimanapun, kadangkala kita mungkin ingin menyimpan video yang menarik ini ke album foto kita supaya kita boleh melihatnya semula apabila diperlukan. Jadi, seterusnya saya akan kongsikan beberapa kaedah untuk mengajar anda cara menyimpan video akaun video tersebut ke dalam album. Video boleh disimpan melalui fungsi terbina dalam aplikasi Nombor Video. Buka apl dan cari video yang ingin anda simpan. Klik ikon pilihan di sudut kanan bawah video, menu akan muncul, pilih "Simpan ke Album". Ini akan menyimpan video ke album foto telefon anda. Kaedah kedua ialah menyimpan video dengan mengambil tangkapan skrin. Kaedah ini agak mudah, tetapi imej yang disimpan akan mengandungi elemen seperti bar kawalan video, yang tidak cukup tulen. awak

See all articles