Op 15 november, indien Dries zijn voorspelling klopt, zal Drupal 7 een feature freeze krijgen. Vanaf dat moment worden er geen nieuwe functies meer aan Drupal 7 toegevoegd. Nu zag ik vandaag een nieuwe Drupal 7 versie langs komen, http://drupal.org/node/156281, dus besloot ik maar eens een half uurtje te besteden om deze versie wat nader te onderzoeken.
Bij het installeren kwam ik meteen de grootste verandering in Drupal 7 tegen: PDO. Mijn lokale PHP 5 installatie had PDO namelijk uit staan. PDO is een PHP library die de legacy mysql en postgresql bibliotheken in PHP gaat vervangen. Het mooie van PDO is dat de applicatie die je schrijft in PHP met PDO werkt en dat PDO de commando’s dan vertaalt naar database specifieke calls. Voor de applicatie ontwikkelaar maakt het dus niet meer uit of je voor mySQL of Postgresql ontwikkeld, PDO lost de vertaalslag namelijk voor je op.
Drupal 7 maakt dan ook voortaan gebruik van PDO en daarom heb je dus PDO nodig. Voor de mensen die niet weten hoe dit aangezet moet worden. Open php.ini in je tekst editor en zoek deze regels:
;extension=php_pdo.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mssql.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_oci8.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
Ik ga gebruik maken van mysql dus ik haal de “;” weg voor php_pdo en voor php_pdo_mysql en ik herstart mijn apache server. Maar zoals je ziet is er flink wat ondersteuning voor databases (Oracle, Mssql, Postgresql, SQLite, Firebird). Met de odbc koppeling is het volgens mij zelfs mogelijk om elke database met een odbc driver te ondersteunen dus ook bijvoorbeeld MS Access (zou niet weten waarom je dat zou willen maar het kan).
Na het aanzetten van PDO zijn we los. En ik zie meteen het eerste scherm:

Oh jee, de vraag of ik de “expert” installatie wil doen. Normaal gesproken kies ik bij installaties altijd de “advanced” functie. Maar deze keer doe ik toch maar de normale installatie aangezien ik Drupal 7 z.s.m. in actie wil zien en ik niet te veel wil tweaken.
De rest van de installatie is voor het grootste gedeelte hetzelfde als bij Drupal 6.
Na het installeren krijg je de gewone Garland theme en ziet het er eigenlijk hetzelfde uit als Drupal 6. Grootste wijzigingen zijn de module pagina waarin alles nu in 1 categorie is geplaatst en er help links zijn geplaatst met meer informatie over de modules:

Ook is er de mogelijkheid om ip-adressen te blokkeren, simpletest is ingebouwd (misschien omdat dit nog een development release is) en Stories heten nu Articles. Voor de rest heb ik nog geen uiterlijke veranderingen gevonden.
Speed
Wat wel enorm opvalt is de extreme snelheid van het systeem. Dit komt mogelijk door de vernieuwde database abstraction layer en de code registry. Deze aanpassingen zorgen ervoor dat de structuur van Drupal een stuk professioneler is.
In Drupal 6 werd al een aanpassing gedaan aan de modules waardoor het menu systeem al een stuk verbeterd is. Een module kan in Drupal 6 conditioneel php files includen waardoor Drupal een stuk sneller is, niet alle files hoeven namelijk te worden ingeladen. Nadeel hiervan is dat de verantwoordelijkheid bij de module developer ligt en dat het conditionele include systeem niet simpel te implementeren is. Hierdoor zullen de wat minder gebruikte modules zich hier vaak niet aan houden.
In Drupal 7 is dit systeem verbeterd middels de code registry. De code registry is een zelf lerend systeem waardoor de module developer niet meer middels moeilijke settings de conditionele include van files kan regelen. De code registry doet dit automatisch. Ook het aantal functies dat in include files gestopt kan worden is enorm toegenomen. Op deze manier hoeft Drupal dus veel minder code in te laden waardoor alles versnelt wordt.
Rasmus Lerdorf
Zoals op de presentatie van Rasmus Lerdorf, maker van PHP, op de Drupalcon in Szeged verteld werd is het inladen van verschillende files een van de grotere bottlenecks in de performance van PHP en dus Drupal. Dus door deze aanpassing zorgt de grote kracht van Drupal, het modulaire systeem, niet voor een traag systeem als er veel modules aan staan.
Waarschijnlijk zullen de grotere wijzigingen met betrekking tot uiterlijk en functionaliteit voor end users in volgende versies te zien zijn en dan denk ik voornamelijk aan de usability verbeteringen. Ook zal de Drupal 7 versie extreem stabiel moeten zijn door het uitvoerige testen met simpletest.
Maar momenteel is de snelheidsupdate alleen al zeer indrukwekkend!




























Hoi,
kristof (realize.be) heeft vorige week samen met chx wat performance testing gedaan, en op het eerste zicht lijkt hij tot volgende conclusies te komen.
1/ abstraction layer vertraagt drupal.
Het is algemeen bekend dat iedere flexibiliteit die men inbouwd door bepaalde lagen toe te voegen, ook met een kost komt. Namelijk snelheid. Dat is hier niet anders. Maar gelukkig zijn de verschillen momenteel minimaal.
2/ Laden van files is volgens Rasmus idd de grote bottleneck, maar niet bij drupal. Een drupal in bootstrap test waarbij een minimaal aantal files geladen werd blijkt amper sneller te draaien dan een 'gewone' drupal.
De snelheid van drupal wordt momenteel vooral bepaald door het bootstrap proces an sich. Er moet gewoon heel veel gedaan worden alvorens er werkelijk een pagina op het scherm staat.
Op zoek naar alternatieven dus, maar daarover later meer.
Post new comment