Jump to content
php.lv forumi

nesaprašanās ar sesijām


ziedinjsh

Recommended Posts

ielogojoties lietotājam piešķir sesiju $_session['password']; ielogošanās, izlogošanās ir, kad bez aktivitātes kādu laiku tad iznīcina sesiju


if (isset($_SESSION['last_activity']) && (time() - $_SESSION['last_activity'] > 900)) {
  header("location:".url."logout.php");
}
$_SESSION['last_activity'] = time();

 

tas taka strādātu, bet lieta sekojoša.. ielogojoties tiek ievadīts datubāzē pie lietotāju tabulas online='1' un izlogojoties online='0', bet tad kad last activity iznīcina sessiju tad netiek updeitota datubāze par to ka lietotājs vairāk nav online.

 

Tad nu es domāju, vai ir kāda iespēja online saturu uztausīt tikai no sesijām? Piem. saskaita cik ir aktīvas password sesijas un tad atiecīgi izvelk no membera tabulas informāciju

 

Paldies jau iepriekš.

Link to comment
Share on other sites

anonīms, liela muiža. Paližu kronu, priekš čekiem šā vai tā, un lietu esmu atrisinājis bez problēmām ne tā?

Uzraksta nelielu cronjob, ar intervālu aptuveni 10 minūtes, jeb cik tur tā aktivitāte, domājams, nebūs viņam tur 10k lietotāju, lai smagi ietekmētu serveri.

Joprojām nesaskatu baigāko problēmu tur.

Edited by Kemito
Link to comment
Share on other sites

logout.php ir update uz onlien='0'

 

ja es datubāzē pie members saglabāšu last_activity = 'laiks'

 

jāievada

mysql_query("update mambers set last_activity='laiks' where table='sesija' ") or die(mysql_error());

 

tad man online sadaļā kā jāizvada

mysql_query("select * from members where last_activity > 'laiks' ") or die (mysql_error());

??

Link to comment
Share on other sites

> Jo .... ?

 

Lieki. Nav vajadzības.

 

**Skaidroju vēlreiz:**

 

Lietotājs var palikt onlainā pat ja tā nemaz nav. Tas neko nemaina kamēr neviens to neredz. Tieši tāpēc nav jēgas izmantot cron'u.

Tiklīdz kāds atver lapu kurā ir onlain lietotāju liste vai jebkas cits, kur tiek parādīts attiecīgā lietotāja status (online/offline) - tad tas tikai kaut ko maina.

Tiklīdz attiecīga lapa tiek atvērta, tikai tad čekojam pēdējo lietotāja aktivitāti pret pašreizējo laiku. Ja aktivitāte ir notikusi pārak sen (teiksim, 10 minūtes vai vairāk) - tad uzsetojam lietotāja statusu kā offline.

Gala lietotājs neredzēs nekādu starpību. Ieguvumi? Netiks izmantots cron, kas, kā zināms, izmanto resursus. Visi laimīgi! Šito es pinnoju lai nav simts un vienu reizi jāskaidro.

Link to comment
Share on other sites

Nafig vispār tas online lauks vajadzīgs? Lieka rakstīšana/lasīšana katru reizi. Galu galā, "online " ir tika viens mainīgais, ko tu aprēķini PHP pusē balstoties uz pēdējās aktivitātes laiku.

Pilnīgi lieka kolonna!

 

$is_online = time() > ($row['last_activity'] + 10*60);

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...