Hipnoted 5 Denunciar mensagem Publicado 26 de Maio de 2010 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
yoda 138 Denunciar mensagem Publicado 26 de Maio de 2010 Guardas o timestamp da última vez que é usada e quando a tentarem usar comparas as datas .. before you post, what have you tried? - http://filipematias.info sense, purpose, direction Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
Hipnoted 5 Denunciar mensagem Publicado 26 de Maio de 2010 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
yoda 138 Denunciar mensagem Publicado 26 de Maio de 2010 base de dados? ficheiro? .... before you post, what have you tried? - http://filipematias.info sense, purpose, direction Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
Hipnoted 5 Denunciar mensagem Publicado 26 de Maio de 2010 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
yoda 138 Denunciar mensagem Publicado 26 de Maio de 2010 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. before you post, what have you tried? - http://filipematias.info sense, purpose, direction Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
Hipnoted 5 Denunciar mensagem Publicado 26 de Maio de 2010 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
yoda 138 Denunciar mensagem Publicado 26 de Maio de 2010 Porque não podes usar base de dados? Ou porque não usar um serviço? before you post, what have you tried? - http://filipematias.info sense, purpose, direction Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
Hipnoted 5 Denunciar mensagem Publicado 27 de Maio de 2010 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
yoda 138 Denunciar mensagem Publicado 27 de Maio de 2010 É de longe carga desnecessária, é pior usar ficheiros ou a memória do servidor. before you post, what have you tried? - http://filipematias.info sense, purpose, direction Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
Caya 0 Denunciar mensagem Publicado 27 de Maio de 2010 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 12 Denunciar mensagem Publicado 27 de Maio de 2010 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 5 Denunciar mensagem Publicado 30 de Maio de 2010 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