- 浏览: 7934750 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
1 mongodb处理session:
cookie只是session绑定客户端的一种途径,其它的还有比如url等 session_set_save_handler仅仅是对服务器端,session的存储方式,默认为文件存储,可更改为任何其它存储,比如数据库,memcache等
可以使用 session_set_save_handler的函数:
bool session_set_save_handler(callback $open, callback $close,
callback $read, callback $write,
callback $destroy, callback $gc)
注意: 使用本函数前,先要配置php.ini文件,session.save_hadler=user ,否则,session_set_save_handler()不会生效。
第一个参数是打开会话时调用的处理器,接受两个参数 save_path 和 session_name,分别是会话保存路径 (要记得 PHP 默认机制是文件方式的,因此有文件路径) 和 COOKIE 中用于保存 SESSION ID 的键名,其中键名可以通过 session_name 来获取和修改
第二个参数是关闭会话时的处理器,没有参数
第三个参数是读取会话时的处理器,接受一个参数 session_id,代表 COOKIE 中保存的会话 ID
第四个参数是保存会话时的处理器,接受两个参数 session_id 和 session_data。官方手册中提及到,PHP 5.0.5 以后,close 和 write 处理器将会在类析构之后调用,因此处理器内不能使用类和抛出异常 (Exception 也是一个类) 而在析构函数内可以使用 SESSION,因此我们需要在程序中 (比如在 open 或者 read 处理器内) 声明一下保证让 session_write_close 在析构前完成
register_shutdown_function('session_write_close');
第五个参数是删除会话时的处理器,接受一个参数 session_id,代表 COOKIE 中保存的会话 ID
最后一个参数是会话过期时的处理器,接受一个参数 maxlifetime,代表超时秒数
2 一个PHP连接MONGODB的类
<?php
class DBConnection
{
const HOST = 'localhost';
const PORT = 27017;
const DBNAME = 'myblogsite';
private static $instance;
public $connection;
public $database;
private function __construct()
{
$connectionString = sprintf('mongodb://%s:%d', DBConnection::HOST, DBConnection::PORT);
try {
$this->connection = new Mongo($connectionString);
$this->database = $this->connection->selectDB(DBConnection::DBNAME);
} catch (MongoConnectionException $e) {
throw $e;
}
}
static public function instantiate()
{
if (!isset(self::$instance)) {
$class = __CLASS__;
self::$instance = new $class;
}
return self::$instance;
}
public function getCollection($name)
{
return $this->database->selectCollection($name);
}
}
?>
3 一个处理session的类,sessionmanager:
<?php
require_once('dbconnection.php');
class SessionManager{
const COLLECTION = 'sessions'; //name of collection where sessions will be stored
const SESSION_TIMEOUT = 600; //Expire session after 10 mins in inactivity
const SESSION_LIFESPAN = 3600; //1 hour
const SESSION_NAME = 'mongosessid'; //name of the session cookie
const SESSION_COOKIE_PATH = '/';
const SESSION_COOKIE_DOMAIN = ''; //should domain name of you web app, for example .mywebapp.com
private $_mongo;
private $_collection;
private $_currentSession;
public function __construct()
{
$this->_mongo = DBConnection::instantiate();
$this->_collection = $this->_mongo->getCollection(SessionManager::COLLECTION);
session_set_save_handler(
array(&$this, 'open'),
array(&$this, 'close'),
array(&$this, 'read'),
array(&$this, 'write'),
array(&$this, 'destroy'),
array(&$this, 'gc')
);
// set session garbage collection period
ini_set('session.gc_maxlifetime', SessionManager::SESSION_LIFESPAN);
session_set_cookie_params( SessionManager::SESSION_LIFESPAN,
SessionManager::SESSION_COOKIE_PATH,
SessionManager::SESSION_COOKIE_DOMAIN
);
session_name(SessionManager::SESSION_NAME);
session_cache_limiter('nocache');
session_start();
}
public function open($path, $name)
{
return true;
}
public function close()
{
return true;
}
public function read($sessionId)
{
$query = array(
'session_id' => $sessionId,
'timedout_at' => array('$gte' => time()),
'expired_at' => array('$gte' => time())
);
$result = $this->_collection->findOne($query);
$this->_currentSession = $result;
if(!isset($result['data'])){
return '';
}
return $result['data'];
}
public function write($sessionId, $data)
{
$new_obj = array(
'data' => $data,
'timedout_at' => time() + self::SESSION_TIMEOUT,
'expired_at' => (empty($this->_currentSession)) ? time() + SessionManager::SESSION_LIFESPAN
: $this->_currentSession['expired_at']
);
$query = array('session_id' => $sessionId);
$this->_collection->update(
$query,
array('$set' => $new_obj),
array('upsert' => True)
);
return True;
}
public function destroy($sessionId)
{
$this->_collection->remove(array('session_id' => $sessionId));
return True;
}
public function gc()
{
$query = array('expired_at' => array( '$lt' => time()));
$this->_collection->remove($query);
return True;
}
public function __destruct()
{
session_write_close();
}
}
$session = new SessionManager();
cookie只是session绑定客户端的一种途径,其它的还有比如url等 session_set_save_handler仅仅是对服务器端,session的存储方式,默认为文件存储,可更改为任何其它存储,比如数据库,memcache等
可以使用 session_set_save_handler的函数:
bool session_set_save_handler(callback $open, callback $close,
callback $read, callback $write,
callback $destroy, callback $gc)
注意: 使用本函数前,先要配置php.ini文件,session.save_hadler=user ,否则,session_set_save_handler()不会生效。
第一个参数是打开会话时调用的处理器,接受两个参数 save_path 和 session_name,分别是会话保存路径 (要记得 PHP 默认机制是文件方式的,因此有文件路径) 和 COOKIE 中用于保存 SESSION ID 的键名,其中键名可以通过 session_name 来获取和修改
第二个参数是关闭会话时的处理器,没有参数
第三个参数是读取会话时的处理器,接受一个参数 session_id,代表 COOKIE 中保存的会话 ID
第四个参数是保存会话时的处理器,接受两个参数 session_id 和 session_data。官方手册中提及到,PHP 5.0.5 以后,close 和 write 处理器将会在类析构之后调用,因此处理器内不能使用类和抛出异常 (Exception 也是一个类) 而在析构函数内可以使用 SESSION,因此我们需要在程序中 (比如在 open 或者 read 处理器内) 声明一下保证让 session_write_close 在析构前完成
register_shutdown_function('session_write_close');
第五个参数是删除会话时的处理器,接受一个参数 session_id,代表 COOKIE 中保存的会话 ID
最后一个参数是会话过期时的处理器,接受一个参数 maxlifetime,代表超时秒数
2 一个PHP连接MONGODB的类
<?php
class DBConnection
{
const HOST = 'localhost';
const PORT = 27017;
const DBNAME = 'myblogsite';
private static $instance;
public $connection;
public $database;
private function __construct()
{
$connectionString = sprintf('mongodb://%s:%d', DBConnection::HOST, DBConnection::PORT);
try {
$this->connection = new Mongo($connectionString);
$this->database = $this->connection->selectDB(DBConnection::DBNAME);
} catch (MongoConnectionException $e) {
throw $e;
}
}
static public function instantiate()
{
if (!isset(self::$instance)) {
$class = __CLASS__;
self::$instance = new $class;
}
return self::$instance;
}
public function getCollection($name)
{
return $this->database->selectCollection($name);
}
}
?>
3 一个处理session的类,sessionmanager:
<?php
require_once('dbconnection.php');
class SessionManager{
const COLLECTION = 'sessions'; //name of collection where sessions will be stored
const SESSION_TIMEOUT = 600; //Expire session after 10 mins in inactivity
const SESSION_LIFESPAN = 3600; //1 hour
const SESSION_NAME = 'mongosessid'; //name of the session cookie
const SESSION_COOKIE_PATH = '/';
const SESSION_COOKIE_DOMAIN = ''; //should domain name of you web app, for example .mywebapp.com
private $_mongo;
private $_collection;
private $_currentSession;
public function __construct()
{
$this->_mongo = DBConnection::instantiate();
$this->_collection = $this->_mongo->getCollection(SessionManager::COLLECTION);
session_set_save_handler(
array(&$this, 'open'),
array(&$this, 'close'),
array(&$this, 'read'),
array(&$this, 'write'),
array(&$this, 'destroy'),
array(&$this, 'gc')
);
// set session garbage collection period
ini_set('session.gc_maxlifetime', SessionManager::SESSION_LIFESPAN);
session_set_cookie_params( SessionManager::SESSION_LIFESPAN,
SessionManager::SESSION_COOKIE_PATH,
SessionManager::SESSION_COOKIE_DOMAIN
);
session_name(SessionManager::SESSION_NAME);
session_cache_limiter('nocache');
session_start();
}
public function open($path, $name)
{
return true;
}
public function close()
{
return true;
}
public function read($sessionId)
{
$query = array(
'session_id' => $sessionId,
'timedout_at' => array('$gte' => time()),
'expired_at' => array('$gte' => time())
);
$result = $this->_collection->findOne($query);
$this->_currentSession = $result;
if(!isset($result['data'])){
return '';
}
return $result['data'];
}
public function write($sessionId, $data)
{
$new_obj = array(
'data' => $data,
'timedout_at' => time() + self::SESSION_TIMEOUT,
'expired_at' => (empty($this->_currentSession)) ? time() + SessionManager::SESSION_LIFESPAN
: $this->_currentSession['expired_at']
);
$query = array('session_id' => $sessionId);
$this->_collection->update(
$query,
array('$set' => $new_obj),
array('upsert' => True)
);
return True;
}
public function destroy($sessionId)
{
$this->_collection->remove(array('session_id' => $sessionId));
return True;
}
public function gc()
{
$query = array('expired_at' => array( '$lt' => time()));
$this->_collection->remove($query);
return True;
}
public function __destruct()
{
session_write_close();
}
}
$session = new SessionManager();
发表评论
-
mybatis generator中的字段大小写生成问题
2017-10-22 19:35 11376mybatis generator插件中,如果 mysql数据 ... -
MySQL统计一个列中不同值的数量
2017-07-11 14:04 16285https://yiqiwuliao.com/post/mys ... -
mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
2017-03-02 09:44 1790权限问题,授权 给 root 所有sql 权限 mysql ... -
几个不错的MYSQL 优化TIPS
2016-11-19 12:30 811图片来自http://imysql.com/的PDF分享 [ ... -
powerdesign 逆向ORACLE的坑
2016-09-27 17:08 569要注意的是,在WIN 64中,如果要用powerdesin 来 ... -
( 转)mysql中删除两条重复记录中的一条
2015-10-19 20:19 1331| id | createTime | labId | pub ... -
mysql中sql语句=,>的时候的索引设置
2015-05-02 12:27 1308在 https://www.percona.com/blog/ ... -
mysql中profile的使用
2015-04-30 11:11 2230mysql 的 sql 性能分析器主要用途是显示 sql 执行 ... -
mysql中的sql mode
2015-04-13 11:29 1152mysql sql mode小结 1 sql mode可以 ... -
PROCEDURE ANALYSE()为mysql提高性能提供建议
2015-04-02 16:37 1466procedure analyse();语法如下 select ... -
mongodb中意外退出的问题
2015-02-11 14:32 1340mongodb启动的时候,意外退出: Unclean shut ... -
mysql 5.5中保留字查询
2014-06-05 23:16 1487mysql 5.5中保留字查询 http://www.5is ... -
(转)oracle 临时表空间的增删改查
2014-03-18 12:44 1144oracle 临时表空间的增删改查 1、查看临时表空间 (d ... -
pl-sql developer安装
2014-02-07 09:16 1133一直都是机器本机上有oracle,所以装pl sql deve ... -
oracle中的nvl,nvl2等参数
2013-12-26 11:18 22831.nul函数将一个null值转换为一个实际的值。 数据类型可 ... -
Oracle中的ROWNUM rowid 以及MySQL中实现rownum功能类似的语句
2013-12-26 11:08 2362http://gong-10140.iteye.com/blo ... -
ORACLE XE版本的限制
2013-12-07 08:11 366910g中用户数据最大为4G, 11G中最大为11G,如果超出大 ... -
oracle中监控索引是否可用
2013-11-04 07:22 1077在oracle中,可以使用如下的方法监控索引是否可用: a ... -
mysql 5.6中的时间类型的新精度介绍
2013-10-28 09:33 8413留意到mysql 5.6中,可以使用select now(6) ... -
<<oracle索引技术》读书笔记1
2013-08-25 16:23 1327expert indexing in oracle datab ...
相关推荐
2. **集合(Collections)**:在MongoDB中,数据以文档的形式存储在集合里,类似于关系数据库中的表格。集合是动态模式的,不需要预先定义模式,这意味着你可以随时添加新的字段。 3. **CRUD操作**:创建(Create)...
MongoDB是一种流行的开源NoSQL数据库系统,它以其高性能、高可用性和易...随着经验的积累,你可以进一步探索MongoDB的高级功能,比如索引优化、复制集、分片、聚合操作等,从而成为一名真正熟练掌握MongoDB的开发者。
Compass是MongoDB的官方图形界面工具,它提供了一个用户友好的界面,用于可视化数据库和集合,帮助开发者和管理员进行数据探索、查询构建、性能分析以及基本的数据库管理。通过Compass,用户可以轻松地浏览和操作...
### 使用 F# 探索 MongoDB #### 背景与目的 随着 NoSQL 数据库的兴起,MongoDB 成为了许多开发者的首选方案。对于 F# 开发者来说,结合 MongoDB 的灵活性与 F# 的强大功能可以实现高效快速的原型开发。本文旨在探讨...
5. 探索MongoDB的管理工具,如`mongoimport`和`mongoexport`,以及监控和诊断工具。 总之,MongoDB以其独特的特性和灵活性,在现代数据存储方案中占据了一席之地。无论是小型项目还是大型企业,都可以从中受益。...
MongoDB是一款开源、高性能、无模式的分布式文档型数据库,常用于构建现代应用...了解这些基础知识后,你就可以开始探索MongoDB的更多功能,如副本集、分片、索引、聚合框架等,以及如何使用它来构建高效的应用程序。
2. **查询构建器**:内置的查询构建器允许用户通过拖放操作创建复杂的查询,无需记住复杂的MongoDB查询语法。 3. **脚本支持**:支持JavaScript和MongoDB Shell命令,方便执行脚本和命令操作。 4. **数据导入导出**...
Databazel可能是一个用于MongoDB数据分析的工具或框架,虽然具体功能未知,但通常这样的工具会提供更高级的查询和分析功能,简化报表生成过程,或者提供可视化界面来交互式地探索数据。例如,它可以包含数据预处理...
MongoDB Compass是官方提供的图形化界面工具,它可以帮助用户直观地理解数据结构,通过可视化的方式探索和操作数据。用户可以轻松浏览集合、查询文档、分析数据分布、监控性能指标,以及进行聚合操作。Compass还支持...
- 探索 MongoDB 提供的各种驱动程序。 #### 二、管理 MongoDB **3.1 启动、停止和运行数据库** - **启动 MongoDB**:通过服务或命令行启动 MongoDB。 - **停止 MongoDB**:安全地停止 MongoDB 服务。 - **运行...
《深入解析ThinkPHP6与MongoDB的整合及问题修复》 ...而MongoDB则作为NoSQL数据库的代表,以其灵活的数据模型和高性能在大数据处理领域备受青睐。...在这个过程中,不断学习和探索,对提升我们的IT专业技能大有裨益。
接下来您可以开始探索 MongoDB 的各种功能,并将其应用到实际项目中。MongoDB 的灵活性和高性能使其成为处理大数据量和高并发场景的理想选择。希望这篇文章能帮助您顺利完成 MongoDB 的安装与配置过程。
了解这些基础后,你可以进一步探索更多高级特性,如索引、副本集、分片等,以便在实际项目中更高效地利用MongoDB。记住,实践是学习的最佳途径,动手尝试这些示例,结合MongoDB_Demo中的代码,你会更快掌握MongoDB与...
### MongoDB数据库学习精要与PHP操作指南 #### MongoDB基本概念概览 MongoDB是一种开源的文档型NoSQL数据库,以其高性能、高可用性和易用性而闻名,特别...不断探索和实践,才能在日益复杂的技术环境中保持竞争力。
MongoDB是一款分布式文档型数据库,以其灵活性、高性能和易扩展性在现代Web开发中占据了重要地位。本"mongodbDemo"提供了对MongoDB的基础使用和测试案例,非常...记得在实践中不断探索和尝试,加深对MongoDB的理解。
你现在已经具备了运行、管理MongoDB数据库的基础知识,可以进一步探索复制集、分片、索引、聚合等功能,以满足更复杂的应用场景。同时,作为运维人员,了解数据库性能监控、备份恢复以及安全性策略也是必不可少的...
MongoDB是一个基于分布式文件存储的开源数据库系统,广泛应用于现代应用程序开发中,特别是在...通过实践和探索,学习者能够更好地理解NoSQL数据库的优势,并了解如何利用MongoDB来处理大数据和构建高性能的应用程序。
- **第2章:通过JavaScript Shell探索MongoDB** - **简介**:本章通过JavaScript Shell工具来展示如何与MongoDB进行交互。 - **内容概览**: - 安装和配置MongoDB环境 - 使用JavaScript Shell连接到MongoDB实例...