abonnement Unibet Coolblue Bitvavo
pi_51810886
Laat maar, te vroeg geroepen.

1
2
3
<?php
var_dump
(self::$message);
?>

werkt wel overal...

Bedankt voor de hulp iig!
Iemand dood maken met een blije mus is nooit grappig...
pi_51813886
quote:
Op dinsdag 24 juli 2007 22:19 schreef Geqxon het volgende:
Weer een performance vraag, maar deze keer eentje met een groter effect. Alsin: 0.2 seconden versus 8 seconden.

Een simpele query, met een LEFT JOIN op een bookmarktabel. Nu wil ik dus graag alle nieuwsartikelen zien die de user gebookmarked heeft. Dus hop, de LEFT JOIN, en dan op de koppelende ID van de bookmarktabel een IS NOT NULL. Gaat zelfs over duizenden nieuwsartikelen prima, supersnel dus.

Nu wil ik zien welke nieuwsartikelen de user niet gebookmarked heeft. (For the record: Dit zijn er minder dan de wel gebookmarkte nieuwsartikelen). Dit doe ik door een IS NULL op het koppelend ID van de bookmark tabel te zetten. Probleem dus: Dit gaat vreselijk traag...

Zou dit misschien sneller op te lossen zijn? Ik weet dat JOINS traag kunnen zijn, en hiermee is dat duidelijk te zien.
Met een LEFT JOIN met een IS NOT NULL op de gekoppelde tabel zeg je eigenlijk 'ik wil alle waarden van de gekoppelde tabellen die bestáán', en dat is dus gewoon een INNER JOIN wat betreft de performance: heb je wel indices op de keys in beide tabellen? (dus in tabel 1 op de primary key, en in tabel 2 op de foreign key)
pi_51813958
tvp
pi_51814467
quote:
Op woensdag 25 juli 2007 12:45 schreef JeRa het volgende:

[..]

Met een LEFT JOIN met een IS NOT NULL op de gekoppelde tabel zeg je eigenlijk 'ik wil alle waarden van de gekoppelde tabellen die bestáán', en dat is dus gewoon een INNER JOIN wat betreft de performance: heb je wel indices op de keys in beide tabellen? (dus in tabel 1 op de primary key, en in tabel 2 op de foreign key)
Een INNER JOIN is een goede, ik bouw mijn querys altijd met MySQL PHP op waardoor ik nog niet zo "dynamisch" dacht.

Verder heb ik indices op de primary en foreign keys van de tabellen die belangrijk zijn, mede daarom vind ik het vreemd dat het zo traag gaat. Zelf gok ik dat hij alle bookmark-records afgaat, en dat voor elk nieuwsartikel. Iets dat de traagheid prima verklaard. :-)

[ Bericht 1% gewijzigd door Geqxon op 25-07-2007 13:16:39 ]
pi_51814622
@Geqxon

Je kunt altijd nog EXPLAIN gebruiken om erachter te komen wat MySQL intern doet om je query uit te voeren output van beide SELECTs kun je dan vergelijken.
pi_51814880
quote:
Op woensdag 25 juli 2007 13:09 schreef JeRa het volgende:
@Geqxon

Je kunt altijd nog EXPLAIN gebruiken om erachter te komen wat MySQL intern doet om je query uit te voeren output van beide SELECTs kun je dan vergelijken.
Bedankt, die nemen we mee.
  woensdag 25 juli 2007 @ 16:08:12 #127
71919 wonderer
Hung like a My Little Pony
pi_51821509
quote:
Op woensdag 25 juli 2007 07:48 schreef WyriHaximus het volgende:

[..]


[ code verwijderd ]

Zoiets?
quote:
Op woensdag 25 juli 2007 08:43 schreef Geqxon het volgende:

[ code verwijderd ]


Oid.
Hm, ik had gedacht/gehoopt dat er een handigheidje voor was. Ik meende er iets over gelezen te hebben in de research van de afgelopen weken maar natuurlijk kan ik dat niet meer terugvinden. Dit lijkt me toch niet zo heel prettig voor een query met veel records...

Nou ja, bedankt
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
pi_51822421
quote:
Op woensdag 25 juli 2007 16:08 schreef wonderer het volgende:

[..]


[..]

Hm, ik had gedacht/gehoopt dat er een handigheidje voor was. Ik meende er iets over gelezen te hebben in de research van de afgelopen weken maar natuurlijk kan ik dat niet meer terugvinden. Dit lijkt me toch niet zo heel prettig voor een query met veel records... :{

Nou ja, bedankt ;)
1
2
3
4
5
SELECT emp_id, lname, fname, job_id,
(SELECT COUNT(*) FROM employee e2 WHERE e2.emp_id <= e.emp_id AND e2.job_id = 10) AS rownumber
FROM employee e
WHERE job_id = 10
ORDER BY emp_id

bron

Ook een interresante methode :)
pi_51830023
En net toen ik mijn trage IS NOT NULL wou testen.... gaat het opeens razendsnel! Vreemd, misschien toch een hickup ergens.
  woensdag 25 juli 2007 @ 21:04:28 #130
71919 wonderer
Hung like a My Little Pony
pi_51831318
quote:
Op woensdag 25 juli 2007 16:34 schreef Geqxon het volgende:

[..]


[ code verwijderd ]

bron

Ook een interresante methode
Daar snap ik geen reet van. Heb nu iets in elkaar geknutseld, kijken of dat werkt. Komt uiteindelijk toch op een while loop uit Dat wou ik juist niet. Nou ja, aan de andere kant is het max aantal records waar hij doorheen moet 200, dat zal niet zoveel geheugen kosten toch?
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
pi_51832169
quote:
Op woensdag 25 juli 2007 21:04 schreef wonderer het volgende:

[..]

Daar snap ik geen reet van. Heb nu iets in elkaar geknutseld, kijken of dat werkt. Komt uiteindelijk toch op een while loop uit Dat wou ik juist niet. Nou ja, aan de andere kant is het max aantal records waar hij doorheen moet 200, dat zal niet zoveel geheugen kosten toch?
Je telt simpelweg het aantal records tot en met het record dat jij wilt hebben.
  woensdag 25 juli 2007 @ 21:40:15 #132
71919 wonderer
Hung like a My Little Pony
pi_51832520
quote:
Op woensdag 25 juli 2007 21:30 schreef Geqxon het volgende:

[..]

Je telt simpelweg het aantal records tot en met het record dat jij wilt hebben.
Yeah, zo heb ik het nu. Ach ja, 't was het proberen waard

Bedankt voor het meedenken en tot de volgende vraag, die ongetwijfeld binnenkort zal komen
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
  woensdag 25 juli 2007 @ 23:09:57 #133
62215 qu63
..de tijd drinkt..
pi_51836146
* qu63 is bezig met sessions, alleen dat gaat niet zo best :')

ik heb gekeken op http://www.phphulp.nl/php/scripts/3/5/ maar zoals ik het nu heb werkt het niet echt:

[login.php]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<?php
session_start
();
require(
'sql.php');
if (
session_is_registered("sess_loginnaam") && session_is_registered("sess_id"))
{
    
header("Location: admin.php");
    exit;
}
else
{
$user = DB_USER;
$pass = DB_PASS;
$host = DB_HOST;
$dbdb = DB_DATABASE;

// zet het tabel en de volgende pagina
$table = "gebruikers";
// nieuws.php veranderen in je eigen volgende pagina
$nextpage = "admin.php";

if (!
mysql_select_db($dbdb, mysql_connect($host, $user, $pass)))
{
    echo
"Connectie met database mislukt.";
    exit();
}

// check of de user op de 'login' knop heeft gedrukt en of $loginnaam en $paswoord niet leeg zijn
if ($HTTP_POST_VARS["loginnaam"] && $HTTP_POST_VARS["paswoord"])
{
    
/* haal login gegevens uit database en check de
    gegevens met de ingevoerde gegevens */    
    
$HTTP_POST_VARS["paswoord"]=md5($HTTP_POST_VARS["paswoord"]);
    
    
$sql_db = "SELECT id, loginnaam, paswoord FROM $table WHERE loginnaam = '$HTTP_POST_VARS[loginnaam]' AND paswoord = '$HTTP_POST_VARS[paswoord]'";
    
$res_db = mysql_query($sql_db);

    
// check of er een overeenkomst is met ingevoerde en uitgelezen bestanden
    
if (mysql_num_rows($res_db) >= 1)
    {
        
// zet de values van database in een array
        
$row = mysql_fetch_array($res_db);

        
// zet de sessions
        
$sess_id = $row[id];
        
$sess_loginnaam = $row[loginnaam];

        
// registreer ze
        
session_register($sess_id);
        
session_register($sess_loginnaam);
//        3600,
        
session_set_cookie_params(3600);
        echo
"Je bent nu ingelogd. Klik <a href=$nextpage>hier</a> om verder te gaan.";
    }
    
    
/* indien er geen overeenkomst is tussen ingevoerde
    en uitgelezen gegevens */
    
    
else
    {
        echo
"Verkeerde loginnaam of paswoord<p>";
        
        echo
"Ga <a href="$PHP_SELF">terug</a> en probeer het opnieuw.";
    }
}

// indien er niet op de 'login' knop is gedrukt

else
{
    
// formulier
    
echo "<table border=0 cellspacing=0 cellpadding=5>";
    echo
"<form method=POST action=$PHP_SELF>";

    
// loginnaam veld
    
echo "<tr><td>Loginnaam:</td></tr>";
    echo
"<tr><td><input type=text name=loginnaam></td></tr>";

    
// space
    
echo "<tr><td> </td></tr>";
    
    
// paswoord veld
    
echo "<tr><td>Paswoord:</td></tr>";
    echo
"<tr><td><input type=password name=paswoord></td></tr>";

    
// space
    
echo "<tr><td> </td></tr>";

    
// submit knop
    
echo "<input type=submit name=submit value=Login>";
    
    
// sluit form & tabel
    
echo "</form>";
    echo
"</table>";
}
}
?>



[admin.php]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
session_get_cookie_params
();
session_start();
if (
session_is_registered($sess_loginnaam))
{
echo
"session_is_registered" .$sess_loginnaam."";
}
if (
session_is_registered($sess_id))
{
echo
"session_is_registered" .$sess_id."";
}

if (
session_is_registered("sess_loginnaam") && session_is_registered("sess_id"))
{
    echo
"gelukt!";
    
// hier de pagina
}
else
{
    echo
"niet gelukt!";
    
// geen rechten, niet ingelogd melding
}
?>


wat gaat er fout?
Hij wil dus mijn login gegevens niet onthouden, waardoor admin.php steeds zegt dat ik niet ingelogd ben..

iemand tips?
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  woensdag 25 juli 2007 @ 23:19:44 #134
71919 wonderer
Hung like a My Little Pony
pi_51836631
Sowieso... als iemand je sessie hijackt, kan ie zo inloggen als admin. Lijkt me niet zo handig.

(dat is toch zo?)
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
pi_51836642
Ziet eruit als een nogal achterhaald php4.0 of nog ouder scriptje. Ik zou nog ff verder zoeken als ik jou was
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  woensdag 25 juli 2007 @ 23:29:17 #136
62215 qu63
..de tijd drinkt..
pi_51837075
quote:
Op woensdag 25 juli 2007 23:19 schreef SuperRembo het volgende:
Ziet eruit als een nogal achterhaald php4.0 of nog ouder scriptje. Ik zou nog ff verder zoeken als ik jou was
dacht ik al ja
die md5 had ik er zelf maar bijgeplakt

iemand een link met goede tutorials mbt sessions?
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  woensdag 25 juli 2007 @ 23:46:12 #138
62215 qu63
..de tijd drinkt..
pi_51837915
quote:
hmz, dan moet ik wel ff zelf klooien met mysql enzo..
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  woensdag 25 juli 2007 @ 23:54:00 #139
84926 WyriHaximus
Release the hounds smithers!
pi_51838313
quote:

  • Password/Username in je cookie zetten
  • Alles in een door de server schrijf baar bestand opslaan
  • Direct $_POST data een cookie in gooien (zo word het wel erg makkelijk om een session na te maken)
  • .php3
  • Rechstreeks via post vars in een bestand data kunnen toevoegen

    Maar goed leuk voorbeeld als je wilt weten hoe het werkt maar niet als je het veilig wilt doen . Just my 2 cents .
  • phluphy for president!
      woensdag 25 juli 2007 @ 23:57:17 #140
    62215 qu63
    ..de tijd drinkt..
    pi_51838497
    quote:
    Op woensdag 25 juli 2007 23:54 schreef WyriHaximus het volgende:

    [..]


  • Password/Username in je cookie zetten
  • Alles in een door de server schrijf baar bestand opslaan
  • Direct $_POST data een cookie in gooien (zo word het wel erg makkelijk om een session na te maken)
  • .php3
  • Rechstreeks via post vars in een bestand data kunnen toevoegen

    Maar goed leuk voorbeeld als je wilt weten hoe het werkt maar niet als je het veilig wilt doen . Just my 2 cents .
  • ken jij betere tutorials?
    It's Time To Shine
    [i]What would life be like without rhethorical questions?[/i]
    pi_51838617
    quote:
    Op woensdag 25 juli 2007 23:54 schreef WyriHaximus het volgende:

    [..]


  • Password/Username in je cookie zetten
  • Alles in een door de server schrijf baar bestand opslaan
  • Direct $_POST data een cookie in gooien (zo word het wel erg makkelijk om een session na te maken)
  • .php3
  • Rechstreeks via post vars in een bestand data kunnen toevoegen

    Maar goed leuk voorbeeld als je wilt weten hoe het werkt maar niet als je het veilig wilt doen . Just my 2 cents .
  • O fuck, nu lees ik het pas.
      donderdag 26 juli 2007 @ 00:04:51 #142
    71919 wonderer
    Hung like a My Little Pony
    pi_51838873
    Ik had er eentje van een YAP* site (ik weet niet meer precies welke het is ) die wel goed is, geloof ik.

    sessie-id opslaan in sessie/cookie, opslaan in database en koppelen aan IP. Da's redelijk veilig.
    "Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
    "My brain is too smart for me."
    "We don't need no education." "Yes you do, you just used a double negative."
    pi_51839101
    quote:
    Op donderdag 26 juli 2007 00:04 schreef wonderer het volgende:
    Ik had er eentje van een YAP* site (ik weet niet meer precies welke het is ) die wel goed is, geloof ik.

    sessie-id opslaan in sessie/cookie, opslaan in database en koppelen aan IP. Da's redelijk veilig.
    Mijn persoonlijke opinie is dat sessies er enkel zijn voor als het browservenster open staat, en dat deze vervalt zodra de user het browservenster sluit.

    Zelf werk ik met een RememberKey. Elke keer als de user een pagina opvraagt, dan krijgt hij een enkele cookie met een unieke string. Deze unieke string sla ik ook in mijn database op, samen met zijn IP-adres.

    De user opent mijn pagina weer, klopt aan met de unieke string in zijn cookie. Ik kijk naar het IP-adres, de unieke string van het cookie, zoek het op in mijn database, é voila, daar tover ik een userid vandaan. Inloggen, klaar.
      donderdag 26 juli 2007 @ 00:09:55 #144
    84926 WyriHaximus
    Release the hounds smithers!
    pi_51839124
    quote:
    Op woensdag 25 juli 2007 23:57 schreef qu63 het volgende:

    [..]

    ken jij betere tutorials?
    Niet uit me hoofd, ben gewend dingen zelf uit te vogelen .
    quote:
    Op donderdag 26 juli 2007 00:00 schreef Geqxon het volgende:

    [..]

    O fuck, nu lees ik het pas.
    quote:
    Op donderdag 26 juli 2007 00:04 schreef wonderer het volgende:
    Ik had er eentje van een YAP* site (ik weet niet meer precies welke het is ) die wel goed is, geloof ik.

    sessie-id opslaan in sessie/cookie, opslaan in database en koppelen aan IP. Da's redelijk veilig.
    Als je de link weet te vinden is qu63 erg blij met je denk ik zo .
    phluphy for president!
      donderdag 26 juli 2007 @ 00:12:51 #145
    62215 qu63
    ..de tijd drinkt..
    pi_51839267
    quote:
    Op donderdag 26 juli 2007 00:09 schreef WyriHaximus het volgende:

    [..]

    Niet uit me hoofd, ben gewend dingen zelf uit te vogelen .
    ik ook, maar dit lukt nu ff niet
    quote:
    Als je de link weet te vinden is qu63 erg blij met je denk ik zo .
    It's Time To Shine
    [i]What would life be like without rhethorical questions?[/i]
      donderdag 26 juli 2007 @ 00:20:49 #146
    71919 wonderer
    Hung like a My Little Pony
    pi_51839621
    quote:
    Op donderdag 26 juli 2007 00:09 schreef Geqxon het volgende:

    [..]

    Mijn persoonlijke opinie is dat sessies er enkel zijn voor als het browservenster open staat, en dat deze vervalt zodra de user het browservenster sluit.

    Zelf werk ik met een RememberKey. Elke keer als de user een pagina opvraagt, dan krijgt hij een enkele cookie met een unieke string. Deze unieke string sla ik ook in mijn database op, samen met zijn IP-adres.

    De user opent mijn pagina weer, klopt aan met de unieke string in zijn cookie. Ik kijk naar het IP-adres, de unieke string van het cookie, zoek het op in mijn database, é voila, daar tover ik een userid vandaan. Inloggen, klaar.
    Zo doe ik het ook. Alleen gebruik ik de sessID voor unieke string.

    Voordeel hiervan is dat je als admin iemand kan uitloggen (loginID uit database verwijderen) en dat je niet vaker dan een keer kan zijn ingelogd (tenzij je moeilijk gaat doen en de loginID van het ene cookie in een nieuw cookie gaat zetten).
    "Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
    "My brain is too smart for me."
    "We don't need no education." "Yes you do, you just used a double negative."
      donderdag 26 juli 2007 @ 00:25:09 #147
    71919 wonderer
    Hung like a My Little Pony
    pi_51839805
    quote:
    Op donderdag 26 juli 2007 00:09 schreef WyriHaximus het volgende:

    Als je de link weet te vinden is qu63 erg blij met je denk ik zo .
    Volgens mij is ie offline. Het was een Nederlandse site met "yet another PHP ..." Ik weet niet meer wat er op de plek van de puntjes moet. Tutorial? Site? Zoiets. Was volgens mij een .net domain.
    "Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
    "My brain is too smart for me."
    "We don't need no education." "Yes you do, you just used a double negative."
      donderdag 26 juli 2007 @ 00:28:23 #148
    84926 WyriHaximus
    Release the hounds smithers!
    pi_51839937
    quote:
    Op donderdag 26 juli 2007 00:25 schreef wonderer het volgende:

    [..]

    Volgens mij is ie offline. Het was een Nederlandse site met "yet another PHP ..." Ik weet niet meer wat er op de plek van de puntjes moet. Tutorial? Site? Zoiets. Was volgens mij een .net domain.
    Dat zullen er best wat zijn die aan die beschrijving voldoen . Archive.org ftw met offline sites !
    phluphy for president!
      donderdag 26 juli 2007 @ 00:38:38 #149
    71919 wonderer
    Hung like a My Little Pony
    pi_51840297
    quote:
    Op donderdag 26 juli 2007 00:28 schreef WyriHaximus het volgende:

    [..]

    Dat zullen er best wat zijn die aan die beschrijving voldoen . Archive.org ftw met offline sites !
    Moet je wel de domeinnaam weten
    "Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
    "My brain is too smart for me."
    "We don't need no education." "Yes you do, you just used a double negative."
    abonnement Unibet Coolblue Bitvavo
    Forum Opties
    Forumhop:
    Hop naar:
    (afkorting, bv 'KLB')