Voor je bezoekersteller mag je wel trots zijn (mits redelijk aantal queries per pagina), maar je had het erover dat hij het druk had. En dat is niet zo, een moderne thuis-pc kan rustig 50-100k queries/seconde uitvoeren primary key look-ups wel.quote:Op woensdag 30 december 2009 19:28 schreef PiRANiA het volgende:
[..]
Jij zal het niet veel vinden (als je de FOK! stats hebt gezien), maar ik vind 60 queries per seconde vrij veel
tcpdumpquote:Op woensdag 30 december 2009 19:37 schreef PiRANiA het volgende:
[..]
Hoe kom ik er achter waar het fout gaat?
Het zijn allemaal lokale scripts met data uit metingen. Tcpdump werkt dan niet denk ik?quote:Op woensdag 30 december 2009 19:41 schreef GlowMouse het volgende:
[..]
Voor je bezoekersteller mag je wel trots zijn (mits redelijk aantal queries per pagina), maar je had het erover dat hij het druk had. En dat is niet zo, een moderne thuis-pc kan rustig 50-100k queries/seconde uitvoeren primary key look-ups wel.
[..]
tcpdump
Jup, chille x2200 server. Ik moet hem alleen nog ergens weghangen eigenlijk, maar colocatie is vrij duurquote:
Relatief veel data (~200MB database) op standaard configuratie...quote:Op woensdag 30 december 2009 22:54 schreef GlowMouse het volgende:
ic; heb je zo'n enorm kleine dataset of heb je MySQL nog met de default config draaien?
Ben ik wel benieuwd met welke settings je dat beter kan optimaliseren als je veel data hebt.quote:Op woensdag 30 december 2009 22:59 schreef GlowMouse het volgende:
zonde!
1 2 3 4 | $QuotaAmount = sprintf('%0.2f', $QuotaAmount); $QuotaAmount = (float)str_replace(',', '.', $QuotaAmount); ?> |
1 2 3 4 | $sReCheckQuotaAmount = sprintf('%0.2f', $sReCheckQuotaAmount); $sReCheckQuotaAmount = (float)str_replace(',', '.', $sReCheckQuotaAmount); ?> |
Omdat je daar er ook al een float van maakt. Floats zijn niet altijd precies het getal die je bedoelt.quote:Op donderdag 31 december 2009 10:28 schreef ursel het volgende:
Mja, maar de afronding gaat al verkeerd in de sprintf
aah, wacht, die sprintf maakt er ook float van.quote:Op donderdag 31 december 2009 10:32 schreef Tijn het volgende:
[..]
Omdat je daar er ook al een float van maakt. Floats zijn niet altijd precies het getal die je bedoelt.
Het handige van een float is dat je zowel extreem grote als extreem kleine getallen erin kunt opslaan. Andere types hebben harde limieten, zoals bv een int die van -2147483648 t/m 2147483647 werkt. Een float heeft dat soort grenzen niet echt, daar kun je honderd cijfers voor of achter de komma bij zetten en je krijgt nog een waarde eruit die (min of meer) lijkt op wat je bedoelde.quote:Op donderdag 31 december 2009 10:57 schreef ursel het volgende:
[..]
Gewoon even nieuwsgierig, maar wat is eigenlijk het nut van een float als je die niet precies het getal is dat je bedoeld?
Sowieso overstappen op InnoDB, beetje recente versie pakken (5.4/5.5), en dan spelen met de buffer pool, en logbuffer.quote:Op donderdag 31 december 2009 09:07 schreef ursel het volgende:
[..]
Ben ik wel benieuwd met welke settings je dat beter kan optimaliseren als je veel data hebt.
Heb je daar een mooie guide voor? Of een leidraad waar ik kan beginnen?quote:Op donderdag 31 december 2009 11:53 schreef GlowMouse het volgende:
[..]
Sowieso overstappen op InnoDB, beetje recente versie pakken (5.4/5.5), en dan spelen met de buffer pool, en logbuffer.
Oeh leuk materiaal om naar te kijken. Ik ben nu mijn grootste tabel aan het omzetten naar InnoDB:quote:
Ahja, dat werkt.quote:Op donderdag 31 december 2009 14:32 schreef GlowMouse het volgende:
Gewoon toevoegen (/etc/mysql/my.cnf) en mysql herstarten
innodb_buffer_pool_size= 1000M
Die rowcount is innodb-eigen, zie manual.
je moet een count door php laten uitvoeren dan?quote:Op donderdag 31 december 2009 15:00 schreef GlowMouse het volgende:
Bij FOK! scheelt dat wel een miljoen keer (of 10 miljoen miljard keer); de kunst is dan ook om nooit/niet vaak een count op een hele tabel te doen.
wanneer wil je nou ooit weten hoeveel rijen een tabel heeft?quote:Op donderdag 31 december 2009 15:06 schreef ursel het volgende:
[..]
je moet een count door php laten uitvoeren dan?
Best vaak hoor. Al dan niet met een GROUP BY.quote:Op donderdag 31 december 2009 15:07 schreef GlowMouse het volgende:
[..]
wanneer wil je nou ooit weten hoeveel rijen een tabel heeft?
Ik wil weten hoe de opbouw van sommige data verloopt, dan vind ik het wel intereressant om te weten hoe veel gegevens ik al hebquote:Op donderdag 31 december 2009 15:07 schreef GlowMouse het volgende:
[..]
wanneer wil je nou ooit weten hoeveel rijen een tabel heeft?
We hadden het over een SELECT count(*) FROM tbl, niet over een andere query.quote:Op donderdag 31 december 2009 15:09 schreef Tuvai.net het volgende:
[..]
Best vaak hoor. Al dan niet met een GROUP BY.
dat is een query'tje per maand ofzo, /care.quote:Op donderdag 31 december 2009 15:09 schreef PiRANiA het volgende:
[..]
Ik wil weten hoe de opbouw van sommige data verloopt, dan vind ik het wel intereressant om te weten hoe veel gegevens ik al heb
Een hoop van onze tabellen staan gelijk aan het aantal producten en of objecten.quote:Op donderdag 31 december 2009 15:07 schreef GlowMouse het volgende:
[..]
wanneer wil je nou ooit weten hoeveel rijen een tabel heeft?
En dan staat er nooit in WHERE bij? En dit zijn ook typisch dingen die je denormaliseert.quote:Op donderdag 31 december 2009 15:13 schreef ursel het volgende:
[..]
Een hoop van onze tabellen staan gelijk aan het aantal producten en of objecten.
http://www.mysqlperforman(...)-paginated-displays/quote:Daarnaast voor het aangeven van hoeveel pagina's er zijn in de lijst navigatie.
Dus redelijk vaak eigenlijk nog wel.
Ja, doh. Toen vroeg jij hoe vaak je dat wel niet doet, waarom ik (en zo te zien andere ook) reageer dat ik dat dus wel eens nodig heb.quote:Op donderdag 31 december 2009 15:11 schreef GlowMouse het volgende:
We hadden het over een SELECT count(*) FROM tbl, niet over een andere query.
ik zeg verder niet dat onze code perfect isquote:Op donderdag 31 december 2009 15:14 schreef GlowMouse het volgende:
[..]
En dan staat er nooit in WHERE bij? En dit zijn ook typisch dingen die je denormaliseert.
[..]
http://www.mysqlperforman(...)-paginated-displays/
quote:Op donderdag 31 december 2009 15:17 schreef Tuvai.net het volgende:
[..]
@PiRANiA: COUNT(*) op tabellen zonder een WHERE clausule is in InnoDB nou eenmaal erg traagMyISAM snel omdat door het ontbreken van MVCC er gewoon een countertje in een tabel zit waar je in 1x het aantal rijen in een tabel kan aflezen. Zodra je iets met WHERE erbij doet, is MyISAM weer even traag als de rest.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file in C:\domains\svenahrens.nl\wwwroot\syncml\syncml\sync.php on line 68 Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of xml_parse_into_struct(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file in C:\domains\svenahrens.nl\wwwroot\syncml\syncml\xml.php on line 160 Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of xml_parse_into_struct(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file in C:\domains\svenahrens.nl\wwwroot\syncml\syncml\xml.php on line 160 Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of datastore_search(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file in C:\domains\svenahrens.nl\wwwroot\syncml\syncml\syncml.php on line 210 Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file in C:\domains\svenahrens.nl\wwwroot\syncml\syncml\syncml.php on line 220 Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file in C:\domains\svenahrens.nl\wwwroot\syncml\syncml\syncml.php on line 221 Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file in C:\domains\svenahrens.nl\wwwroot\syncml\syncml\syncml.php on line 222 Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of datastore_search(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file in C:\domains\svenahrens.nl\wwwroot\syncml\syncml\syncml.php on line 346 |
Huh?quote:
Ga ik eens kijken of die weg te halen zijn en of het dan wel werkt..quote:Op zondag 3 januari 2010 00:06 schreef GlowMouse het volgende:
xml_parse_into_struct ( resource $parser , string $data , array &$values [, array &$index ] )
dat gaat al goed, bij de functieaanroep zijn geen ampersands nodig
In de code staan de ampersands er ook niet..quote:Op zondag 3 januari 2010 00:06 schreef GlowMouse het volgende:
xml_parse_into_struct ( resource $parser , string $data , array &$values [, array &$index ] )
dat gaat al goed, bij de functieaanroep zijn geen ampersands nodig
1 2 3 4 5 6 7 | if (!xml_parse_into_struct ($xml_parser, $xml_text, &$values, &$index)) { die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser))); } ?> |
bugger..quote:
1 2 3 4 5 6 7 8 9 10 | public function validateTel(&$inputValidateTel){ $this->stripSingle($inputValidateTel); if (preg_match("/[0-9]/",$inputValidateTel)){ return true; } return false; } ?> |
1 2 3 | (preg_match("/^[0-9]/",$inputValidateTel)) ?> |
Of eventueel ctype_digit?quote:Op maandag 4 januari 2010 08:51 schreef Tijn het volgende:
Waarom gebruik je niet gewoon is_numeric()?
1 2 3 4 5 6 7 | public function validateTel(&$inputValidateTel){ $this->stripSingle($inputValidateTel); ctype_digit($inputValidateTel); return; } ?> |
quote:
1 2 3 4 5 6 7 8 9 10 | public function stripSingle(&$inputStripSingle){ if($inputStripSingle !== ""){ $inputStripSingle = trim($inputStripSingle); $inputStripSingle = stripslashes($inputStripSingle); $inputStripSingle = htmlentities($inputStripSingle, ENT_QUOTES); } return; } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | /* * Telephone number validate function * @param string with text * @return bool * @return string with validated & stripped digits */ public function validateTel(&$inputValidateTel) { //Strip $this->stripSingle($inputValidateTel); //Strip everything but digits preg_replace('/[^0-9]/', '',$inputValidateTel); //Check if string contains only digits, if not return false if(ctype_digit($inputValidateTel)) { return true; } return false; } ?> |
quote:Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.
Alleen cijfers voor een telefoonnummer is niet handig. Het kan ook gebeuren dat iemand een internationaal telefoonnummer wil invoeren, dan heb je in ieder geval een + nodig als eerste teken. Dan maak je het met 2 velden (netnummer en abonneenummer) niet handiger.quote:Op maandag 4 januari 2010 12:40 schreef hamkaastosti het volgende:
dwing je gebruikers gewoon een correct telefoonnummer in te voeren door bijvoorbeeld een kengetal en abonneeveld te gebruiken die je zelf aan elkaar plakt of geef bij je form een voorbeeld hoe het ingevuld moet worden met evt clientside javascript validatie. je kunt met php dan simpelweg ctype_digit gebruiken voor de check.
[..]
Dit moet een validation class worden die voor meerdere omgevingen te gebruiken is. Dwz dat telefoon nummers erg kunnen verschillen omdat de programmatuur voor diverse landen gebruikt kan worden.quote:Op maandag 4 januari 2010 12:40 schreef hamkaastosti het volgende:
dwing je gebruikers gewoon een correct telefoonnummer in te voeren door bijvoorbeeld een kengetal en abonneeveld te gebruiken die je zelf aan elkaar plakt of geef bij je form een voorbeeld hoe het ingevuld moet worden met evt clientside javascript validatie. je kunt met php dan simpelweg ctype_digit gebruiken voor de check.
[..]
Waarom heb je dan een plus nodig?quote:Op maandag 4 januari 2010 13:04 schreef Light het volgende:
[..]
Alleen cijfers voor een telefoonnummer is niet handig. Het kan ook gebeuren dat iemand een internationaal telefoonnummer wil invoeren, dan heb je in ieder geval een + nodig als eerste teken. Dan maak je het met 2 velden (netnummer en abonneenummer) niet handiger.
Jij misschien, maar je gebruikers zullen het op alle mogelijke manieren proberen...quote:Op maandag 4 januari 2010 13:11 schreef Sitethief het volgende:
[..]
Dit moet een validation class worden die voor meerdere omgevingen te gebruiken is. Dwz dat telefoon nummers erg kunnen verschillen omdat de programmatuur voor diverse landen gebruikt kan worden.
[..]
Waarom heb je dan een plus nodig?
Je schrijft toch gewoon 0031384202277 en niet +31384202277
Ik denk dat meer mensen +31 invoeren dan 0031.quote:Op maandag 4 januari 2010 13:11 schreef Sitethief het volgende:
[..]
Waarom heb je dan een plus nodig?
Je schrijft toch gewoon 0031384202277 en niet +31384202277
Maar je weet niet waar iemand vandaan gaat bellen, en 00 is niet overal de code voor internationaal bellen. De + bij een telefoonnummer wordt wel algemeen herkend als "bel internationaal", waarbij de beller dan zelf kan uitzoeken wat de goede code is voor het land waar hij zich bevindt. Of dat 00, 011, 09, 9, 990 of nog iets anders is, is niet jouw probleem.quote:Op maandag 4 januari 2010 13:11 schreef Sitethief het volgende:
Waarom heb je dan een plus nodig?
Je schrijft toch gewoon 0031384202277 en niet +31384202277
Ik heb het nooit gebruikt . Maar ja, wie ben ik?quote:Op maandag 4 januari 2010 13:24 schreef Tijn het volgende:
[..]
Ik denk dat meer mensen +31 invoeren dan 0031.
Ik kan dus net zo goed die + in mijn database zetten.quote:Op maandag 4 januari 2010 13:27 schreef Light het volgende:
[..]
Maar je weet niet waar iemand vandaan gaat bellen, en 00 is niet overal de code voor internationaal bellen. De + bij een telefoonnummer wordt wel algemeen herkend als "bel internationaal", waarbij de beller dan zelf kan uitzoeken wat de goede code is voor het land waar hij zich bevindt. Of dat 00, 011, 09, 9, 990 of nog iets anders is, is niet jouw probleem.
1 |
1 |
1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | /* * Telephone number validate function * @param string with text * @return bool * @return string with validated & stripped digits */ public function validateTel(&$inputValidateTel) { //Strip $this->stripSingle($inputValidateTel); //Strip everything but digits, + and - $inputValidateTel = preg_replace('/[^0-9\+\-]/', '',$inputValidateTel); //Check if string contains only digits, + and -, if not return false return true; } ?> |
Kloptquote:Op maandag 4 januari 2010 15:15 schreef Tijn het volgende:
Ik zou de naam van de functie veranderen in "sanitize" in plaats van "validate". Als je alleen zou valideren, zou je alleen een true / false antwoord verwachten, maar in dit geval pas je de string ook echt aan.
quote:Op maandag 4 januari 2010 17:27 schreef Tegan het volgende:
Newb-vraag. Ik heb een array en een variabele, hoe kan ik checken of die variabele in de array voorkomt?
Bv.
$array = array(1, 3, 7);
$var = 1;
1 2 3 4 5 | if(in_array($var, $array)) { /* doe iets... */ } ?> |
Ik struikel er alleen vaak over dat op die website de voorbeelden altijd erg complex zijn en je dus moeilijk kunt achterhalen hoe je een function simpel kunt gebruiken. Zeker als je net begonnen bent met php. Verder worden veel dingen nogal summier uitgelegd.quote:Op maandag 4 januari 2010 17:35 schreef GlowMouse het volgende:
Die manual is trouwens wel handig, want links staan alle arrayfuncties. Om de zoveel tijd moet je die allemaal doorlopen om te kijken wat er allemaal mogelijk is.
Als je wat ervaring hebt, kun je de voorbeelden wel waarderen.quote:Op maandag 4 januari 2010 17:38 schreef Sitethief het volgende:
[..]
Ik struikel er alleen vaak over dat op die website de voorbeelden altijd erg complex zijn en je dus moeilijk kunt achterhalen hoe je een function simpel kunt gebruiken. Zeker als je net begonnen bent met php. Verder worden veel dingen nogal summier uitgelegd.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |