Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Hipnoted

Zona de memória partilhada

Mensagens Recomendadas

Hipnoted

Boas,

Existe alguma maneira de usar alguma zona de memória partilhada em PHP, ou do género.

Questão é a seguinte, tenho uma função que dura aproximadamente 60 segundos que só a pode executar um utilizador de cada vez e estava a tentar controlar isso através do time(). Mas não estou a ver como implementar isso. Alguém já passou pelo mesmo?

Obrigado.


"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Hipnoted

Pois mas o problema é, guardo onde? :)

Sessões não posso usar porque só controla uma sessão do browser... Por isso não sei.


"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Hipnoted

Base de dados está fora de questão até porque não uso no projecto.

Ficheiros só em último recurso. Queria mesmo era um shared object ou do género... :)


"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Hipnoted

Não existe. A única solução é usar a memória da máquina :

http://www.php.net/manual/en/intro.apc.php

Porém, dado o caso, na minha opinião seria uma enorme parvoíce usar isso em detrimento de outro método mais viável.

Mesmo assim com essa opção tinha de instalar isso, o que torna inviável...

Talvez vá para a opção dos ficheiros, não me agrada nada estar a abrir e escrever no ficheiro por cada acesso mas lá vai ter de ser... :S

Obrigado na mesma.


"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Hipnoted

Porque não podes usar base de dados? Ou porque não usar um serviço?

Porque o projecto em princípio irá para o moodle e não quero ter mais dependências. Até agora não necessitei de BD e acho uma carga desnecessária estar a usar BD só por causa disto.


"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Caya

Incluir um ficheiros é (quase sempre) mais rápido que fazer uma query à base de dados. Quando alguém executa essa função, guardas num ficheiro 'qualquercoisa.php' algo do género:

"<?php $time = ".time()."; ?>"

Depois cada vez que mais alguém tenta executar a função incluis esse ficheiro e fazes as verificações que quiseres.

Também poderias usar memcache ou algo do género, mas como não queres instalar mais nada, acho que a solução do ficheiro é a melhor (e a única talvez)...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
softklin

Bem, encontrei isto:

http://php.net/manual/en/book.sem.php

No entanto, nunca trabalhei com tal coisa, apenas sei alguma teoria de semáforos e memória partilhada, mas nunca mexi em PHP, daí não sei se será isso que queres ou não.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Hipnoted

Bem, encontrei isto:

http://php.net/manual/en/book.sem.php

No entanto, nunca trabalhei com tal coisa, apenas sei alguma teoria de semáforos e memória partilhada, mas nunca mexi em PHP, daí não sei se será isso que queres ou não.

Já tinha visto isso mas só agora tive oportunidade de testar a memória partilhada em PHP. Mas tem um senão... isso não funciona em Windows, e o servidor possui Windows.

É de longe carga desnecessária, é pior usar ficheiros ou a memória do servidor.

Seria desnecessária porque apenas iria usar BD para controlar isto, e teria de pedir acesso a senhas, permissões, etc etc etc ao administrador do Moodle onde vai ficar o projecto. No entanto eu estava a ver mal as coisas, esqueci-me que a parte lógica do projecto (PHPs e afins) vai ficar no servidor onde tenho agora o projecto, por isso não há nenhum problema em usar BDs.

Incluir um ficheiros é (quase sempre) mais rápido que fazer uma query à base de dados. Quando alguém executa essa função, guardas num ficheiro 'qualquercoisa.php' algo do género:

"<?php $time = ".time()."; ?>"

Depois cada vez que mais alguém tenta executar a função incluis esse ficheiro e fazes as verificações que quiseres.

Também poderias usar memcache ou algo do género, mas como não queres instalar mais nada, acho que a solução do ficheiro é a melhor (e a única talvez)...

Gostei dessa opção. Juntando ao facto de ser eu a controlar as permissões do servidor acho que vou seguir este caminho. Se não der, uso BD!

Obrigado.


"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.