Maison 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;
		}
	}

}
Copier après la connexion
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Mar 22, 2024 pm 03:40 PM

Xiaohongshu a un contenu riche que tout le monde peut consulter librement ici, afin que vous puissiez utiliser ce logiciel pour soulager l'ennui tous les jours et vous aider vous-même. En utilisant ce logiciel, vous verrez parfois diverses belles choses. mais les images enregistrées ont des filigranes, ce qui est très important. Tout le monde veut savoir comment enregistrer des images sans filigrane ici. Je vais vous fournir une méthode pour ceux qui en ont besoin. Tout le monde peut la comprendre et l'utiliser immédiatement ! 1. Cliquez sur "..." dans le coin supérieur droit de l'image pour copier le lien 2. Ouvrez l'applet WeChat 3. Recherchez la bibliothèque de patates douces dans l'applet WeChat 4. Entrez dans la bibliothèque de patates douces et confirmez pour obtenir le lien 5. Obtenez la photo et enregistrez-la dans l'album du téléphone portable

Implémentation des autorisations utilisateur et du contrôle d'accès à l'aide de PHP et SQLite Implémentation des autorisations utilisateur et du contrôle d'accès à l'aide de PHP et SQLite Jul 29, 2023 pm 02:33 PM

Implémentation des autorisations utilisateur et du contrôle d'accès à l'aide de PHP et SQLite Dans les applications Web modernes, les autorisations utilisateur et le contrôle d'accès constituent un élément très important. Avec une gestion appropriée des autorisations, vous pouvez garantir que seuls les utilisateurs autorisés peuvent accéder à des pages et des fonctions spécifiques. Dans cet article, nous apprendrons comment implémenter les autorisations utilisateur de base et le contrôle d'accès à l'aide de PHP et SQLite. Tout d'abord, nous devons créer une base de données SQLite pour stocker des informations sur les utilisateurs et leurs autorisations. Ce qui suit est la structure d'une simple table d'utilisateurs et d'une table d'autorisations

Comment télécharger et enregistrer des vidéos Douyin Comment télécharger et enregistrer des vidéos Douyin Mar 29, 2024 pm 02:16 PM

1. Ouvrez l'application Douyin, recherchez la vidéo que vous souhaitez télécharger et enregistrer, puis cliquez sur le bouton [Partager] dans le coin inférieur droit. 2. Dans la fenêtre contextuelle qui apparaît, faites glisser les boutons de fonction de la deuxième rangée vers la droite, recherchez et cliquez sur [Enregistrer localement]. 3. Une nouvelle fenêtre contextuelle apparaîtra à ce moment-là et l'utilisateur pourra voir la progression du téléchargement de la vidéo et attendre la fin du téléchargement. 4. Une fois le téléchargement terminé, le message [Enregistré, veuillez accéder à l'album pour le visualiser] s'affichera, afin que la vidéo qui vient d'être téléchargée soit enregistrée avec succès dans l'album du téléphone mobile de l'utilisateur.

PHP et SQLite : Comment effectuer la compression et le cryptage des données PHP et SQLite : Comment effectuer la compression et le cryptage des données Jul 29, 2023 am 08:36 AM

PHP et SQLite : comment compresser et chiffrer des données Dans de nombreuses applications Web, la sécurité des données et l'utilisation de l'espace de stockage sont des considérations très importantes. PHP et SQLite sont deux outils très largement utilisés, et cet article explique comment les utiliser pour la compression et le chiffrement des données. SQLite est un moteur de base de données intégré léger qui ne dispose pas de processus serveur distinct mais interagit directement avec les applications. PHP est un langage de script côté serveur populaire largement utilisé pour créer des

Comment résoudre l'échec de la session Comment résoudre l'échec de la session Oct 18, 2023 pm 05:19 PM

L'échec de la session est généralement dû à l'expiration de la durée de vie de la session ou à l'arrêt du serveur. Les solutions : 1. Prolonger la durée de vie de la session ; 2. Utiliser le stockage persistant ; 3. Utiliser les cookies ; 4. Mettre à jour la session de manière asynchrone ; 5. Utiliser un middleware de gestion de session ;

Solution au problème inter-domaines de session PHP Solution au problème inter-domaines de session PHP Oct 12, 2023 pm 03:00 PM

Solution au problème inter-domaines de PHPSession Dans le développement de la séparation front-end et back-end, les requêtes inter-domaines sont devenues la norme. Lorsque nous traitons de problèmes interdomaines, nous impliquons généralement l'utilisation et la gestion de sessions. Cependant, en raison des restrictions de la politique d'origine du navigateur, les sessions ne peuvent pas être partagées par défaut entre les domaines. Afin de résoudre ce problème, nous devons utiliser certaines techniques et méthodes pour réaliser le partage de sessions entre domaines. 1. L'utilisation la plus courante des cookies pour partager des sessions entre domaines

Comment enregistrer les vidéos du compte vidéo dans l'album photo ? Partage de méthodes Comment enregistrer les vidéos du compte vidéo dans l'album photo ? Partage de méthodes Mar 26, 2024 am 11:21 AM

Le compte vidéo est une application vidéo courte populaire qui permet aux utilisateurs de filmer, éditer et partager leurs propres vidéos. Cependant, nous souhaitons parfois sauvegarder ces merveilleuses vidéos dans notre album photo afin de pouvoir les revoir chaque fois que nous en avons besoin. Je vais donc partager quelques méthodes pour vous apprendre à enregistrer la vidéo du numéro de vidéo dans l'album. Les vidéos peuvent être enregistrées via la fonction intégrée de l'application Video Number. Ouvrez l'application et recherchez la vidéo que vous souhaitez enregistrer. Cliquez sur l'icône d'options dans le coin inférieur droit de la vidéo, un menu apparaîtra et sélectionnez "Enregistrer dans l'album". Cela enregistrera la vidéo dans l'album photo de votre téléphone. La deuxième méthode consiste à enregistrer la vidéo en prenant une capture d’écran. Cette méthode est relativement simple, mais l'image enregistrée contiendra des éléments tels que des barres de contrôle vidéo, ce qui n'est pas assez pur. toi

PHP et SQLite : Comment gérer les connexions longues, les déconnexions et les reconnexions PHP et SQLite : Comment gérer les connexions longues, les déconnexions et les reconnexions Jul 29, 2023 am 09:05 AM

PHP et SQLite : Comment gérer les connexions longues, les déconnexions et les reconnexions Introduction : Dans le développement Web, PHP et SQLite sont deux technologies couramment utilisées. Cependant, les connexions longues, les déconnexions et les reconnexions font partie des problèmes souvent rencontrés lors de l'utilisation de PHP et SQLite. Cet article présentera comment gérer les problèmes de connexions longues, de déconnexion et de reconnexion en PHP, et fournira quelques exemples de codes pour aider les développeurs à mieux comprendre et résoudre ces problèmes. 1. Problème de connexion persistant Lors de l'utilisation de PHP pour se connecter à la base de données SQLite, connexion longue (Persis

See all articles