Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.
Toon posts:

Script om online bezoekers te tonen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey

Ik wil een online systeem maken voor mijn site.
Zodat je kan zien hoeveel bezoekers/gasten er online zijn, ook wil ik inbouwen dat je op iedere lid's profiel kunt zien wanneer die voor het laatst online is geweest.
Nu heb ik gezocht hoe ik dit kan doen, ik had een manier gevonden met sessies, elke actie wordt opgeslagen in de database.
Ook vond ik een manier om alles in een logfile op te slaan.

Zijn er nog meer manieren voor wat ik wil, en welke is dan de beste?

Bvd

Verwijderd

Maak het eerst maar eens, dan zeggen we daarna wel hoe het beter kan en waarom. In welke backend je het opslaat boeit natuurlijk helemaal niks, zolang het maar een persistente dataopslag is.

Verwijderd

Topicstarter
Ja, dat ga ik ook doen,
maar ik wil graag eerst de beste manier weten om dit te doen...
Gewoon elke actie van de gebruiker opslaan in de database?
Als ik dan 3000 bezoekers heb die elk 30 pagina's bekijken :
90.000 records in een dag? Is dat wel zo handig?

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Voor de features in je startpost is het voldoende om enkel de laatste actie van een gebruiker te weten... :?

{signature}


Verwijderd

Voutloos schreef op vrijdag 08 augustus 2008 @ 22:13:
Voor de features in je startpost is het voldoende om enkel de laatste actie van een gebruiker te weten... :?
Precies. En als je dan wilt weten hoeveel gebruikers er nu online zijn, hoef je alleen maar te bepalen bij hoeveel gebruikers het bezoek minder dan een x aantal seconden geleden was.

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

wat wil je nou eigenlijk zelf? wil je die data (heb je het nodig).. ja of nee ?

if nee, niet handig
if ja , handig

Iperf


Verwijderd

Topicstarter
Nee, ik heb niet elke actie van de gebruiker nodig.
Dus dit is goed? :

Ik maak een tabel :
id,ip,laatstbezochtepagina,laatstonline(eventueel userid)

en bij elke oproep van een pagina wordt deze geupdate,
als de IP(+userid) al bestaat, dan wordt deze geupdate,
anders wordt er een nieuw record aangemaakt

Maar maakt het niet uit als ik nou veeel records aanmaak?
bijv. 15.000?

Verwijderd

Als je het gewoon had geprobeerd was je nu al klaar geweest. Verder kun je alleen optimaliseren als je een beetje ervaring hebt. Doe die ervaring gewoon op door het te maken en dan te bepalen of het snel genoeg is.

Verwijderd

Topicstarter
Ja oke,
maar ik dacht misschien is het nog mogelijk om de laatstbekekenpagina+laatstonlinetijd op te slaan in de tabel van de leden, dus dan hoeft er niet een extra tabel erbij?
Als een lid dan een pagina bekijkt, wordt de laatstbekeken pagina veranderd in de huidige pagina?

Welk idee zou beter zijn dan

[ Voor 19% gewijzigd door Verwijderd op 08-08-2008 22:26 ]


Verwijderd

Een proactieve houding is meestal beter dan een passieve.

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

Verwijderd schreef op vrijdag 08 augustus 2008 @ 22:21:
Nee, ik heb niet elke actie van de gebruiker nodig.
Dus dit is goed? :

Ik maak een tabel :
id,ip,laatstbezochtepagina,laatstonline(eventueel userid)

en bij elke oproep van een pagina wordt deze geupdate,
als de IP(+userid) al bestaat, dan wordt deze geupdate,
anders wordt er een nieuw record aangemaakt

Maar maakt het niet uit als ik nou veeel records aanmaak?
bijv. 15.000?
hoe meer dat er in gaat hoe langzemer alles uiteindelijk word ...
maar 15000 regels is focking peanuts

Iperf


  • ari
  • Registratie: November 2007
  • Laatst online: 05-11 00:06

ari

Bekijk beide ideeën, en bedenk van beide de voor- en nadelen. Bedenk dan welke voor jou belangrijk zijn, en maak de keuze.

  • André
  • Registratie: Maart 2002
  • Laatst online: 13-11 13:40

André

Analytics dude

Lees je eens in in de diverse aspecten. Je bent nu lukraak vragen aan het stellen waar je eigenlijk niets wijzer van word. Zoek zelf uit wat de meest ideale oplossing is en leer van die argumentatie. Het is belangrijker de redenen voor bepaalde keuzes te weten dan domweg een keus te maken en aan de slag te gaan. In beide gevallen kom je tot een werkende oplossing, maar in het eerste geval heb je meer geleerd.

Verwijderd

Topicstarter
Ik ben maar eens aan de slag gegaan dan :p :

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$ip=$_SERVER['REMOTE_ADDR'];
$q=mysql_query("SELECT * FROM online WHERE ip='".$ip."'");
if(mysql_num_rows($q)==1) {
    mysql_query("UPDATE online SET 
                userid='".userid()."',
                laatstbezocht='".$_SERVER['argv'][0]."',
                laatstonline=NOW()
                WHERE ip='".$ip."'
        ");
} else {
    mysql_query("INSERT INTO online(ip,userid,laatstbezocht,laatstonline)
                VALUES('".$ip."', '".userid()."', '".$_SERVER['argv'][0]."', NOW())
    "); 
}
$q=mysql_query("SELECT id,laatstonline,laatstbezocht FROM online WHERE DATE_SUB(NOW(),INTERVAL 7 MINUTE) >= laatstonline AND userid!='0'");
if(mysql_num_rows($q)!=0) {
    while($show=mysql_fetch_assoc($q)) {
        mysql_query("UPDATE leden SET laatstonline='".$show['laatstonline']."', laatstbezocht='".$show['laatstbezocht']."', online=0 WHERE id='".$show['userid']."'");
        mysql_query("DELETE FROM online WHERE id='".$show['id']."'");
    }
}
mysql_query("DELETE FROM online WHERE DATE_SUB(NOW(),INTERVAL 7 MINUTE) >= laatstonline AND userid=0");
?>


Weet iemand nu misschien iets wat ik kan verbeteren?

  • Juup
  • Registratie: Februari 2000
  • Niet online
PHP:
1
2
3
4
$ip=$_SERVER['REMOTE_ADDR'];
$q=mysql_query("SELECT * FROM online WHERE ip='".$ip."'");
...
mysql_query("UPDATE leden SET laatstonline='".$show['laatstonline']."', laatstbezocht='".$show['laatstbezocht']."', online=0 WHERE id='".$show['userid']."'");

Ahhh sql injection here we come.
Het is beter om die waarden te escapen bv met mysql_real_escape_string()

In plaats van een losse check of de row al bestaat en dan update of insert kun je ook replace into gebruiken.

Waarom zit je in je leden tabel te rommelen? Die info staat toch al in de online tabel?

[ Voor 132% gewijzigd door Juup op 09-08-2008 01:24 ]

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Ik vind die hele 'online' tabel nutteloos. Waarom niet gewoon zo:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//page visit
mysql_query("
UPDATE users
SET lastrequest = UNIX_TIMESTAMP(NOW())
WHERE id = {$_SESSION['userid']}
LIMIT 1
;");

//construct active people list
$result = mysql_query("
SELECT username
FROM users
WHERE lastrequest > (UNIX_TIMESTAMP(NOW()) - 180)
ORDER BY username DESC
;");

[ Voor 3% gewijzigd door Bozozo op 09-08-2008 01:27 ]

TabCinema : NiftySplit


Verwijderd

Topicstarter
@:Jaaap :
Sql injection is volgens mij niet mogelijk, omdat de variabeles tussen ' staan.

Waarom zit je in je leden tabel te rommelen? Die info staat toch al in de online tabel?
Omdat ik de informatie over de laatstbekeken en laatstonline pagina nog wil behouden, die wordt na 7 min verwijderd.

@Bozozo,
Dat dacht ik eerst ook, maar ik wil ook graag het aantal gasten die online zijn bijhouden.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op zaterdag 09 augustus 2008 @ 01:35:
@:Jaaap :
Sql injection is volgens mij niet mogelijk, omdat de variabeles tussen ' staan.
Die kun je makkelijk escapen. Ik dacht verder even dat enkel $ip werd gebruikt, en die kan niet gevuld worden met malicious content (bij mijn weten) omdat $_SERVER['REMOTE_ADDR']; altijd een IP zal geven, totdat ik verder keek en $_SERVER['argv'] zag staan etc. De regels code die Jaaap echter aanhaalt (en dan gaat het over $show volgens mij) zijn dan niet vatbaar voor injection omdat $show gevuld wordt door eigen data (regel 18) uit de tabel (even aangenomen dat het datetime en integer velden zijn en geen varchars...) Ah, "laatstbezocht" is de querystring, en ja dan heb je dus wel degelijk dik kans op SQL injection. Ik dacht even dat het een datetime zou zijn.

Linksom of rechtsom; het is nogal een omslachtige manier ;)

[ Voor 44% gewijzigd door RobIII op 09-08-2008 01:43 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Oh, ja idd , $_SERVER['argv'] zal ik wel een mysql_real_escape_string overheen gooien

Dus als er ' ".$_GET['gevaarlijk']." ' gebruik, dan kan er dus ook een sql injection gedaan worden?
Ik dacht altijd dat als er een ' omheen staat het niet kan, maar gelukkig escape ik mn userinputs wel altijd :p
Maar wat zou de user kunnen invullen in url dan voor een sql injection?

index.php?p=poll'; DROP TABLE leden; UPDATE online set laatstonline='aa

werkt bij mij hier niet.? tabel leden wordt niet verwijderd

[ Voor 80% gewijzigd door Verwijderd op 09-08-2008 02:15 ]


  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 12:18

Sebazzz

3dp

Wat voor type tabel gebruik je voor online? Je kan daar beter niet MyISAM of InnoDB voor gebruiken (snelheid, als je HEAP gebruikt ben je sneller af)

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Verwijderd

Topicstarter
Ja, ik gebruik MyISAM

en wat kan de user dan invullen in de url voor een sql injection?

index.php?p=poll'; DROP TABLE leden; UPDATE online set laatstonline='aa

werkt bij mij hier niet.? tabel leden wordt niet verwijderd

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
En ipv een string ip zou ik persoonlijk een ip2long erover heen gooien, zoekt toch net even wat sneller dan een string ( en het hele sql_injection verhaal over deze waarde wordt nutteloos, want je hebt het alleen maar over een output van ip2long en dat zou afaik altijd een long moeten zijn )

Verwijderd

Verwijderd schreef op zaterdag 09 augustus 2008 @ 15:13:
Ja, ik gebruik MyISAM

en wat kan de user dan invullen in de url voor een sql injection?

index.php?p=poll'; DROP TABLE leden; UPDATE online set laatstonline='aa

werkt bij mij hier niet.? tabel leden wordt niet verwijderd
Klopt, de mysql_query functie van PHP voert maar 1 query uit (ook als er meerdere queries tegelijk worden gegeven, gescheiden met ; zie ook de PHP manual mysql_query())

Desalniettemin is het nooit slecht dit soort dingen wel af te vangen door waarden te quoten!

Verwijderd

Verwijderd schreef op zaterdag 09 augustus 2008 @ 15:38:
[...]

Klopt, de mysql_query functie van PHP voert maar 1 query uit (ook als er meerdere queries tegelijk worden gegeven, gescheiden met ; zie ook de PHP manual mysql_query())
Dit geld niet voor transactions.
offtopic:
Wilt iemand dit topic naar PRG schoppen?

[ Voor 6% gewijzigd door Verwijderd op 09-08-2008 19:37 ]


Verwijderd

Verwijderd schreef op zaterdag 09 augustus 2008 @ 19:25:

Dit geld niet voor transactions.
offtopic:
Wilt iemand dit topic naar PRG schoppen?
Onzin.
PHP:
1
2
mysql_query ( 'START TRANSACTION; SELECT 1; COMMIT' );
echo mysql_error ();

Verwijderd

Dat zeg ik toch Cheatah. Dat zijn meerdere statements, die tegelijk uitgevoerd worden. Zelfs al stuur je ze per stuk. Of je ook normaal in de functie mysql_query meerdere query's kon gebruiken, had ik net betwijfeld, maar tbh zou het raar staan dat er niet meerdere query's tegelijk gedaan kunnen worden. php_mysql_admin (oid, het webbased programma voor configuratie) kan hetzelfde, alhoewel bij meerdere query's de resultatenset anders kan zijn dan de verwachte.

edit:

remembered something:
Bobby Tables

[ Voor 13% gewijzigd door Verwijderd op 09-08-2008 21:35 ]


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Maar goed, een sql injection is niet alleen maar kwalijk als er extra queries ingevoerd kunnen worden. :z

Behandel gewoon elke variabele op de goede plek op de goede manier is het devies.

{signature}


  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Nootje: voor ip-adressen heeft MySQL INET_ATON(), al heb ik geen idee of MySQL sneller is dan PHP.

TabCinema : NiftySplit


Verwijderd

Verwijderd schreef op zaterdag 09 augustus 2008 @ 21:10:
Dat zeg ik toch Cheatah. Dat zijn meerdere statements, die tegelijk uitgevoerd worden.
Nee. Het zijn meerdere statements, en dus worden ze niet uitgevoerd, want mysql_query accepteert maar één statement.
Zelfs al stuur je ze per stuk. Of je ook normaal in de functie mysql_query meerdere query's kon gebruiken, had ik net betwijfeld, maar tbh zou het raar staan dat er niet meerdere query's tegelijk gedaan kunnen worden.
Dat kan dus niet omdat dat wordt afgevangen in de implementatie van de C functie mysql_query.
php_mysql_admin (oid, het webbased programma voor configuratie) kan hetzelfde, alhoewel bij meerdere query's de resultatenset anders kan zijn dan de verwachte.
Het lijkt mij zeer waarschijnlijk dat phpMyAdmin de queries parset en één voor één aan MySQL voert.

Wat betreft SQL injection is het natuurlijk duidelijk dat alle input moet worden gesanitizet, maar wat betreft mysql_query heb je het gewoon fout. Dat ding accepteert één statement. Eigenlijk zou dat geen fuck moeten uitmaken omdat je foute user input toch al afvangt, maar ach... Dat zijn keuzes die zijn gemaakt.

Verwijderd

Zit ik achteraf toch fout. Het was gelukkig een hypothese. Dagje hard werken maakt lui :)

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
WEB >> PRG

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

offtopic:
fl!pulI schreef op zaterdag 09 augustus 2008 @ 19:25:
[...]


" Dit geld niet voor transactions. "

Niet bijdehand bedoeld, maar hoe kom je aan deze wijsheid? In de PHP manual staat namelijk bij de functie mysql_query:

" mysql_query() sends an unique query (multiple queries are not supported) to the currently active database on the server that's associated with the specified link_identifier . "

Er is een commentaar bij die functie die ook voor iedere query mysql_query uitvoert.
Er zijn geen functies in PHP speciaal voor transacties (ook niet nodig, maar dat is dus ook geen argument).

Ik weet dat ik hier erg offtopic draaf, maar ik vind het interessant, en ben benieuwd of en hoe je je uitspraak kan onderbouwen.

Nogmaals, deze post kan erg bijdehand klinken, zo is het niet bedoeld; het is laat en ik weet even geen betere formulering ;)

[ Voor 5% gewijzigd door Verwijderd op 10-08-2008 03:13 ]


Verwijderd

Verwijderd schreef op zaterdag 09 augustus 2008 @ 22:28:
[...]
Dat kan dus niet omdat dat wordt afgevangen in de implementatie van de C functie mysql_query.
Lees dan ook ff je eigen linkje ;)

Het is dus technisch gezien wel mogelijk, maar niet heel simpel en zeker niet de standaard.

Tenzij je echt super veel overhead hebt in de connectie naar de database server (wat sowieso een brakke situatie is) kan ik er eigenlijk ook niet echt het nut van inzien.
[...]

Het lijkt mij zeer waarschijnlijk dat phpMyAdmin de queries parset en één voor één aan MySQL voert.
Lijkt me ook.

Verwijderd

Ik wil wel 1 vraagstuk plaatsen. Hoe kan het dat op mijn server, mysql_query werkt op deze query?

SQL:
1
2
3
4
5
6
7
8
9
10
(sprintf)
BEGIN;
INSERT INTO `products` (`category_id`, `name`, `price`)
VALUES (%d, '%s', %d);
INSERT INTO `product_sets` (`product_id`, `stock_amount`, `deliverable`)
VALUES (%d, %d, b'1' );
INSERT INTO `product_property_sets` (`product_set_id`, `property_value_id`)
VALUES %s;
COMMIT;",
...

Voordat ScallioXT bijdehand begint te doen (:P) geloof ik mijn eigen praktijk eerder dan php.net :) En toch klopt het allemaal nog steeds niet in mijn ogen. Want volgens TRRoads kàn het wel, maar niet vanzelfsprekend. Waarom bij mij dan wel? Ik sluit ook elke query af met (volgens php niet toegestane) punt-komma's.

edit:

Ik kom helaas niet veel verder zo. Cheatah zijn link naar de mysql manual deed me denken dat er een instelling moet zijn voor de server. Heb hem helaas niet gevonden. Of het is misschien wel omdat ik mysql 5 draai.

[ Voor 18% gewijzigd door Verwijderd op 10-08-2008 09:57 ]


Verwijderd

Als je het echt wilt weten: download de source en zie dat mysql_query echt niet meerdere queries kan uitvoeren. Maar zoals ik al zei: het moet geen fluit uitmaken. In queries moet nooit iets anders kunnen staan dan wat je erin wilt hebben staan, en je moet sowieso niet eens willen om meerdere queries ineens te doen.

[ Voor 48% gewijzigd door Verwijderd op 10-08-2008 12:00 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:23

Creepy

Tactical Espionage Splatterer

http://dev.mysql.com/doc/...api-multiple-queries.html
By default, mysql_query() and mysql_real_query() interpret their statement string argument as a single statement to be executed, and you process the result according to whether the statement produces a result set (a set of rows, as for SELECT) or an affected-rows count (as for INSERT, UPDATE, and so forth).

MySQL 5.0 also supports the execution of a string containing multiple statements separated by semicolon (“;”) characters. This capability is enabled by special options that are specified either when you connect to the server with mysql_real_connect() or after connecting by calling` mysql_set_server_option().

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Maar dan nog gaat Cheatahs mening mbt meerdere queries in 1 keer op. Foutafhandeling en verwerking van resultset worden er echt niet eenvoudiger op. Het biedt niet eens voldoende voordelen om uberhaupt het wijzigen van een default setting waard te zijn.

Overigens staat er bij mysqli_real_connect():
'Note: For security reasons the MULTI_STATEMENT flag is not supported in PHP'
En gezien het schokkend grote aantal mensen dat brakke queries schrijft (ja, mening ook op basis van gemiddelde (my)sql topic op GoT :X ) is dat maar goed ook.

[ Voor 36% gewijzigd door Voutloos op 10-08-2008 13:20 ]

{signature}


Verwijderd

Neemt niet weg dat Cheatah het als feit stelt dat er maar 1 query tegelijk door mysql_query kan worden uitgevoerd terwijl dat dus niet klopt. Technisch gezien kan het gewoon.

Verwijderd

Zeer bedankt voor de toevoegingen, Creepy en Voutloos :)
Alhoewel in mijn code toegevoegd kan worden, dat er voorgaande met losse query's de validiteit van de nieuwe informatie gecontroleerd word, met foutafhandeling. Ik vind deze genoemde nadelen dus niet van toepassing op mijn Database (alhoewel zeer leerzame tip).
offtopic:
Ik was hopelijk niet te offtopic? :X


edit:

Ja dat klopt Voutloos. Maar 1 query is atomisch precieser :P Zonder bull, mijn manier is op het moment gemakkelijker voor me. Vele wensen in dit pakket.

[ Voor 18% gewijzigd door Verwijderd op 10-08-2008 16:05 ]


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Verwijderd schreef op zondag 10 augustus 2008 @ 15:42:
Zeer bedankt voor de toevoegingen, Creepy en Voutloos :)
Graag gedaan. ;) Maar ook transactions mag je imo gewoon per query uitvoeren. :w

'atomisch precieser'? Iets is atomic of niet. Een transaction is atomic, klaar.

[ Voor 15% gewijzigd door Voutloos op 10-08-2008 16:11 ]

{signature}


  • Guldan
  • Registratie: Juli 2002
  • Laatst online: 15-11 22:34

Guldan

Thee-Nerd

Ik wil nog een laatste mogelijkheid aandragen om dit mogelijk te maken:

In de gebruikerstabel staat naast iedere gebruiker een veld waarin een timestamp waarde staat opgeslagen wanneer deze voor het laatst actief is geweest. Iedere keer dat een gebruiker een andere pagina bezoekt dan wordt deze waarde geupdate.

Om te kijken hoeveel mensen er online zijn kijk je gewoon naar de huidige timestamp en vergelijk je die met de database. Zit er een verschil in van bijvoorbeeld meer als bijv. 5 minuten dan zal de gebruiker wel niet online zijn. (of hij heeft 5 minuten niets gedaan en is zijn sessie verlopen). Deze manier is natuurlijk nog wat verder te optimaliseren maar is wel een goede/simpele oplossing.

You know, I used to think it was awful that life was so unfair. Then I thought, wouldn't it be much worse if life were fair, and all the terrible things that happen to us come because we actually deserve them?


Verwijderd

Briljant gewoon Guldan! Dat wij dat nog niet bedacht hadden!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:23

Creepy

Tactical Espionage Splatterer

Guldan:
Je bedoelt iets als
PHP:
1
q=mysql_query("SELECT id,laatstonline,laatstbezocht FROM online WHERE DATE_SUB(NOW(),INTERVAL 7 MINUTE) >= laatstonline AND userid!='0'");

(zie Verwijderd in "Script om online bezoekers te tonen").

offtopic:
Aka, lees de draad eerst voordat je post ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Patriot
  • Registratie: December 2004
  • Laatst online: 16-11 16:51

Patriot

Fulltime #whatpulsert

Creepy schreef op zondag 10 augustus 2008 @ 17:36:
Guldan:
Je bedoelt iets als
PHP:
1
q=mysql_query("SELECT id,laatstonline,laatstbezocht FROM online WHERE DATE_SUB(NOW(),INTERVAL 7 MINUTE) >= laatstonline AND userid!='0'");

(zie Verwijderd in "Script om online bezoekers te tonen").

offtopic:
Aka, lees de draad eerst voordat je post ;)
Bedoelt hij het niet gewoon als alternatief voor een extra tabel? Als het alleen gaat om het laten zien van wie er online is is dat helemaal niet zo gek om voor te stellen, als de TS ook nog wil weten wat de persoon als laatste heeft gedaan dan kan beter voor een aparte tabel gekozen worden.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:23

Creepy

Tactical Espionage Splatterer

In de gebruikerstabel staat naast iedere gebruiker een veld waarin een timestamp waarde
Dit is precies wat al eerder is beschreven. Ik kan het in elk geval niet anders interpreteren en hij heeft het zeker niet over een extra tabel. Zonder die timestamp wordt het nogal moeilijk om aan te geven wie er online is en wie niet :P

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024

iH8

offtopic:
ik vind dit wel een nette oplossing voor meerdere queries in één keer uit te voeren: http://nl3.php.net/manual/en/mysqli.multi-query.php

[ Voor 18% gewijzigd door iH8 op 10-08-2008 22:31 ]

Aunt bunny is coming to get me!


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
iH8 schreef op zondag 10 augustus 2008 @ 22:31:
offtopic:
ik vind dit wel een nette oplossing voor meerdere queries in één keer uit te voeren: http://nl3.php.net/manual/en/mysqli.multi-query.php
A : Ik zie niet wat het met het topic te maken heeft?
B : Imho als je zonodig meerdere querys in 1x wilt uitvoeren dan ben je of veels te ver boven mijn pet uitgestegen of je wilt net zoals 99% van de gebruikers iets wat alleen maar logisch is voor jou.

Geef aub eens 1 voorbeeld van een situatie waar ik echt meerdere querys in 1x moet uitvoeren, zonder mijn MVC scheiding te doorbreken, zonder mijn algemene business rules te doorbreken, zonder mijn validatie regels te doorbreken.

Ik kan wel een aantal voorbeelden bedenken, maar dan praat ik niet meer over mysql. Mysql kent afaik maar 1 writer, de readers kan je repliceren via slaves. Maar dat vind ik dus totaal niet meer boeiend als ik over multi-querys ga praten, dan is zeer waarschijnlijk een goede load-balancer die de losse query's verdeeld nav de load efficienter dan een multi-query naar 1 machine te sturen...

Verwijderd

Gomez12 schreef op zondag 10 augustus 2008 @ 22:56:
[...]

A : Ik zie niet wat het met het topic te maken heeft?
Daarom staat er ook 'offtopic' boven he? :P
Pagina: 1