Je kunt met mysqli gebruik maken van nieuwere features in MySQL zoals transacties en prepared statements.quote:Op zondag 28 oktober 2012 14:24 schreef Devolution het volgende:
Wat is eigenlijk een grote voordeel van mysqli ten opzichte van mysql? Of waarom zou ik mysql niet meer gebruiken maar daarvoor in de plaats mysqli (behalve omdat mysql uitgefaseerd wordt)?
Er vinden geen transacties plaats. Het was mij alleen om de eventuele overhead te doen. Maar aangezien die er niet of nauwelijks is, is er geen reden meer om een verbinding open te houden. In ASP.NET was het overigens vrij makkelijk op te lossen. Daar doe je, indien er fouten optreden gewoon een rollback op de transactie en geef je alles weer vrij. Ik neem aan dat dit in PHP ook wel mogelijk is.quote:Op zondag 28 oktober 2012 10:45 schreef GlowMouse het volgende:
De connection overhead is er nauwelijks, het is een non-optimalisatie. En wat gebeurt er als je in een script een lock zet in een transactie en dat script stopt er midden in een transactie mee door een fout, en een ander script gaat met die connectie verder?
Met PDO of mysqli kan dat, maar met de oude mysql_ functies kun je überhaupt geen transacties doen, dus ook geen rollback.quote:Op zondag 28 oktober 2012 15:04 schreef Devv het volgende:
[..]
Daar doe je, indien er fouten optreden gewoon een rollback op de transactie en geef je alles weer vrij. Ik neem aan dat dit in PHP ook wel mogelijk is.
Maar qua veiligheid is er geen verbetering?quote:Op zondag 28 oktober 2012 14:36 schreef Tijn het volgende:
[..]
Je kunt met mysqli gebruik maken van nieuwere features in MySQL zoals transacties en prepared statements.
Is dat bij mysqli niet meer nodig dan?quote:
Nou, je zou kunnen zeggen dat de mogelijkheid om mislukte queries te rollbacken in een transactie of het automatisch escapen van variabelen in prepared statements wel een impact hebben op de security. Het is natuurlijk nog steeds mogelijk om onveilige code te schrijven, net zoals het mogelijk is om met de oude mysql-functies veilige code te schrijven, maar je hoeft je met mysqli en PDO misschien in wat minder bochten te wringen om het goed te doen.quote:Op maandag 29 oktober 2012 09:57 schreef Devolution het volgende:
[..]
Maar qua veiligheid is er geen verbetering?
Niet als je prepared statements gebruikt en je variabelen via bindParam() in je query laat plaatsen, dan gebeurt dat automatisch.quote:Is dat bij mysqli niet meer nodig dan?
dat kan wel, mysql_query("START TRANSACTION")quote:Op zondag 28 oktober 2012 15:36 schreef Tijn het volgende:
[..]
Met PDO of mysqli kan dat, maar met de oude mysql_ functies kun je überhaupt geen transacties doen, dus ook geen rollback.
Handmatig kan je inderdaad van alles. Maar er zijn geen ingebouwde functies voor. Volgens de documentatie wordt het ook niet aangeraden om van nieuwe features op deze manier gebruik te maken.quote:Op maandag 29 oktober 2012 11:26 schreef GlowMouse het volgende:
[..]
dat kan wel, mysql_query("START TRANSACTION")
Ah, inderdaad, dat werd door Innodb gebracht. Maar dan nog wordt volgens de documentatie het sterk afgeraden om MySQL 4.1.3 of later te gebruiken in combinatie met de oude mysql_ functies. Dat is een dusdanig oude versie van MySQL (uit 2004 ofzo?) dat het praktisch voor elke situatie nu niet verstandig is om ermee aan de slag te gaan voor een nieuw project.quote:Op maandag 29 oktober 2012 12:41 schreef GlowMouse het volgende:
transacties zijn geen nieuwe features
| 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 | <?php private function getFileName($digit_number){ $new_file_name = ""; for($i = 0; $i < $digit_number; $i++){ $flag = rand(0,2); switch($flag){ case 0:{ $new_file_name .= chr(rand(48,57)); break; } case 1:{ $new_file_name .= chr(rand(65,90)); break; } case 2:{ $new_file_name .= chr(rand(97,122)); break; } } } return $new_file_name; } ?> |
Ik zou persoonlijk voor PDO gaan, dan heb je gelijk een databaseonafhankelijke abstractielaag.quote:Op maandag 29 oktober 2012 17:47 schreef Devolution het volgende:
Oke, bedankt voor de info. Misschien toch maar eens overschakelen dan
Efficiënte manier om random strings te genereren.quote:Op donderdag 1 november 2012 08:57 schreef Boze_Appel het volgende:
[ code verwijderd ]
Code evalueren van anderen, is niet goed voor mijn bloeddruk.
quote:Op donderdag 1 november 2012 09:05 schreef mstx het volgende:
[..]
Efficiënte manier om random strings te genereren.
quote:Op donderdag 1 november 2012 08:57 schreef Boze_Appel het volgende:
[ code verwijderd ]
Code evalueren van anderen, is niet goed voor mijn bloeddruk.
Van die code zie je in 10 seconden wat er gebeurt.quote:Op donderdag 1 november 2012 08:57 schreef Boze_Appel het volgende:
[ code verwijderd ]
Code evalueren van anderen, is niet goed voor mijn bloeddruk.
Ik zie een verband.quote:Op donderdag 1 november 2012 14:45 schreef Chandler het volgende:
Je kunt je code natuurlijk ook gewoon voor jezelf houdenik heb anders nog nooit WTF gehoord
Het probleem is al opgelost. Ik heb de database geleegd en de auto_increment teller gereset. Toen heb ik alles opnieuw naar de database weg laten schrijven en met Chrome ingelogd op MyPhpAdmin. Met Firefox liep de boel dus vast en gaf 'ie een foutmelding dat ik aan de sizelimit zat.quote:Op zaterdag 3 november 2012 16:10 schreef StM het volgende:
Wat werkt er niet meer (krijg je een error?) en welke database gebruik je?
Dat blijkt nu het geval te zijn: Warning: mysqli::mysqli(): (08004/1040): Too many connectionsquote:Op maandag 5 november 2012 13:03 schreef Farenji het volgende:
tenzij de connecties niet goed hergebruikt worden en je op den duur tegen de max_connections limiet aanloopt.
Heb het erin gezet (en mysql opnieuw gestart), maakt geen verschil. Ik krijg na 2 minuten alweer "too many connections".quote:Op maandag 5 november 2012 13:26 schreef GlowMouse het volgende:
Probeer eens mysql.allow_persistent=Off en mysqli.allow_persistent=Off
Ja bijna allemaalquote:Op maandag 5 november 2012 13:32 schreef GlowMouse het volgende:
Kijk dan eens in apache's server-status of er clients verbonden blijven.
Ik heb het nu zo:quote:Op zondag 4 november 2012 20:43 schreef pascal08 het volgende:
Wat is de juiste manier om URL's met CodeIgniter te rewriten in htaccess, zonder dat het pad naar m'n CSS-file wordt gerewrite waardoor m'n CSS-file niet correct geladen wordt?
Ik had het al maanden zo draaien, kun je nagaan.quote:Op maandag 5 november 2012 22:10 schreef GlowMouse het volgende:
Pagina's deden er dus daadwerkelijk een halve minuut over om te laden, dat zou je sowieso snel door moeten hebben.
quote:Dit bestand bestaat niet, de toegang tot het volgende bestand is beperkt of het bestand is verwijderd wegens overtreding van het auteursrecht.
Nice dat het gefixt is!quote:Op maandag 5 november 2012 21:56 schreef mstx het volgende:
Nou ik ben er 5 uur mee bezig geweest, maar eindelijk gevonden waar die sleeping processes vandaan kwamen.![]()
Het bleek te komen door de manier waarop ik user variables opsloeg in APC. Ik heb bijvoorbeeld nieuwsberichten of forum topics die ik met apc_store() opsloeg om te cachen. Eerst deed ik dit allemaal in één grote array met alle items erin (dus $forum=array(1=>'bericht1', 2=>'bericht 2'), $nieuws=array() etc). Nu heb ik ze allemaal hun eigen variabele gegeven. Nu is mijn script ineens 100x zo snel.![]()
Nu ze allemaal apart staan hoeven ze niet meer op elkaar te wachten als 5 mensen tegenlijk 5 verschillende nieuwsberichten lezen en deze tegelijkertijd gecached worden, dan kan het script meteen verder en de mysql connectie sluiten... best stomme fout als je er zo achteraf over nadenkt.
quote:Op maandag 5 november 2012 22:13 schreef mstx het volgende:
[..]
Ik had het al maanden zo draaien, kun je nagaan.
* mstx gaat zich diep schamen
| Forum Opties | |
|---|---|
| Forumhop: | |
| Hop naar: | |