我是nodejs和mongdb的新手,我将在我的一个项目中使用它,一旦我的数据库连接工作,我很震惊地看到我的代码确实有多少数据库连接.所以,给出这个简单的代码片段代码:
var express = require('express');
var mongo = require('mongodb');
var app = express();
// Further details:
// nodejs: v0.8.18
// mongod: v2.2.2
// node's mongodb driver: v1.2.10
app.get('/', function(req, res){
res.send('<h1>Ok</h1>');
});
var setUp = function() {
// get a handler to the testDB Database
mongo.Db.connect('mongodb://localhost:27017/testDB', function(err, db) {
if (err)
throw err;
// create a test collection in the database
db.createCollection('test', function(err, test) {
if (err)
throw err;
// insert a dummy document into the test collection
test.insert({'name':'admin', 'pass':'admin'}); …Run Code Online (Sandbox Code Playgroud) 从PHP 5.5.2开始,有一个运行时配置选项(session.use_strict_mode),用于防止恶意客户端进行会话固定.启用此选项并使用本机会话处理程序(文件)时,PHP将不接受先前在会话存储区域中不存在的任何传入会话ID,如下所示:
$ curl -I -H "Cookie:PHPSESSID=madeupkey;" localhost
HTTP/1.1 200 OK
Cache-Control: no-store, no-cache, must-revalidate
Connection: close
Content-type: text/html; charset=UTF-8
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Host: localhost
Pragma: no-cache
Set-Cookie: PHPSESSID=4v3lkha0emji0kk6lgl1lefsi1; path=/ <--- looky
Run Code Online (Sandbox Code Playgroud)
(session.use_strict_mode如果已禁用,则响应将不包含Set-Cookie标头,并且sess_madeupkey会在sessions目录中创建文件)
我正在实现自定义会话处理程序,我非常希望它遵守严格模式,但是界面使其变得困难.
当session_start()被调用时,MyHandler::read($session_id)被调用的路线,但$session_id可以任意从会话cookie获取的值或者一个新的会话ID.处理程序需要知道差异,因为在前一种情况下,如果找不到会话ID,则必须引发错误.此外,根据规范read($session_id)必须返回会话内容或空字符串(对于新会话),但似乎没有办法引起链上的错误.
总而言之,为了匹配本机行为,我需要回答的问题是:
从上下文来看read($session_id),如何区分新建的会话ID或来自HTTP请求的会话ID?
给定来自HTTP请求的会话ID并假设它在存储区域中找不到,我如何向PHP引擎发出错误信号,以便它read($session_id)再次使用新的会话ID 调用?
我正在尝试使用Gaufrette Stream Wrapper告诉AsseticBundle转储项目资产的位置,但我不能让它识别它们.
这是我的config_dev.yml的knp_gaufrette部分的样子:
knp_gaufrette:
adapters:
dev_adapter:
local:
directory: /vagrant/test
create: true
filesystems:
dev_adapter:
adapter: dev_adapter
stream_wrapper: ~
Run Code Online (Sandbox Code Playgroud)
我使用一个简单的操作测试了包装器,以确保它已正确注册,并且它工作正常:
public function thanksAction()
{
file_put_contents('gaufrette://dev_adapter/test.txt', "ABC\n", FILE_APPEND);
return new Response(file_get_contents('gaufrette://dev_adapter/test.txt'));
}
Run Code Online (Sandbox Code Playgroud)
然后我像这样设置资产包配置(在config_dev.yml中):
assetic:
read_from: gaufrette://dev_adapter
write_to: gaufrette://dev_adapter
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用console assetic:dump --env=dev我转储资产时出现此错误:
Dumping all dev assets.
Debug mode is on.
10:53:28 [dir+] gaufrette://dev_adapter/css
[RuntimeException]
Unable to create directory gaufrette://dev_adapter/css
assetic:dump [--watch] [--force] [--period="..."] [write_to]
Run Code Online (Sandbox Code Playgroud)
更多的信息:
symfony/symfony:2.5.0
symfony/assetic-bundle:2.3.0
knplabs/knp-gaufrette-bundle:0.1.7