Como verificar se a página já está sendo acessada?

Eu tenho um aplicativo da Web executado no servidor que permite apenas um usuário por página. Quero verificar se a página já está em uso. Se for ts, mudarei o colar do banner para vermelho e não permitirei acessar até que o uso seja feito. Mas eu não sei como posso fazer isso. É um aplicativo PHP e também estou usando alguns javascript. O aplicativo já está pronto, mas eu tenho que implementá-lo agora. Como verificar se a página já está sendo acessada?

< ?php session_start(); $lockfile = 'lock.txt'; $idleSeconds = 300; if(file_exists($lockfile)) { // read the file. // $file[0] = timestamp of last page visit // $file[1] = session id $file = file_get_contents($lockfile); $file = explode('|', $file); // If the same user is visiting the site he shall pass and refresh the timestamp // Do the same for a new user when the idletime ran out if($file[1] == session_id() OR $file[0] + $idleSeconds <= time()) file_put_contents($lockfile, time() .'|'. session_id()); else die("You are not allowed to view the page. Wait until some other motherfucker is done here."); } else { // When there's no lockfile create one for the current user file_put_contents($lockfile, time() .'|'. session_id()); } ?>   My locked Page   Yeah some cool shit man   

Eu rapidamente juntei algo para você, no caso de você querer uma abordagem de apenas php. Estamos trabalhando com um lockfile aqui. O primeiro usuário que está visitando a página gerará um lockfile com seu ID de session e o timestamp atual.

Todas as solicitações verificamos se o arquivo de bloqueio existe e, se sim, verificamos se o usuário pode visualizar a página, verificando seu ID da session. Em seguida, atualizamos o timestamp.

Se ele não é, verificamos se o tempo ocioso acabou. Se for esse o caso, podemos replace o arquivo de $idleSeconds porque o outro usuário não atuou por $idleSeconds

Essa é uma solução rápida e suja, mas mostra a idéia básica.

Codificação feliz;)

Independentemente do contexto do seu problema, eu pessoalmente nunca criaria um sistema que levasse a esse tipo de requisito. No entanto, vou assumir que você não tem escolha.

Uma abordagem é:

  1. Para ter pedidos de período via Ajax a partir do cliente atualmente na página (o gatilho inicial é o carregamento da página, Ajax depois).

  2. Faça cada pedido reiniciar um timer curto que dê a essa pessoa tempo adicional antes que alguém possa pular.

  3. Quando o timer expirar, suponha que eles tenham deixado a página, porque os pedidos do Ajax pararam.

Existem soluções mais acessíveis: melhor maneira de detectar quando um usuário deixa uma página da web?

No entanto, eles assumem a responsabilidade de decidir quando um usuário é terminado longe do servidor, o que idealmente você deseja mantê-lo.