Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

João Batista Neto

[Resolvido] Sessões PHP com NoSQL

Recommended Posts

Olá!

 

Estou começando um projeto e esse artigo me pareceu muito interessante então decidi implementar para fazer uns teste.

 

Acredito que a programação ta passando por uma faze revolucionária onde as coisas se tornam obsoletas cada vez mais rapdo.

 

Acabei por receber a mensagem de desuso de uma classe usada nesse artigo, aliás fato comum em se tratando de noSQL, mais emfim, como eu não tenho muita experiencia não sei com o que devo substituir a classe e gostaria que se possivel o ator do post corrigisse ai pra gente.

 

 

Deprecated: MongoBinData::__construct(): The default value for type will change to 0 in the future. Please pass in '2' explicitly. in /home/marcio/mongo/public/session/MongoSessionHandler.php on line 92

 

 

 

Forte abraço a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deve estar relacionado com a versão da lib do mongodb no php.

 

Verifique a versão utilizada com o phpinfo().

 

Esta usando Windows ou Linux?

Para Windows olhe aqui: http://php.net/manual/en/mongo.installation.php#mongo.installation.windows

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deve estar relacionado com a versão da lib do mongodb no php.

 

Verifique a versão utilizada com o phpinfo().

 

Esta usando Windows ou Linux?

Para Windows olhe aqui: http://php.net/manual/en/mongo.installation.php#mongo.installation.windows

Estou usando ubuntu 12.04,

 

phpinfo

 

 

MongoDB Support enabled

Version 1.2.12

 

Directive Local Value Master Value

mongo.allow_empty_keys 0 0

mongo.allow_persistent 1 1

mongo.chunk_size 262144 262144

mongo.cmd $ $

mongo.default_host localhost localhost

mongo.default_port 27017 27017

mongo.is_master_interval 60 60

mongo.long_as_object 0 0

mongo.native_long 0 0

mongo.no_id 0 0

mongo.ping_interval 5 5

mongo.utf8 1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcio,

 

Sua versão é a mais recente. Vou fazer esse mesmo teste quando chegar em casa e te dou um feedback. Se até lá ninguém mais aparecer com uma solução.

 

Você fez alguma alteração no código? Em caso positivo, mostre como ficou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcio,

 

Sua versão é a mais recente. Vou fazer esse mesmo teste quando chegar em casa e te dou um feedback. Se até lá ninguém mais aparecer com uma solução.

 

Você fez alguma alteração no código? Em caso positivo, mostre como ficou.

Ok, to estudando uma solução aqui tambem, se consegui eu posto.

 

Feito isso o proximo passo será acessar onde esses dados estão sendo salvos para poder verificar o numero de usuários on line.

 

Forte abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcio,

 

Parece ser algum bug não corrigido mesmo, na documentação do construtor diz assim:

public __construct ( string $data [, int $type = 2 ] )

http://php.net/manual/en/class.mongobindata.php

 

Tudo perfeito... $data para os dados e um $type que seria opcional. Bem, deveria ser opcional.

Não encontrei nenhuma explicação ou ticket aberto que relate o mesmo problema, então, segue apenas um workaround.

 

Na linha que ocorre o problema o código fica assim:

'serialized' => new MongoBinData( gzcompress( $session->getSessionData() ) , 2),

 

Sem mais explicações para o momento.

 

Ps: No Windows eu não consegui ver este problema. Farei outros testes amanhã.

 

----------------

 

Marcio,

 

Lendo melhor a mensagem, é apenas um aviso de depreciação. Não sobre a função ou a classe, mas sim sobre a opção padrão. Na mensagem diz que no futuro o default será 0, e solicita que você seja explicito ao escolher o $type = 2 para evitar problemas nas próximas versões.

 

Paz e bem!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcio,

 

Parece ser algum bug não corrigido mesmo, na documentação do construtor diz assim:

public __construct ( string $data [, int $type = 2 ] )

http://php.net/manual/en/class.mongobindata.php

 

Tudo perfeito... $data para os dados e um $type que seria opcional. Bem, deveria ser opcional.

Não encontrei nenhuma explicação ou ticket aberto que relate o mesmo problema, então, segue apenas um workaround.

 

Na linha que ocorre o problema o código fica assim:

'serialized' => new MongoBinData( gzcompress( $session->getSessionData() ) , 2),

 

Sem mais explicações para o momento.

 

Ps: No Windows eu não consegui ver este problema. Farei outros testes amanhã.

 

----------------

 

Marcio,

 

Lendo melhor a mensagem, é apenas um aviso de depreciação. Não sobre a função ou a classe, mas sim sobre a opção padrão. Na mensagem diz que no futuro o default será 0, e solicita que você seja explicito ao escolher o $type = 2 para evitar problemas nas próximas versões.

 

Paz e bem!

 

Muito Bom cara!

agora ta funcionando perfeitamente.

 

acessei pelo terminal e executei os seguintes comandos:

 

> use session

switched to db session

> db.getCollectionNames()

[ "PHPSESSID", "system.indexes" ]

> db.PHPSESSID.find()

{ "_id" : "37s9ugc8et1qko5aslicv4vbg7", "data" : { "info" : { "cliente" : "Fulano", "secao" : "Uma seção do site" } }, "serialized" : BinData(2,"WgAAAHicy8xLy6/xt7KwUiouSXHOSSwuVrIysqoutjK3UkrOyUzNK0lVsi62MrNScivNSczLB3FMgYpTkxPBbENLK6XQ3ESF4tTDyw8vzldIyVcozgTpqQUARy4eYQ=="), "expires" : ISODate("2012-09-25T02:31:44Z") }

>

 

estão ai os meus usuários logados!

 

agora preciso saber se quado o cache expira se eles saem automaticamente desta coleção, pelo que pude perceber posso setar o cache_expire com session_cache_expire() mais isso eu vejo amanhã.

 

Valeu ai pela ajuda brother!

 

Forte abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.