Het gaat om mijn statistieken script waarbij ik gemiddeld zó'n 15 queries per load, ik heb werkelijk waar geen idee hoe ik dit zou moeten cachen!quote:Op zaterdag 22 november 2008 11:46 schreef GlowMouse het volgende:
Als je tijdens traagheid geen queries in SHOW FULL PROCESSLIST ziet, dan worden er op dat moment geen queries uitgevoerd. Dat wijst erop dat je gewoon teveel queries doet die wel allemaal heel snel uitgevoerd kunnen worden. Als je ook al praat over 'een berg met queries' dan kan ik wel raden wat er fout gaat. Als iemand een pagina opvraagt, moet je gewoon zorgen dat je met zo min mogelijk en goed geïndexeerde queries toekunt.
Leek mij idd ook nietquote:De slowquerylog heeft met veel maar korte queries ook niet zoveel zin.
Had ik reeds gedaan maar kon er niet echt wijs uit wordenquote:Bij SHOW STATUS is er heel veel waar je op moet letten. Beste is om de handleiding ernaast te houden en iedere waarde te controleren en te kijken of dat een oorzaak kan zijn van traagheid. Dat kan sowieso geen kwaad als je meer van MySQL wilt weten
Jawel, een hele berg zelfs! maar hoezo?quote:Op zaterdag 22 november 2008 12:43 schreef VeerMans het volgende:
Dus je hebt er geen unieke sleutels inzitten?
Je had het over een berg; 15 is niets. Je zult wel geen of slechte indexen hebben staan. Geef maar wat queries, hun EXPLAIN output, en je hele table lay-out (incl geplaatste indices).quote:Op zaterdag 22 november 2008 13:48 schreef Chandler het volgende:
[..]
Het gaat om mijn statistieken script waarbij ik gemiddeld zó'n 15 queries per load, ik heb werkelijk waar geen idee hoe ik dit zou moeten cachen!
Klinkt alsof je veel samengestelde queries gebruikt, en dan kan het maken van indexes op je primaire/vreemde sleutels wel eens heeeel erg veel tijd schelen bij samengestelde queriesquote:Op zaterdag 22 november 2008 13:48 schreef Chandler het volgende:
Jawel, een hele berg zelfs! maar hoezo?
Mag ik dit ook per PM doen, aangezien ik niet mijn hele structuur op het internet beschikbaar wil hebbenquote:Op zaterdag 22 november 2008 15:06 schreef GlowMouse het volgende:
Je had het over een berg; 15 is niets. Je zult wel geen of slechte indexen hebben staan. Geef maar wat queries, hun EXPLAIN output, en je hele table lay-out (incl geplaatste indices).
De tabellen vak en resultaat is dan alles wat je nodig hebt.quote:Op zaterdag 22 november 2008 13:34 schreef Frenker het volgende:
De bedoeling is nu dat ik voor de vakken hardware en systeemontwikkeling per vak het gemiddelde cijfer geef.
1 2 3 4 | FROM vak JOIN resultaat AS res ON res.vak=vak.code GROUP BY vak.naam |
dank je wel, ga ik bekijken.quote:Op zaterdag 22 november 2008 16:18 schreef GlowMouse het volgende:
commentator: zie UNION, maar bedenk dat het je geen betere performance oplevert en overzichtelijkheid in veel gevallen ook ver te zoeken is.
Wat is het type van het veld waar de auto_increment op staat? Als dat bijvoorbeeld TINYINT is, dan is het logisch dat hij niet verder gaat: een TINYINT kan waarden aannemen van -128 tot 127. Dan zou je het type moeten aanpassen naar een groter datatype.quote:Op zondag 23 november 2008 11:19 schreef MrDoegewoon het volgende:
Klein MySQL vraagje,
Op één van m'n websites gaf een script ineens een MySQL error, de auto_increment value bleek op value 127 te hangen.
Ik heb geprobeerd hem te resetten, maar niks hielp. Wel fixte een repair van die tabel het probleem. Maar mijn vraag is, hoe kan dit gebeuren? Dat de auto_increment value blijft hangen.
Of altijd een insert proberen te doen en ON DUPLICATE KEY UPDATEquote:Op zondag 23 november 2008 14:38 schreef Xcalibur het volgende:
het enige juiste antwoord: REPLACE INTO![]()
Zoals hierboven ook al staat: je gebruikt een signed TINYINT datatype (unsigned gaat 'ie tot 255, dus voor auto_increments altijd unsigned gebruiken, dubbele capaciteit en je gaat toch nooit in het negatieve). Lekker INT van maken, kun je er (unsigned) 4294967295 kwijtquote:Op zondag 23 november 2008 11:19 schreef MrDoegewoon het volgende:
Klein MySQL vraagje,
Op één van m'n websites gaf een script ineens een MySQL error, de auto_increment value bleek op value 127 te hangen.
Thanks!quote:Op zondag 23 november 2008 14:38 schreef Xcalibur het volgende:
het enige juiste antwoord: REPLACE INTO
Fout, REPLACE INTO verwijderd eerst het gevonden resultaat en INSERT INTO .. ON DUPLICATE KEY doet dat niet, deze past het resultaat alleen maar aan.quote:Op zondag 23 november 2008 14:38 schreef Xcalibur het volgende:
het enige juiste antwoord: REPLACE INTO
Gezien de vraag lijkt dat geen probleemquote:Op zondag 23 november 2008 15:10 schreef slacker_nl het volgende:
Fout, REPLACE INTO verwijderd eerst het gevonden resultaat en INSERT INTO .. ON DUPLICATE KEY doet dat niet, deze past het resultaat alleen maar aan.
Snap ik, maar vreemde is dat de counter pas op 52 hoorde te staan ipv 127.quote:Op zondag 23 november 2008 14:47 schreef CraZaay het volgende:
[..]
Zoals hierboven ook al staat: je gebruikt een signed TINYINT datatype (unsigned gaat 'ie tot 255, dus voor auto_increments altijd unsigned gebruiken, dubbele capaciteit en je gaat toch nooit in het negatieve). Lekker INT van maken, kun je er (unsigned) 4294967295 kwijt
1 2 3 | <input type="checkbox" name="details" value="1" if($edit_details==1){ echo'checked="checked" disabled="disabled"';} /> ?> |
Opgelost met een hidden veld. Jammer dat 'readonly' IE only is. handige html tag.quote:Op zondag 23 november 2008 20:21 schreef GlowMouse het volgende:
Ah, ik zag geen PHP-tag halverwege je regel dus dacht dat daar het probleem zat. Maar disabled wordt niet doorgegeven inderdaad. Alternatief is readonly, maar dat werkt in Firefox in ieder geval niet goed. Ander alternatief is met een script vlak voor de submit het veld nog te undisablen.
Maar beter nog is helemaal niet naar deze waarde te kijken, maar gewoon in je script te bedenken wat de waarde zou moeten zijn. User-input is immers nooit te vertrouwen.
Omdat er eerst wat anders gewijzigd moet worden voordat deze gewijzigd mag worden. En door die checkbox wel te tonen ontstaat er consistentie in de gui.quote:Op zondag 23 november 2008 20:34 schreef Xcalibur het volgende:
Waarom heb je uberhaupt de waarde van een checkbox nodig als je hem niet kunt wijzigen?![]()
Lijkt wat zinloos...
Het is een edit van een bestaand product. Ik had in de verwerking kunnen controleren of 'details' al gezet is, of ik kan de value simpelweg meegeven in het form om te zorgen dat hij 'details' niet update.quote:Op zondag 23 november 2008 22:15 schreef Xcalibur het volgende:
Maar je weet of deze gewijzigd mag worden of niet. In je logica weer je dan toch ook of hij gewijzigd mag worden of niet? En als hij niet gewijzigd mag worden (en dus disabled is) heb je de value dus helemaal niet nodig?
Of mis ik nou echt iets?![]()
Anyway, hulde voor de consistente gui![]()
Ik heb er echt een grafhekel aan als dingen verspringen als ik ergens op klik...
Dat had voldoende geweest als er geen andere stuk code was wat nog wat met die 'details' deed.quote:Op zondag 23 november 2008 22:24 schreef Xcalibur het volgende:
hmmm, ik weet natuurlijk niet hoe je script eruit ziet, maar op zich lijkt een ifje om de waarde die de checkbox enabled/disabled voldoende? :)
Uiteraardquote:Anyway, je zet nu een hidden veld als hij disabled is, en die haal je weer weg als je hem enabled ofzo? Als je hem niet weg haalt zouden de checkbox en het hidden veld elkaar wel eens dwars kunnen zitten namelijk...
1 2 3 4 5 | if($edit_details==1){ echo'<input type="hidden" name="details" value="1" /><input type="checkbox" name="bogey" value="" checked="checked" disabled="disabled" />'; }else{ echo'<input type="checkbox" name="details" value="1" onclick="toggle(\'details\')" />'; } ?> |
Alles via SSL doen, op IP en useragent locken, en je sessie ID steeds vernieuwen (zoals cakephp met security op high het doet) veel meer kan je niet doen?quote:Op maandag 24 november 2008 16:04 schreef saban het volgende:
Hoe kan je een 'secure' login systeem bouwen met cookies? Want cookies zijn zo over te nemen. Enkel checken op IP zal niet voldoende zijn lijkt me?
Kuch, als je een generic account gebruikt misschien, maar mijn chick is echt niet ingelogd onder mijn user op fok op onze gezamelijke PC.quote:Op maandag 24 november 2008 16:25 schreef Xcalibur het volgende:
Wat bedoel je met secure?
Je userdata hoef je niet in een cookie te zetten natuurlijk... Als je de cookie gebruikt om automatisch in te loggen hebben je sowieso een ontzettend security risk (iedereen die die pc gebruikt is automatisch ingelogd).
Dat ieder die achter die pc zit direct ook automatisch ingelogd is is logisch, de app kan natuurlijk niet zien wie er daadwerkelijk achter de pc zit.quote:Op maandag 24 november 2008 16:25 schreef Xcalibur het volgende:
Wat bedoel je met secure?
Je userdata hoef je niet in een cookie te zetten natuurlijk... Als je de cookie gebruikt om automatisch in te loggen hebben je sowieso een ontzettend security risk (iedereen die die pc gebruikt is automatisch ingelogd).
quote:Op maandag 24 november 2008 20:13 schreef hello_moto1992 het volgende:
Another problem ( :@ ) met een rotate-scriptje in PHP heb ik een header ingesteld. Deze staat als img src als 'header.php' in de top.php. Die staat geinclude op alle pagina's. Hoe zorg ik er voor dat ik op één pagina(de homepage) geen roterende header krijg, maar gewoon een vaste afbeelding?
1 2 3 4 5 6 7 | if($_SERVER['PHP_SELF']!='/homepage.php'){ //roterende header }else{ //vaste header } ?> |
Met code (dit is een hint).quote:Op maandag 24 november 2008 20:13 schreef hello_moto1992 het volgende:
Another problem () met een rotate-scriptje in PHP heb ik een header ingesteld. Deze staat als img src als 'header.php' in de top.php. Die staat geinclude op alle pagina's. Hoe zorg ik er voor dat ik op één pagina(de homepage) geen roterende header krijg, maar gewoon een vaste afbeelding?
Precies simpel zatquote:
1 2 3 4 5 6 7 | if($_SERVER['PHP_SELF']!='/index.php'){ <?php include("header.php"); ?> }else{ <img src="header.php"> } ?> |
neequote:Op dinsdag 25 november 2008 10:06 schreef hello_moto1992 het volgende:
Super bedankt!
Maar k krijg hem nog niet helemaal aan de praat.
Moet ie zo?
[ code verwijderd ]
1 2 3 4 5 6 7 | if($_SERVER['PHP_SELF']!='/index.php'){ // hier de code van je header rotatie }else{ <img src="header.jpg"> } ?> |
Die <?php ?> tag om je include moet weg, want je zit al in een stuk PHP codequote:Op dinsdag 25 november 2008 10:06 schreef hello_moto1992 het volgende:
Super bedankt!
Maar k krijg hem nog niet helemaal aan de praat.
Moet ie zo?
[ code verwijderd ]
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 | header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 $folder = '.'; //kies hier op welke extensies je wilt zoeken $extList = array(); $extList['gif'] = 'image/gif'; $extList['jpg'] = 'image/jpeg'; $extList['jpeg'] = 'image/jpeg'; $extList['png'] = 'image/png'; $img = null; if (substr($folder,-1) != '/') { $folder = $folder.'/'; } if (isset($_GET['img'])) { $imageInfo = pathinfo($_GET['img']); if ( isset( $extList[ strtolower( $imageInfo['extension'] ) ] ) && file_exists( $folder.$imageInfo['basename'] ) ) { $img = $folder.$imageInfo['basename']; } } else { $fileList = array(); $handle = opendir($folder); while ( false !== ( $file = readdir($handle) ) ) { $file_info = pathinfo($file); if ( isset( $extList[ strtolower( $file_info['extension'] ) ] ) ) { $fileList[] = $file; } } closedir($handle); if (count($fileList) > 0) { $imageNumber = time() % count($fileList); $img = $folder.$fileList[$imageNumber]; } } if ($img!=null) { $imageInfo = pathinfo($img); $contentType = 'Content-type: '.$extList[ $imageInfo['extension'] ]; header ($contentType); readfile($img); } else { //hieronder wordt de GD module gebruikt om een plaatje te maken met een error als deze script geen plaatjes kan vinden. De GD module is tegewoordig meegeleverd met de nieuwste php versies, je moet alleen deze even activeren in je php.ini bestand. (gd module heet meestal php_gd2.dll) if ( function_exists('imagecreate') ) { header ("Content-type: image/png"); $im = @imagecreate (400, 200) or die ("Cannot initialize new GD image stream"); $background_color = imagecolorallocate ($im, 255, 255, 255); $text_color = imagecolorallocate ($im, 0,0,0); $text_colorr = imagecolorallocate ($im, 255,0,0); imagestring ($im, 5, 5, 5, "ERROR, deze error kan voorkomen als deze ", $text_colorr); imagestring ($im, 5, 5, 25, "script geen plaatjes kan vinden", $text_colorr); imagestring ($im, 3, 5, 100, "Door oorzaak kan zijn:", $text_color); imagestring ($im, 2, 5, 125, "1. de script kan geen plaatjes vinden met jou gewenste extensies", $text_color); imagestring ($im, 2, 5, 150, "2. Er bevinden geen plaatjes in de directory", $text_color); imagepng ($im); imagedestroy($im); } } ?> |
HTML in je php tags?quote:Op dinsdag 25 november 2008 10:48 schreef Swetsenegger het volgende:
[..]
nee
-edit- toch maar wat uitleg.
Ik weet niet hoe je header.php eruit ziet, maar ik gok dat deze code op de plek moet komen van je rotatiecode die IN je header staat.
[ code verwijderd ]
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |