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

保存SESSION到SQLITE,

Jun 06, 2016 pm 07:38 PM
s 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;
		}
	}

}
Nach dem Login kopieren
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So speichern Sie Bilder ohne Wasserzeichen in Xiaohongshu. So speichern Sie Bilder ohne Wasserzeichen in Xiaohongshu So speichern Sie Bilder ohne Wasserzeichen in Xiaohongshu. So speichern Sie Bilder ohne Wasserzeichen in Xiaohongshu Mar 22, 2024 pm 03:40 PM

Xiaohongshu verfügt über umfangreiche Inhalte, die jeder hier frei ansehen kann, sodass Sie mit dieser Software jeden Tag Langeweile lindern und sich selbst helfen können. Bei der Verwendung dieser Software werden Sie manchmal verschiedene schöne Dinge sehen. Aber die gespeicherten Bilder haben Wasserzeichen, was sehr einflussreich ist. Hier möchte jeder wissen, wie man Bilder ohne Wasserzeichen speichert. 1. Klicken Sie auf „…“ in der oberen rechten Ecke des Bildes, um den Link zu kopieren. 2. Öffnen Sie das WeChat-Applet. 3. Durchsuchen Sie die Süßkartoffel-Bibliothek im WeChat-Applet. 4. Geben Sie die Süßkartoffel-Bibliothek ein und bestätigen Sie, um die zu erhalten Link 5. Holen Sie sich das Bild und speichern Sie es im Handyalbum

So laden Sie Douyin-Videos herunter und speichern sie So laden Sie Douyin-Videos herunter und speichern sie Mar 29, 2024 pm 02:16 PM

1. Öffnen Sie die Douyin-App, suchen Sie das Video, das Sie herunterladen und speichern möchten, und klicken Sie unten rechts auf die Schaltfläche [Teilen]. 2. Schieben Sie im angezeigten Popup-Fenster die Funktionsschaltflächen in der zweiten Reihe nach rechts, suchen Sie nach [Lokal speichern] und klicken Sie darauf. 3. Zu diesem Zeitpunkt wird ein neues Popup-Fenster angezeigt, und der Benutzer kann den Download-Fortschritt des Videos sehen und warten, bis der Download abgeschlossen ist. 4. Nachdem der Download abgeschlossen ist, erscheint die Meldung [Gespeichert, bitte gehen Sie zum Album, um es anzusehen], damit das gerade heruntergeladene Video erfolgreich im Album des Mobiltelefons des Benutzers gespeichert wird.

Implementierung von Benutzerberechtigungen und Zugriffskontrolle mit PHP und SQLite Implementierung von Benutzerberechtigungen und Zugriffskontrolle mit PHP und SQLite Jul 29, 2023 pm 02:33 PM

Benutzerberechtigungen und Zugriffskontrolle mit PHP und SQLite implementieren In modernen Webanwendungen sind Benutzerberechtigungen und Zugriffskontrolle ein sehr wichtiger Bestandteil. Mit einer ordnungsgemäßen Berechtigungsverwaltung können Sie sicherstellen, dass nur autorisierte Benutzer auf bestimmte Seiten und Funktionen zugreifen können. In diesem Artikel erfahren Sie, wie Sie mit PHP und SQLite grundlegende Benutzerberechtigungen und Zugriffskontrolle implementieren. Zuerst müssen wir eine SQLite-Datenbank erstellen, um Informationen über Benutzer und ihre Berechtigungen zu speichern. Das Folgende ist die Struktur einer einfachen Benutzertabelle und einer Berechtigungstabelle

PHP und SQLite: So führen Sie Datenkomprimierung und -verschlüsselung durch PHP und SQLite: So führen Sie Datenkomprimierung und -verschlüsselung durch Jul 29, 2023 am 08:36 AM

PHP und SQLite: So komprimieren und verschlüsseln Sie Daten In vielen Webanwendungen sind Datensicherheit und Speicherplatznutzung sehr wichtige Überlegungen. PHP und SQLite sind zwei sehr weit verbreitete Tools. In diesem Artikel erfahren Sie, wie Sie sie zur Datenkomprimierung und -verschlüsselung verwenden. SQLite ist eine leichtgewichtige eingebettete Datenbank-Engine, die keinen separaten Serverprozess hat, sondern direkt mit Anwendungen interagiert. PHP ist eine beliebte serverseitige Skriptsprache, die häufig zum Erstellen dynamischer Dateien verwendet wird

So beheben Sie Sitzungsfehler So beheben Sie Sitzungsfehler Oct 18, 2023 pm 05:19 PM

Ein Sitzungsfehler wird normalerweise durch den Ablauf der Sitzungslebensdauer oder das Herunterfahren des Servers verursacht. Die Lösungen: 1. Verlängern Sie die Lebensdauer der Sitzung. 3. Verwenden Sie Cookies. 4. Aktualisieren Sie die Sitzung.

Lösung für das domänenübergreifende Problem der PHP-Sitzung Lösung für das domänenübergreifende Problem der PHP-Sitzung Oct 12, 2023 pm 03:00 PM

Lösung des domänenübergreifenden Problems von PHPSession Bei der Entwicklung der Front-End- und Back-End-Trennung sind domänenübergreifende Anforderungen zur Norm geworden. Wenn es um domänenübergreifende Probleme geht, nutzen wir in der Regel Sitzungen und verwalten diese. Aufgrund von Richtlinieneinschränkungen für den Browserursprung können Sitzungen jedoch standardmäßig nicht über Domänen hinweg gemeinsam genutzt werden. Um dieses Problem zu lösen, müssen wir einige Techniken und Methoden verwenden, um eine domänenübergreifende gemeinsame Nutzung von Sitzungen zu erreichen. 1. Die häufigste Verwendung von Cookies zum domänenübergreifenden Teilen von Sitzungen

PHP und SQLite: Wie man mit langen Verbindungen und Trennungen und erneuten Verbindungen umgeht PHP und SQLite: Wie man mit langen Verbindungen und Trennungen und erneuten Verbindungen umgeht Jul 29, 2023 am 09:05 AM

PHP und SQLite: Umgang mit langen Verbindungen sowie Trennung und Wiederverbindung Einführung: In der Webentwicklung sind PHP und SQLite zwei häufig verwendete Technologien. Lange Verbindungen sowie das Trennen und erneute Verbinden gehören jedoch zu den Problemen, die bei der Verwendung von PHP und SQLite häufig auftreten. In diesem Artikel wird erläutert, wie mit den Problemen langer Verbindungen und Verbindungsabbrüchen und erneuten Verbindungen in PHP umgegangen werden kann. Außerdem werden einige Beispielcodes bereitgestellt, die Entwicklern dabei helfen sollen, diese Probleme besser zu verstehen und zu lösen. 1. Dauerhaftes Verbindungsproblem Bei der Verwendung von PHP zum Herstellen einer Verbindung zur SQLite-Datenbank kommt es zu einer langen Verbindung (Persis

Wie speichere ich die Videos des Videokontos im Fotoalbum? Teilen von Methoden Wie speichere ich die Videos des Videokontos im Fotoalbum? Teilen von Methoden Mar 26, 2024 am 11:21 AM

Videokonto ist eine beliebte Kurzvideoanwendung, mit der Benutzer ihre eigenen Videos aufnehmen, bearbeiten und teilen können. Manchmal möchten wir diese wunderbaren Videos jedoch vielleicht in unserem Fotoalbum speichern, damit wir sie bei Bedarf erneut ansehen können. Als nächstes werde ich einige Methoden vorstellen, die Ihnen zeigen, wie Sie das Video der Videonummer im Album speichern. Videos können über die integrierte Funktion der Video Number-Anwendung gespeichert werden. Öffnen Sie die App und suchen Sie das Video, das Sie speichern möchten. Klicken Sie auf das Optionssymbol in der unteren rechten Ecke des Videos. Ein Menü wird angezeigt und Sie können „Im Album speichern“ auswählen. Dadurch wird das Video im Fotoalbum Ihres Telefons gespeichert. Methode zwei besteht darin, das Video durch Erstellen eines Screenshots zu speichern. Diese Methode ist relativ einfach, aber das gespeicherte Bild enthält Elemente wie Videosteuerleisten, was nicht rein genug ist. Du

See all articles