les blocs drupal de drop.org à drupal 8
DESCRIPTION
Le système de blocs a été présent depuis les origines de Drupal sur drop.org jusqu'à aujourd'hui dans Drupal 8. Cette présentation retrace l'historique de son développement, et plus largement celui de Drupal dans son ensemble.TRANSCRIPT
![Page 1: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/1.jpg)
Le système de blocs de drop.org à Drupal 8
Par Frédéric G. MARAND (fgm)
![Page 2: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/2.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Il était une fois ...
« First we start making a slashdot.org alike site: a community weblog that offers all you need to know »
docs/mission.php, circa 2000-03
![Page 3: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/3.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal LoC vs time–
24/07/98 19/04/01 14/01/04 10/10/06 06/07/09 01/04/12 27/12/14100
1000
10000
100000
1000000
100
1000
10000
100000
1000000
PHP Code
JS Code
CSS Code
Shell, perl Code
data, conf
![Page 4: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/4.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
drop.orgDrupal 1
Drupal 2Drupal 3
Drupal 4Drupal 4.1
Drupal 4.2Drupal 4.3
Drupal 4.4Drupal 4.5
Drupal 4.6Drupal 4.7
Drupal 5Drupal 6
Drupal 7Drupal 8
10
100
1000
10000
100000
1000000
PHP FilesPHP Com
PHP Code
PHP dans Drupal
![Page 5: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/5.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
drop.orgDrupal 1
Drupal 2Drupal 3
Drupal 4Drupal 4.1
Drupal 4.2Drupal 4.3
Drupal 4.4Drupal 4.5
Drupal 4.6Drupal 4.7
Drupal 5Drupal 6
Drupal 7Drupal 8
1
10
100
1000
10000
100000
CSS FileCSS Comment
CSS Code
CSS dans Drupal
![Page 6: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/6.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
drop.orgDrupal 1
Drupal 2Drupal 3
Drupal 4Drupal 4.1
Drupal 4.2Drupal 4.3
Drupal 4.4Drupal 4.5
Drupal 4.6Drupal 4.7
Drupal 5Drupal 6
Drupal 7Drupal 8
1
10
100
1000
10000
100000
JS Files
JS Com
JS Code
JavaScript dans Drupal
![Page 7: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/7.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
drop.org qu'est-ce qu'un bloc ?–● Every single 'box' on the website can be themed: not only
the colors but the entire look-and-feel and position.● Boxes:
● Box for latest headlines.● Box for older headlines.● Box for related links.● Box with login form.● User-defined box.
● Theme support:● Not only can you change the colors, you can also change
the position of most boxes and such.docs/features.php, circa 2000-03
![Page 8: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/8.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
drop.org cycle de page–● pas de front controller, contrôleur = fichier PHP
● index.php, faq.php, article.php, ...● paramètres GET, notamment op pour les variantes● register_globals = on nécessaire● back-office dédié : admin.php
● le contrôleur● charge les fonctions communes, la configuration● $theme->header()● s'il a des variantes, switch ($op)
– ajoute son contenu en fonction de $op, – par exemple $theme->article(), d'autres font du HTML inline– article(), box() , comment(), abstract(), footer(), header(), preview()
● $theme->footer()
![Page 9: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/9.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
drop.org - positionnement● Pas d'interface utilisateur de positionnement● Les méthodes de thème décident des blocs à afficher dans leurs éléments prédéfinis header et footer.● themes/Dries/theme.class function footer() { /* ..snip.. */ global $PHP_SELF; if (strstr($PHP_SELF, "index.php")) { global $user; displayAccount($this);● les fonctions prédéfinies invoquent $theme->box($subject, $content)● functions.inc function displayAccount($theme) { global $user, $cookie; if ($user) { ### Display userblock if any: displayUserblock(); } else { $content = "<CENTER><FORM METHOD=\"post\" ACTION=\"account.php\">\n <P>Username:<BR><INPUT TYPE=\"text\" NAME=\"uname\" MAXLENGTH=\"50\" SIZE=\"12\"></P>\n<P>Password:<BR> <INPUT TYPE=\"password\" NAME=\"pass\" MAXLENGTH=\"25\" SIZE=\"12\"></P>\n<INPUT TYPE=\"submit\" NAME=\"op\" VALUE=\"Login\">\n</FORM>\n<P><A HREF=\"account.php\">Register</A> as new user.<BR><A HREF=\"account.php\">Forgot</A> your password?</P></CENTER>"; $theme->box("Login", $content); } }
![Page 10: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/10.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
drop.org : thème de box● themes/Natrak/theme.class ###### # Syntax.......: box($title, $body); # Description..: a function to draw a box/block. function box($subject, $content) { include "config.inc"; print "<TABLE BORDER=\"0\" CELLPADDING=\"3\" CELLSPACING=\"3\" WIDTH=\"100%\">"; print " <TR><TD ALIGN=\"center\" BGCOLOR=\"$this->bgcolor1\" WIDTH=\"100%\"><FONT COLOR=\"$this->fgcolor1\"><B>$subject</B></FONT></TD></TR>"; print " <TR><TD BGCOLOR=\"$this->bgcolor2\">$content</TD></TR>"; print "</TABLE><BR>"; }● themes/Natrak/theme.php function themebox($subject, $content) { global $bgcolor1, $bgcolor2, $bgcolor3; include "config.inc"; print "<TABLE BORDER=\"0\" CELLPADDING=\"3\" CELLSPACING=\"3\" WIDTH=\"100%\">"; print " <TR><TD ALIGN=\"center\" BGCOLOR=\"$bgcolor1\"><FONT COLOR=\"$bgcolor2\"><B>$subject</B></FONT></TD></TR>"; print " <TR><TD BGCOLOR=\"$bgcolor2\">$content</TD></TR>"; print "</TABLE><BR>"; }● webboard.php appelle la fonction, les autres la méthode
Les thèmes sont des classes PHP
Mais pas seulement...
![Page 11: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/11.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
drop.org - Page d'article
![Page 12: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/12.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
drop.org ab -n10000 -c10 (home)–Server Software: Apache/2.2.22Server Hostname: drop1Server Port: 80
Document Path: /Document Length: 9088 bytes
Concurrency Level: 10Time taken for tests: 9.821 secondsComplete requests: 10000Failed requests: 0Write errors: 0Total transferred: 93350000 bytesHTML transferred: 90880000 bytesRequests per second: 1018.24 [#/sec] (mean)Time per request: 9.821 [ms] (mean)Time per request: 0.982 [ms] (mean, across all concurrent requests)Transfer rate: 9282.49 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.1 0 2Processing: 2 10 4.0 9 62Waiting: 1 9 3.8 9 61Total: 2 10 4.0 9 62
Percentage of the requests served within a certain time (ms) 50% 9 66% 11 75% 12 80% 12 90% 15 95% 17 98% 20 99% 23 100% 62 (longest request)
![Page 13: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/13.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
drop.org thème par défaut–
![Page 14: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/14.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 1.0 15/01/2001–● Naissance des concepts de module, hook et weight
● Nommage explicite des hooks $module = array("help" => "box_help", "block" => "box_block", "admin" => "box_admin");
● Apparition d'un registre de fonctions, le repository● 7 hooks : admin block cron export help page user
● Apparition du module block● Séparation block vs custom block vs box● Apparition des régions, header et footer sont à part.● Sélection des blocs optionnels par l'utilisateur
● Passage au layout de fichiers « classique » :● includes/, modules/, scripts/, themes/● apparition d'un .htaccess et d'un robots.txt
![Page 15: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/15.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 1 block_help()–
● Blocks are the boxes visible in the side bars on the left and the right-hand side of the website.
● They are either exported by the engine or by any of the available modules. […]
● The placement of blocks is delegated to the administrator but for most blocks, i.e. those called "custom blocks", the sole force behind enabling and disabling them is the user itself.
● An administrator can lay out and arrange the available blocks to fit in two regions: "left" and "right". Regions simply contain blocks. In addition, an administrator can assign each block (within a region) a weight to sort them vertically. [...]
● As mentioned above, blocks can be arranged to fit in two regions: left and right. For theme builders, each region is identified by a corresponding constant: "left" and "right". admin.php?mod=block&op=help
![Page 16: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/16.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 1 - box_help()
● […] Simply put, boxes are small bits of text, HTML or PHP code which will get plugged into the site just like any other block. Boxes are typically used to add custom blocks to the site.
● Each box consists of a subject and an associated block of text, HTML or PHP code which can be as long as you want it to be and that will 'render' the content of the box.
● … mais Theme::box() existe toujours !admin.php?mod=box&op=help
![Page 17: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/17.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 1 cycle de page–● pas de front controller, mais module.php?mod=..● le contrôleur
● charge les fonctions communes de common.inc – la configuration : getenv("HTTP_HOST") .".conf";– le thème : $theme = load_theme();
● définit ses fonctions● s'il a des variantes, switch ($op)
– invoque ses fonction d'action en fonction de $op● l'action
– prépare ses données– demande au thème de construire sa vue :
● $theme->header();● $theme->box() multiples des données préparées (account.php)
– ou formatage moins propre... (search.php)● $theme->footer();
![Page 18: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/18.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 1 - positionnement● L'interface d'administration permet de choisir entre 3
layouts :● Left + Content● Left + Content + Right● Content + Right
● L'administrateur décide des blocs custom à afficher dans left et right.
● Theme::header() et Theme::footer() décident des blocs à afficher dans leurs éléments prédéfinis header et footer, qui ne sont pas des régions.
● Les layouts sont indépendants du thème, la table blocks ne stocke pas de variation de positionnement par thème
![Page 19: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/19.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 1 block overview–
Affichage des titres de blocs actifs et non seulement des régions
![Page 20: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/20.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 1 : hook de bloc● Un seul hook : hook_block() renvoie un hash de :
● subject : titre affiché● content : contenu brut, HTML, ou PHP à exécuter● info : titre administratif● link : URL, affiché uniquement dans l'administration
● Il sert à la fois pour l'administration et l'affichage● Exemple de box.module function box_block() { $result = db_query("SELECT * FROM boxes"); $i = 0; while ($block = db_fetch_object($result)) { $blocks[$i]["subject"] = check_output($block->subject); $blocks[$i]["content"] = ($block->type == 2) ? eval($block->content) : check_output($block->content, ($block->type == 1) ? 0 : 1); $blocks[$i]["info"] = check_output($block->info); $blocks[$i]["link"] = check_output($block->link); $i++; } return $blocks; }
![Page 21: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/21.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 1 : thème de box● themes/marvin/marvin.theme function box($subject, $content) { ?>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" BGCOLOR="<? echo $this->brcolor1; ?>" WIDTH="100%"> <TR><TD><? print "<TABLE BORDER=\"0\" CELLPADDING=\"3\" CELLSPACING=\"1\" WIDTH=\"100%\">"; print " <TR><TD ALIGN=\"center\" BGCOLOR=\"$this->bgcolor1\" NOWRAP><FONT COLOR=\"$this->fgcolor1\"><B>$subject</B></FONT></TD></TR>"; print " <TR><TD BGCOLOR=\"$this->bgcolor2\">$content</TD></TR>"; print "</TABLE>"; ?> </TD></TR> </TABLE><BR><? }● Plus de fichiers de thèmes hors classes
Les thèmes sont toujours des classes PHP, mais dans <theme>.theme
![Page 22: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/22.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 1 ab -n10000 -c10 (home)–Server Software: Apache/2.2.22Server Hostname: drop1Server Port: 80
Document Path: /Document Length: 4553 bytes
Concurrency Level: 10Time taken for tests: 6.388 secondsComplete requests: 10000Failed requests: 0Write errors: 0Total transferred: 49950000 bytesHTML transferred: 45530000 bytesRequests per second: 1565.36 [#/sec] (mean)Time per request: 6.388 [ms] (mean)Time per request: 0.639 [ms] (mean, across all concurrent requests)Transfer rate: 7635.70 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.1 0 4Processing: 2 6 2.8 6 33Waiting: 2 6 2.8 6 33Total: 2 6 2.8 6 33
Percentage of the requests served within a certain time (ms) 50% 6 66% 7 75% 8 80% 8 90% 10 95% 11 98% 14 99% 16 100% 33 (longest request)
![Page 23: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/23.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 1 thème UnConeD–
![Page 24: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/24.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 2.0 15/03/2001 (2 mois)–
● Le filtrage de box remonte du modèle au contrôleur● Celui de block reste sur le modèle
● Le subject de block devient traduisible● Pas de changements majeurs côté block/box
● Layout : apparition de misc/ ● Abandon des « short tags » PHP● Premier bleu : la « goutte » pre-Druplicon dans le thème UnConeD● Theme::abstract() devient Theme::story()● class Story extends Node { … }● Apparitions :
– locale– premier script d'update, en SQL– CHANGELOG, CREDITS
● Evolutions : comment, section, user ratings, permissions● Premier module optionnel : submission
![Page 25: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/25.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 2 ab -n10000 -c10 (home)–Server Software: Apache/2.2.22Server Hostname: drop2Server Port: 80
Document Path: /Document Length: 5919 bytes
Concurrency Level: 10Time taken for tests: 8.921 secondsComplete requests: 10000Failed requests: 0Write errors: 0Total transferred: 63570000 bytesHTML transferred: 59190000 bytesRequests per second: 1120.93 [#/sec] (mean)Time per request: 8.921 [ms] (mean)Time per request: 0.892 [ms] (mean, across all concurrent requests)Transfer rate: 6958.77 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.1 0 4Processing: 2 9 3.5 8 32Waiting: 2 9 3.5 8 32Total: 2 9 3.5 8 32
Percentage of the requests served within a certain time (ms) 50% 8 66% 10 75% 11 80% 12 90% 14 95% 15 98% 18 99% 20 100% 32 (longest request)
![Page 26: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/26.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 2 thème UnConeD–
![Page 27: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/27.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 3.0.2 26/11/2001 (8 mois)–● Les blocs fournis par les modules...
● peuvent être désactivés, optionnels ou obligatoires● … comme les boxes● apparaissent dans la prévisualisation des régions
● Pas de changements majeurs côté block/box● Apparitions :
– node, file, cache (de pages), form_*()– Front : thèmes fluides : Goofy, Jeroen, Yaroon, nu : Stone Age
● Evolutions– hooks : global $repository → function_exists()– Druplicon de face remplace la goutte– section meta et introduit une hiérarchie→– faq book et introduit une hiérarchie→– Element <font> : 74 14.→
![Page 28: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/28.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 3 configuration des blocs–
![Page 29: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/29.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 3.0.2 thème de box–● Thème par défaut : ● class Theme extends BaseTheme { /* ..snip.. */ function box($subject, $content, $region = "main") { ?> <TABLE> <TR> <TD> <DIV ALIGN="center"> <BIG><? echo $subject; ?></BIG> </DIV> <HR> </TD> </TR> <TR> <TD> <?php echo $content; ?> </TD> </TR> </TABLE> <BR><?php } // close box function}
Pour les curieux...class BaseTheme { function links(…) {…} function image($name) {} function comment_controls(…) {}}
![Page 30: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/30.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 3 ab -n10000 -c10 (home)–Server Software: Apache/2.2.22Server Hostname: drop3Server Port: 80
Document Path: /Document Length: 4338 bytes
Concurrency Level: 10Time taken for tests: 13.971 secondsComplete requests: 10000Failed requests: 15 (Connect: 0, Receive: 0, Length: 15, Exceptions: 0)Write errors: 0Total transferred: 47793825 bytesHTML transferred: 43413825 bytesRequests per second: 715.75 [#/sec] (mean)Time per request: 13.971 [ms] (mean)Time per request: 1.397 [ms] (mean, across all concurrent requests)Transfer rate: 3340.65 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.1 0 5Processing: 4 14 4.6 13 44Waiting: 4 14 4.6 13 44Total: 4 14 4.6 13 44
Percentage of the requests served within a certain time (ms) 50% 13 66% 15 75% 16 80% 17 90% 20 95% 23 98% 25 99% 28 100% 44 (longest request)
![Page 31: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/31.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 3 nouveaux thèmes–
![Page 32: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/32.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.0 08/12/2002 (12 mois)–● Plus d'admin séparée bloc/box, plus de module box● Position définie par block, colonnes region/weight
● configuré par l'administrateur● fallback automatique d'une régions sur l'autre
● Visibilité définie par block, colonne path (regex)● Contenu défini par box, y compris format ASCII / HTML / PHP● BaseTheme::box() fournit un thème de box par défaut● Et par ailleurs...
● Apparitions : – Thème default == Basic. – Formulaire de node bi-colonne, différent entre FO / BO– XML-RPC, version Useful Inc.
● Evolutions– meta/section/category taxonomy/vocabulary/term→– Formats de saisie par node, dans la table additionnelle du CT– Home personnalisable en PHP eval.– généralisation du contrôleur module.php, mais pas intégrale– DB API basée sur PEAR:DB, support de PostgreSQL, dump inclut MAJ– Retrait thèmes: Dries, Jeroen, Stone Age example→
![Page 33: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/33.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.0 admin des blocs–
![Page 34: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/34.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.0 node form FO Basic–
![Page 35: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/35.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.0 node form BO–
![Page 36: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/36.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4 ab -n10000 -c10 (home)–Server Software: Apache/2.2.22Server Hostname: drop4Server Port: 80
Document Path: /Document Length: 8714 bytes
Concurrency Level: 10Time taken for tests: 32.101 secondsComplete requests: 10000Failed requests: 0Write errors: 0Total transferred: 91560000 bytesHTML transferred: 87140000 bytesRequests per second: 311.52 [#/sec] (mean)Time per request: 32.101 [ms] (mean)Time per request: 3.210 [ms] (mean, across all concurrent requests)Transfer rate: 2785.42 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.1 0 3Processing: 9 32 11.6 31 225Waiting: 9 32 11.5 30 222Total: 9 32 11.6 31 225
Percentage of the requests served within a certain time (ms) 50% 31 66% 34 75% 37 80% 40 90% 46 95% 51 98% 59 99% 64 100% 225 (longest request)
![Page 37: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/37.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.1 25/06/2003 (6 mois)–● Les blocs ne sont construits que s'ils sont affichés● La sélection des blocs disponibles par utilisateur est triée par module/delta et plus par nom
● Le name de block (alias $block->info) est retiré, donc...● La table blocks n'a plus de PK, ni même d'index
● Et par ailleurs...● Apparitions :
– profile● Evolutions
– refactoring du markup dans les thèmes : plus de flexibilité réutilisable : ● theme_mark, ● theme_head, ● theme_item_list, ● theme_error ...
CHANGELOG indique 15/02/2003, mais les commits 25/06/2003
![Page 38: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/38.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.1 tri utilisateur des blocs–
![Page 39: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/39.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.1 construction paresseuse–● La construction des blocs à l'affichage dans theme_blocks n'a plus lieu que lorsqu'ils doivent être
affichés : obligatoires, ou par défaut et utilisateur anonyme, ou sélectionnés, mais uniquement sans chemin ou si le chemin correspond.
● function theme_blocks($region, &$theme) { global $user, $PHP_SELF; $result = db_query("SELECT * FROM blocks WHERE (status = '1' OR custom = '1') ". ($region != "all" ? "AND region = '%s' " : "") ."ORDER BY weight, module", $region == "left" ? 0 : 1); while ($result && ($block = db_fetch_object($result))) { if ( ( ($block->status && (!$user->uid || !$block->custom)) || ($block->custom && $user->block[$block->module][$block->delta])) && (!$block->path || preg_match("|$block->path|", $PHP_SELF)) ) { $block_data = module_invoke($block->module, "block", "view", $block->delta); if ($block_data["content"]) { $theme->box($block_data["subject"], $block_data["content"], $region); } } }}
![Page 40: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/40.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.1 ab -n10000 -c10 (home)–Server Software: Apache/2.2.22Server Hostname: drop4Server Port: 80
Document Path: /Document Length: 1517 bytes
Concurrency Level: 10Time taken for tests: 15.174 secondsComplete requests: 10000Failed requests: 0Write errors: 0Total transferred: 19590000 bytesHTML transferred: 15170000 bytesRequests per second: 659.03 [#/sec] (mean)Time per request: 15.174 [ms] (mean)Time per request: 1.517 [ms] (mean, across all concurrent requests)Transfer rate: 1260.79 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.1 0 5Processing: 5 15 4.9 14 70Waiting: 5 15 4.9 14 70Total: 5 15 4.9 14 70
Percentage of the requests served within a certain time (ms) 50% 14 66% 16 75% 18 80% 19 90% 22 95% 24 98% 27 99% 29 100% 70 (longest request)
![Page 41: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/41.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.2 04/10/2003 (4.5 mois)–● hook_block($op) $op = list|view● Block delta : int varchar(32)→● Block preview : « Themes with (right|left)-sidebar only... »● t('messages du code de block.module')● BaseTheme::box() reçoit des données filtrées● BaseTheme::block($subject, $content, $region = 'main')
● Simple wrapper de BaseTheme::box()● Mais séparée dans Xtemplate, et appelée par theme_blocks() au lieu de theme('box').
● Et par ailleurs...● Apparitions :
– Support Microsoft SQL Server– index.php devient le contrôleur frontal pour tous les chemins « normaux »– Xtemplate, moteur et thème. theme() remplace theme_invoke() : – seul system.module utilise $theme->foo(), les autres utilisent theme('foo')
● Evolutions– clean URLs– support WYSIWYG (!)– intégration du BO dans l'espace unifié– Thèmes : retrait de Goofy
● le bleu commence à dominer● premiers fichiers CSS
– plus de register_globals = On
![Page 42: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/42.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.2 block admin–
![Page 43: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/43.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.2 BaseTheme::box()–● Drupal 4.1 : function box($subject, $content, $region = "main") { $output = "<b>" . check_output($subject) ."</b><br />" . check_output($content) ."<p />"; print $output; }
● Drupal 4.2 function box($subject, $content, $region = "main") { $output = "<p><b>$subject</b><br />$content</p>"; print $output; } function block($subject, $content, $region = "main") { global $theme; $theme->box($subject, $content, $region); }
![Page 44: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/44.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.2 - XTemplate
![Page 45: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/45.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.2 ab -n10000 -c10 (home)–Server Software: Apache/2.2.22Server Hostname: drop4Server Port: 80
Document Path: /Document Length: 3651 bytes
Concurrency Level: 10Time taken for tests: 22.128 secondsComplete requests: 10000Failed requests: 0Write errors: 0Total transferred: 41080000 bytesHTML transferred: 36510000 bytesRequests per second: 451.92 [#/sec] (mean)Time per request: 22.128 [ms] (mean)Time per request: 2.213 [ms] (mean, across all concurrent requests)Transfer rate: 1812.97 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.1 0 6Processing: 6 22 7.6 21 154Waiting: 6 22 7.6 21 154Total: 6 22 7.6 21 154
Percentage of the requests served within a certain time (ms) 50% 21 66% 24 75% 26 80% 27 90% 31 95% 35 98% 39 99% 42 100% 154 (longest request)
![Page 46: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/46.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.3.x 01/11/2003 (0.75 mois)–● UX : admin/block → admin/system/block● Et par ailleurs...
● Versions mineures 4.3.0, 4.3.1, 4.3.2, 4.3.x HEAD non releasée jusqu'à 02/2004
● Apparitions : – Alias– Préfixes de base de données avec {}
● Evolutions– Simplification de l'objet User– Certaines actions de contrôleur font return au lieu de print.
![Page 47: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/47.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.3.x R.A.S–
Et c'est tout pour 4.3 !
![Page 48: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/48.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.3 ab -n10000 -c10 (home)–Server Software: Apache/2.2.22Server Hostname: drop4Server Port: 80
Document Path: /Document Length: 3460 bytes
Concurrency Level: 10Time taken for tests: 15.036 secondsComplete requests: 10000Failed requests: 0Write errors: 0Total transferred: 39170000 bytesHTML transferred: 34600000 bytesRequests per second: 665.06 [#/sec] (mean)Time per request: 15.036 [ms] (mean)Time per request: 1.504 [ms] (mean, across all concurrent requests)Transfer rate: 2543.97 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.1 0 3Processing: 5 15 4.5 14 44Waiting: 5 15 4.5 14 44Total: 5 15 4.5 14 44
Percentage of the requests served within a certain time (ms) 50% 14 66% 16 75% 18 80% 18 90% 21 95% 23 98% 26 99% 28 100% 44 (longest request)
![Page 49: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/49.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.4.x 01/04/2004 (2 mois)–● theme_blocks() délègue
● la liste des blocs à block_list() au lieu de requêter elle-même● le rendu à theme_block('view') au lieu d'invoquer hook_block('view')
● theme('box') plus défini sauf theme.inc et Xtemplate● L'absence de PK sur blocks est identifiée come « (bad) ! »● Et par ailleurs...
● Performance– Contrôle de charge générique avec throttle.module : désactivation de modules ou
fonctions– Chargement de modules limité sur les pages cachées– Locale limite la taille des données cachées
● Apparitions : – Pushbutton
● Evolutions– Uniformisation de theme() et des fonctions theme_* et de return– Retrait des classes de thème– Retrait du support Microsoft SQL Server– Thèmes :
● Marvin Chameleon + sous-thème→● Retrait de Goofy
![Page 50: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/50.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.4 - theme_blocks()● Drupal 4.3 :
● cf Drupal 4.1 : db_query() + test compliqué ● Drupal 4.4
● délégation à block_list pour la liste, theme_block pour le rendu
function theme_blocks($region) { $output = '';
if ($list = module_invoke('block', 'list', $region)){ foreach ($list as $key => $block) { // $key == <i>module</i>_<i>delta</i> $output .= theme('block', $block); } } return $output;}
![Page 51: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/51.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.4 - theme_block()
function theme_block($block) { $output = "<div class=\"block block-$block->module\" id=\"block-$block->module-$block->delta\">\n"; $output .= " <h2 class=\"title\">$block->subject</h2>\n"; $output .= " <div class=\"content\">$block->content</div>\n"; $output .= "</div>\n"; return $output;}
![Page 52: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/52.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.4 Thème Chameleon–
![Page 53: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/53.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.4 ab -n10000 -c10 (home)–Server Software: Apache/2.2.22Server Hostname: drop4Server Port: 80
Document Path: /Document Length: 2951 bytes
Concurrency Level: 10Time taken for tests: 20.207 secondsComplete requests: 10000Failed requests: 0Write errors: 0Total transferred: 34080000 bytesHTML transferred: 29510000 bytesRequests per second: 494.87 [#/sec] (mean)Time per request: 20.207 [ms] (mean)Time per request: 2.021 [ms] (mean, across all concurrent requests)Transfer rate: 1646.99 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.1 0 13Processing: 7 20 11.5 19 445Waiting: 7 20 11.4 19 434Total: 7 20 11.5 19 446
Percentage of the requests served within a certain time (ms) 50% 19 66% 21 75% 23 80% 24 90% 26 95% 29 98% 33 99% 37 100% 446 (longest request)
![Page 54: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/54.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.5 18/10/2004 (6 mois)–● Nouveaux blocs dans comment, taxonomy● theme_(block|blocks|box) : pas de changement● Et par ailleurs...
● nouveau système de menu avec cache, hook_menu($may_cache)● rôles multiples par utilisateur● Apparitions :
– Thèmes : bluemarine● Evolutions
– SQL : connections multiples. PostgreSQL : abandon PEAR:DB– Thème : réorganisation,
● moteurs, templates, styles, ● settings● screenshots● retrait de XTemplate (le thème) et Pure
– i18n : 100 % UI
![Page 55: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/55.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.5 - Marvin
![Page 56: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/56.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.5 ab -n10000 -c10 (home)–Server Software: Apache/2.2.22Server Hostname: drop4Server Port: 80
Document Path: /Document Length: 5462 bytes
Concurrency Level: 10Time taken for tests: 28.487 secondsComplete requests: 10000Failed requests: 0Write errors: 0Total transferred: 60070000 bytesHTML transferred: 54620000 bytesRequests per second: 351.03 [#/sec] (mean)Time per request: 28.487 [ms] (mean)Time per request: 2.849 [ms] (mean, across all concurrent requests)Transfer rate: 2059.24 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.1 0 3Processing: 8 28 7.5 27 195Waiting: 8 28 7.5 27 195Total: 8 28 7.5 28 195
Percentage of the requests served within a certain time (ms) 50% 28 66% 30 75% 32 80% 34 90% 38 95% 41 98% 46 99% 50 100% 195 (longest request
![Page 57: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/57.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.6 15/04/2005 (6 mois)–● Nouveaux paramètres de block :
● visibility– Précédemment : partout ou sur une regex– 4.6 : sur.. ou sauf.. (mais pas encore ou PHP)– les chemins décodent les alias
● types– Partout ou sur ces types de contenu
● Nouveaux $op de hook_block() : configure, save● theme_(block|blocks|box) inchangé● Et par ailleurs...
● Support PHP 5, UTF-8 généralisé● Home : 92ms sans cache de page, 19ms avec...● Disparition du contrôleur admin.php● Retrait de Pear:DB● Apparitions :
– Contact, ImageAPI● Evolutions
– Premiers refactorings d'utilisabilité
![Page 58: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/58.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.6 Configuration de bloc–
![Page 59: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/59.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.6 ab -n10000 -c10 (home)–Server Software: Apache/2.2.22Server Hostname: drop4Server Port: 80
Document Path: /Document Length: 8763 bytes
Concurrency Level: 10Time taken for tests: 18.530 secondsComplete requests: 10000Failed requests: 9999 (Connect: 0, Receive: 0, Length: 9999, Exceptions: 0)Write errors: 0Total transferred: 920361989 bytesHTML transferred: 916920711 bytesRequests per second: 539.67 [#/sec] (mean)Time per request: 18.530 [ms] (mean)Time per request: 1.853 [ms] (mean, across all concurrent requests)Transfer rate: 48505.27 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.1 0 11Processing: 5 18 8.3 17 199Waiting: 4 13 6.4 12 160Total: 5 18 8.3 17 199
Percentage of the requests served within a certain time (ms) 50% 17 66% 19 75% 21 80% 22 90% 25 95% 28 98% 33 99% 42 100% 199 (longest request)
![Page 60: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/60.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.7 01/05/2006 (11 mois)–● Positionnement des block dans les régions custom par thème● Les régions sont identifiées par nom, plus par numéro● Visibilité des blocs en PHP en plus des chemins● Formats de saisie sur les box. ● theme_(block|blocks|box) inchangé● Et par ailleurs...
● Apparitions : – PHPTemplate, et retrait de Xtemplate– mode offline– JS : AJAX, effet de collapse, resize..– Form API : émergence des tableaux de tableaux de tableaux...
● Evolutions– « loose caching » de page, cache de variables, cache dans les modules (archive)– Taxonomy : free tagging, contact global– Bluemarine et Pushbutton en PHPTemplate– Retrait de la modération, des révisions de nodes– Upgrade extensible par les modules– XML-RPC en propre– SQL : retrait des procédures stockées PostgreSQL– Retrait de queue
![Page 61: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/61.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.7 01/05/2006 (11 mois)–● Positionnement des block dans les régions custom par thème● Les régions sont identifiées par nom, plus par numéro● Visibilité des blocs en PHP en plus des chemins● Formats de saisie sur les box. ● Et par ailleurs...
● Apparitions : – PHPTemplate, et retrait de Xtemplate– mode offline– JS : AJAX, effet de collapse, resize..– Form API : émergence des tableaux de tableaux de tableaux...
● Evolutions– « loose caching » de page, cache de variables, cache dans les modules (archive)– Taxonomy : free tagging, contact global– Bluemarine et Pushbutton en PHPTemplate– Retrait de la modération, des révisions de nodes– Upgrade extensible par les modules– XML-RPC en propre– SQL : retrait des procédures stockées PostgreSQL– Retrait de queue
![Page 62: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/62.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.7 templates de blocs–
● Bluemarine 4.6<!-- BEGIN: block --> <div class="block block-{module}" id="block-{module}-{delta}"> <h2 class="title">{title}</h2> <div class="content">{content}</div> </div><!-- END: block -->
● Bluemarine 4.7<div class="<?php print "block block-$block->module" ?>" id="<?php print "block-$block->module-$block->delta"; ?>"> <h2><?php print $block->subject ?></h2> <div class="content"><?php print $block->content ?></div></div>
![Page 63: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/63.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.7 custom blocks–
![Page 64: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/64.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 4.7 ab -n10000 -c10 (home)–Server Software: Apache/2.2.22Server Hostname: drop4Server Port: 80
Document Path: /Document Length: 4863 bytes
Concurrency Level: 10Time taken for tests: 10.249 secondsComplete requests: 10000Failed requests: 0Write errors: 0Total transferred: 53820228 bytesHTML transferred: 48630000 bytesRequests per second: 975.74 [#/sec] (mean)Time per request: 10.249 [ms] (mean)Time per request: 1.025 [ms] (mean, across all concurrent requests)Transfer rate: 5128.37 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.1 0 3Processing: 3 10 3.6 10 82Waiting: 3 10 3.6 10 82Total: 3 10 3.6 10 84
Percentage of the requests served within a certain time (ms) 50% 10 66% 11 75% 12 80% 13 90% 14 95% 16 98% 18 99% 19 100% 84 (longest request)
![Page 65: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/65.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 5.0 15/01/2007 (8 mois)–● Filtrage de visibilité de block par rôle● hook_block('view') ne renvoie plus forcément le titre, il vient alors
de block_list() qui le passe à check_plain()● theme_(block|blocks|box) inchangé● La prévisualisation des blocs est intégrée à leur admin● Et par ailleurs...
● Apparitions : – Installateur en ligne, plus de chargement de dump, localisé
● Profils d'installation– Fichiers .info pour les modules, dépendances– jQuery 1.0.4– Thèmes : Garland, Minelli, color.module, thème d'admin, CSS de modules
● Evolutions– Performance : sessions, node_access, fast404, cache agressif
● Sessions dans Memcached– 52 ms hors cache, 7 ms cache normal, 5 ms cache agressif– Layout de fichiers : 1 répertoire par module core, sites/all– Plugins de cache, bins de cache multiples– Page d'état, mail altérables, modules désinstallables, bulk ops– PHPTemplate override
![Page 66: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/66.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 5 block admin + preview–
Pushbutton
![Page 67: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/67.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 5 visibilité par rôle–
Bluemarine
![Page 68: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/68.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 5.0 ab -n10000 -c10 (home)–Server Software: Apache/2.2.22Server Hostname: drop5Server Port: 80
Document Path: /Document Length: 4172 bytes
Concurrency Level: 10Time taken for tests: 5.523 secondsComplete requests: 10000Failed requests: 0Write errors: 0Total transferred: 47180102 bytesHTML transferred: 41720000 bytesRequests per second: 1810.69 [#/sec] (mean)Time per request: 5.523 [ms] (mean)Time per request: 0.552 [ms] (mean, across all concurrent requests)Transfer rate: 8342.63 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.0 0 1Processing: 2 5 3.6 5 110Waiting: 2 5 3.6 5 110Total: 2 5 3.6 5 111
Percentage of the requests served within a certain time (ms) 50% 5 66% 6 75% 6 80% 7 90% 8 95% 9 98% 10 99% 12 100% 111 (longest request)
![Page 69: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/69.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 6.0 13/02/2008 (13 mois)–● block cache● theme_block() → modules/system/block.tpl.php● theme_(box|blocks) inchangés, box.tpl.php existe● visibilité block par page externalisée dans drupal_match_path()● {blocks} PK subrogéesur bid et clef sur module/delta/theme● Et par ailleurs...
● Apparitions : – hook_watchdog, syslog
● Evolutions– 47ms no cache, 46ms cache blocks, 6.5ms cache normal, 5.9ms cache agressif– Performance :
● hook_menu() sans $may_cache● SQL : Schema API, réduction des privilèges: temporary, lock tables● split fichiers, .admin.inc, JS aggregator, support reverse proxy
– Qualité : E_ALL, UX, core = 6.x, batch API, HTML Corrector– Industrialisation : scripts/drupal.sh– Sécurité : php.module, test mots de passe, OpenID, update– Thèmes :
● .info, templates sans fonction, preprocess hooks● jQuery 1.2.3
– i18n : RTL, détection, traduction de contenus, alias, JS UI
![Page 70: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/70.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 6.0 cache de blocs–
Normal
Avec node_access
![Page 71: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/71.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 6 cache + throttle de blocs–if ($block->enabled && $block->page_match) { // Check the current throttle status and see if block should be displayed // based on server load. if (!($block->throttle && (module_invoke('throttle', 'status') > 0))) { // Try fetching the block from cache. Block caching is not compatible with // node_access modules. We also preserve the submission of forms in blocks, // by fetching from cache only if the request method is 'GET'. if (!count(module_implements('node_grants')) && $_SERVER['REQUEST_METHOD'] == 'GET' && ($cid = _block_get_cache_id($block)) && ($cache = cache_get($cid, 'cache_block'))) { $array = $cache->data; } else { $array = module_invoke($block->module, 'block', 'view', $block->delta); if (isset($cid)) { cache_set($cid, $array, 'cache_block', CACHE_TEMPORARY); } } } /* … snip … */}
Q1 : pourquoi ?Q2 : composants du cid ?
![Page 72: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/72.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
* The block cache is cleared in cache_clear_all(), and uses the same clearing * policy than page cache (node, comment, user, taxonomy added or updated...). * Blocks requiring more fine-grained clearing might consider disabling the * built-in block cache (BLOCK_NO_CACHE) and roll their own. * * user 1 is excluded from block caching. */
/* This setting should be used: * - for simple blocks (notably those that do not perform any db query), where querying the db cache would be more expensive than directly generating the content. * - for blocks that change too frequently. */define('BLOCK_NO_CACHE', -1);
Drupal 6.0 règles de cache–/* This is the default setting, used when the block does not specify anything. */define('BLOCK_CACHE_PER_ROLE', 0x0001);
/* The block can change depending on the user viewing the page. Can be resource-consuming for sites with many users */define('BLOCK_CACHE_PER_USER', 0x0002);
/* The block can change depending on the page being viewed. */define('BLOCK_CACHE_PER_PAGE', 0x0004);
/* The block is the same for every user on every page where it is visible. */define('BLOCK_CACHE_GLOBAL', 0x0008);
Quiz : quel conseil manque ?
![Page 73: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/73.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 6.0 ab -n10000 -c10 (home)–Server Software: Apache/2.2.22Server Hostname: drop6Server Port: 80
Document Path: /Document Length: 0 bytes
Concurrency Level: 10Time taken for tests: 4.690 secondsComplete requests: 10000Failed requests: 0Write errors: 0Non-2xx responses: 10000Total transferred: 3230000 bytesHTML transferred: 0 bytesRequests per second: 2132.20 [#/sec] (mean)Time per request: 4.690 [ms] (mean)Time per request: 0.469 [ms] (mean, across all concurrent requests)Transfer rate: 672.56 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.0 0 1Processing: 1 5 2.3 4 50Waiting: 1 5 2.3 4 50Total: 1 5 2.3 4 51
Percentage of the requests served within a certain time (ms) 50% 4 66% 5 75% 5 80% 6 90% 7 95% 9 98% 11 99% 12 100% 51 (longest request)
![Page 74: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/74.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 7.0 05/01/2011 (35 mois)–● hook_block($op) → hook_block_(info|configure|save|view)● hook_block_(info|list|view[_MODULE_DELTA])_alter● block['content'] render array => cache cid n'inclut plus theme/language● block_custom.body traduisible● block_custom.format int varchar(255)→● block.api.php, block.test, block.js (vertical tabs, d'n'd)● block_theme() déclare block et plus seulement block_admin_display_form● BLOCK_CACHE_* → DRUPAL_CACHE_*● {blocks} → {block}, {boxes} → {block_custom}● Permissions :
● - use PHP for block visibility● + administer blocks
● UI :● block intègre contextual, vertical tabs, local actions, ● Régions généralisées : placement de block dans content, help... ● main content block dans → content, site mission block dans → highlighted, footer → block dans footer
● Thème● theme_box() RIP fin de la notion de – box.● block template suggestions● process
● (block).throttle RIP● block_list() remplace le join et le db_rewrite_sql par _block_load_blocks() + block_block_list_alter()● Visibilité :
● Invalidation si aucune page n'est autorisée (positif / négatif)● PHP : module_exists('php')
● Nettoyage des blocs des modules désinstallés par hook_modules_uninstalled● Alternative : drupal_set_content → drupal_add_region_content● Et par ailleurs...
– Entity API, Field API, EFQ, DBTNG, render arrays– encore plus de caches et de plugins one-off– i18n : field translation
![Page 75: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/75.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 7.0 nouveautés, suite–● UI :
● block intègre contextual, vertical tabs, local actions, ● Régions généralisées : placement de block dans content, help... ● main content block dans → content, site mission block dans → highlighted, footer → block dans footer
● Prévisualisation de nouveau séparée de l'admin, sans les blocs● Thème
● theme_box() RIP fin de la notion de – box.● block template suggestions● process
● (block).throttle RIP● block_list() remplace le join et le db_rewrite_sql par _block_load_blocks() + block_block_list_alter()● Visibilité :
● Invalidation si aucune page n'est autorisée (positif / négatif)● PHP : module_exists('php')
● Nettoyage des blocs des modules désinstallés par hook_modules_uninstalled● Alternative : drupal_set_content → drupal_add_region_content● Et par ailleurs...
– Entity API, Field API, EFQ, DBTNG, render arrays– encore plus de caches et de plugins one-off– i18n : field translation– Thème : Bartik, Corolla, Seven, retour du thème nu : Stark
![Page 76: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/76.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 7 block preview–
![Page 77: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/77.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 7.0 ab -n10000 -c10 (home)–Server Software: Apache/2.2.22Server Hostname: drop7Server Port: 80
Document Path: /Document Length: 5826 bytes
Concurrency Level: 10Time taken for tests: 6.223 secondsComplete requests: 10000Failed requests: 0Write errors: 0Total transferred: 63250000 bytesHTML transferred: 58260000 bytesRequests per second: 1606.99 [#/sec] (mean)Time per request: 6.223 [ms] (mean)Time per request: 0.622 [ms] (mean, across all concurrent requests)Transfer rate: 9926.00 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.1 0 4Processing: 2 6 2.3 6 29Waiting: 2 6 2.3 6 29Total: 2 6 2.3 6 29
Percentage of the requests served within a certain time (ms) 50% 6 66% 7 75% 7 80% 8 90% 9 95% 10 98% 12 99% 13 100% 29 (longest request)
![Page 78: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/78.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 8.0 02/2014 ? (37 mois)–● Assetic● Composer● Doctrine : annotations● EasyRDF● Guzzle● PHPUnit● PSR/3● Symfony 2, ● Symfony CMF : routing (chain router)● Twig● Zend Framework 2 : escaper, feed, stdlib ● Et un peu de Drupal autour de tout ça...
![Page 79: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/79.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 8 en bref...–● hook_block_info()
annotation Doctrine sur la classe de bloc→● hook_block_view() BlockPluginInterface::build()→● hook_block_configure()
→ BlockPluginInterface::blockForm()● hook_block_save()
→ BlockPluginInterface::blockSubmit()● Nouveautés
● BlockPluginInterface::access() : visibilité du bloc● BlockPluginInterface::settings() : configuration
par défaut (à la Views option_definition)● BlockPluginInterface::validate() : validation
avant submit.
![Page 80: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/80.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 8 block « online users »–<?php
/** * @file * Contains \Drupal\user\Plugin\Block\UserOnlineBlock. */
namespace Drupal\user\Plugin\Block;
use Drupal\block\BlockBase;use Drupal\Component\Annotation\Plugin;use Drupal\Core\Annotation\Translation;
/** * Provides a "Who's online" block. * * @Plugin( * id = "user_online_block", * admin_label = @Translation("Who's online"), * module = "user" * ) */class UserOnlineBlock extends BlockBase { //** Overrides \Drupal\block\BlockBase::settings(). public function settings() { /* ... */ }
//** Overrides \Drupal\block\BlockBase::access(). public function access() { /* ... */ }
//** Overrides \Drupal\block\BlockBase::blockForm(). public function blockForm($form, &$form_state) { /* ... */ }
//** Overrides \Drupal\block\BlockBase::blockSubmit(). public function blockSubmit($form, &$form_state) { /* ... */ }
/** * {@inheritdoc} */ public function build() { }}
![Page 81: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/81.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 8.0 statistiques Block–● Drupal 6 :
● PHP– 3 fichiers– 329 lignes commentaire– 651 lignes code
● JavaScript– 1 fichier– 20 lignes commentaire– 65 lignes code
● Drupal 7 :● PHP
– 8 fichiers– 1148 lignes commentaire– 1746 lignes code
● JavaScript– 1 fichier– 31 lignes commentaire– 105 lignes code
● Drupal 8 :● PHP
– 74 fichiers – 3016 lignes commentaire– 3943 lignes code
● YAML– 16 fichiers– 2 lignes commentaire– 353 lignes données
● JavaScript– 2 fichiers– 38 lignes commentaire– 120 lignes code
Drupal 1.0 : 4092 lignes de PHP
![Page 82: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/82.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 8 - UI
● Nouvelle interface d'administration : adieu la liste kilométrique des blocs inutilisés● Interface avec les blocs actifs uniquement● page de placement des nouveaux blocs
– filtrable par module– ou visible en pour tous les modules– avec formulaire de recherche
● Simplification du formulaire de configuration● Intégration de l'admin contextuelle avec Edit inline
![Page 83: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/83.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 8 block admin–
![Page 84: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/84.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 8 block add–
![Page 85: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/85.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
Drupal 8.0 ab -n10000 -c10 (home)–Server Software: Apache/2.2.22Server Hostname: drop8Server Port: 80
Document Path: /Document Length: 7479 bytes
Concurrency Level: 10Time taken for tests: 46.318 secondsComplete requests: 10000Failed requests: 0Write errors: 0Total transferred: 80110000 bytesHTML transferred: 74790000 bytesRequests per second: 215.90 [#/sec] (mean)Time per request: 46.318 [ms] (mean)Time per request: 4.632 [ms] (mean, across all concurrent requests)Transfer rate: 1689.04 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.1 0 4Processing: 13 46 19.1 44 361Waiting: 13 46 19.0 44 361Total: 13 46 19.1 44 361
Percentage of the requests served within a certain time (ms) 50% 44 66% 50 75% 54 80% 57 90% 66 95% 74 98% 85 99% 94 100% 361 (longest request
Server Software: Apache/2.2.22Server Hostname: drop8Server Port: 80
Document Path: /Document Length: 7479 bytes
Concurrency Level: 10Time taken for tests: 32.602 secondsComplete requests: 10000Failed requests: 0Write errors: 0Total transferred: 80110000 bytesHTML transferred: 74790000 bytesRequests per second: 306.73 [#/sec] (mean)Time per request: 32.602 [ms] (mean)Time per request: 3.260 [ms] (mean, across all concurrent requests)Transfer rate: 2399.61 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.1 0 2Processing: 10 33 10.0 32 190Waiting: 10 32 10.0 31 190Total: 10 33 10.0 32 190
Percentage of the requests served within a certain time (ms) 50% 32 66% 35 75% 38 80% 40 90% 44 95% 49 98% 54 99% 58 100% 190 (longest request)
Default classloader APC classloader
![Page 86: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/86.jpg)
Les blocs de Drupal 1 à Drupal 8 / © 2013 OSInet / Licence CC-BY-SA 2.0 France
ms/<home anonyme>
drop.org D1 D2 D3 D4.0 D4.1 D4.2 D4.3 D4.4 D4.5 D4.6 D4.7 D5 D6 D7 D80
5
10
15
20
25
30
35
PHP 5.3.10, MySQL 5.5, APC 3.1.9, Cache agressif, D8 APC Classloader
![Page 87: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/87.jpg)
Suivez-nous, sur Facebook, Google+, Twitter...
http://formation.osinet.fr/formation/drupal
![Page 88: Les blocs Drupal de drop.org à Drupal 8](https://reader033.vdocuments.site/reader033/viewer/2022060109/5553e688b4c905c4048b558f/html5/thumbnails/88.jpg)
Le système de blocs de drop.org à Drupal 8
Par Frédéric G. MARAND (fgm)