小编Mar*_*dez的帖子

MongoDB:单个数据库处理程序的> 5个打开的连接

我是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)

javascript mongodb node.js

18
推荐指数
1
解决办法
3002
查看次数

在自定义SessionHandlerInterface实现中确保会话严格模式

介绍

从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)必须返回会话内容或空字符串(对于新会话),但似乎没有办法引起链上的错误.

总而言之,为了匹配本机行为,我需要回答的问题是:

  1. 从上下文来看read($session_id),如何区分新建的会话ID或来自HTTP请求的会话ID?

  2. 给定来自HTTP请求的会话ID并假设它在存储区域中找不到,我如何向PHP引擎发出错误信号,以便它read($session_id)再次使用新的会话ID 调用?

php session

12
推荐指数
2
解决办法
1053
查看次数

使用带有AsseticBundle的Gaufrette Stream Wrappers

我正在尝试使用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

php symfony assetic gaufrette

8
推荐指数
1
解决办法
1084
查看次数

标签 统计

php ×2

assetic ×1

gaufrette ×1

javascript ×1

mongodb ×1

node.js ×1

session ×1

symfony ×1