If you really want to evolve from a web developer skillful enough to put together a functional “puzzle” out of Drupal's core modules, to one custom-making his new modules, then you need to take a close look at the whole process behind this apparently simple sequence: “you hit an URL, then (as if by magic) the required page instantly gets loaded”.
 
So, ready to take a sneak peek “behind the curtains”? If yes, then allow us to be your guide!
 
 

1. Drupal Separates The Internal Path from the Domain Name

 
Once the server gets the message, once the URL is sent, Drupal focuses on the internal path and on it only. Therefore, it just “cuts it off” from the URL.
 

2. Then Drupal Calls Index.php

 
Take the index.php as some sort of a “control tower” (you can find it in the root directory of the Drupal install), the one that processes all the incoming requests. 
 
Now, let's have a closer look! Index.php is made of 4 lines, each one of them performing a certain function:
 
  • define('DRUPAL_ROOT', getcwd(): the very first line that runs once Drupal gets a page request
  • require_once DRUPAL_ROOT . '/includes/bootstrap.inc': its role is that of loading  bootstrap.inc in the includes/subdirectory.bootstrap.inc
  • drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL): it loads pretty much everything: the modules and functions, the needed data into the memory...
  • menu_execute_active_handler(): as the name says it, it's the one actually handling the page request, delivering the final web page to the end user 
 

3. Now Drupal Goes Through the Bootstrap Process

 
This is where the “major loading” happens: it is now that Drupal loads the libraries, initializes the database, sets the right sessions... 
 
The bootstrap process a self-start one, requiring no input, no intervention from you, the website's “creator”, and yet... you can't possibly not know what happens during this whole process running on its own!
 
How about going rapidly through all the 8 phases of this highly complex bootstrapping process?
 
1. DRUPAL_BOOTSTRAP_CONFIGURATION: Drupal calls upon it wherever it encounters php errors or exceptions. If so, then an error handling code is prepared, settings.php gets loaded, configuration gets initialized...
 
2. DRUPAL_BOOTSTRAP_PAGE_CACHE: it checks whether the IP is blocked or not, whether the cache is enabled or not in order to serve the page from the cache
 
3. DRUPAL_BOOTSTRAP_DATABASE: it loads the database and checks whether any $databases array has been defined. If no, then it redirects to install.php
 
4. DRUPAL_BOOTSTRAP_VARIABLES: it loads the variables from the database variables table, then it overwrites the ones defined in settings.php, while loading all the other modules needed during this process   
 
5. DRUPAL_BOOTSTRAP_SESSION: it initializes the session handlers. There are several custom session handlers in Drupal:
 
  • _drupal_session_open() and_drupal_session_close(): to open and close a connection
  • _drupal_session_read(): gets the session from the sessions table
  • _drupal_session_write(): checks whether the session has been updated and writes a new one to the databse
  • _drupal_session_destroy(): it deletes cookies and cleans up a specific session
  • _drupal_session_garbage_collection(): it deletes the outdated sessions
 
6. DRUPAL_BOOTSTRAP_PAGE_HEADER: it practically sets up the HTTP header
 
7.  DRUPAL_BOOTSTRAP_LANGUAGE: called upon only for multilingual websites, it initializes the right language for the future web page
 
8. DRUPAL_BOOTSTRAP_FULL: the very final step, where all the modules are enabled and hook_init() is invoked
 
 

4. Drupal's Menu System Steps In

 
From all of Drupal's modules, it's the menu system that “guides” the internal path to a callback function.
 

PATH... MODULE... MENU SYSTEM... CALLBACK FUNCTION... LOAD CONTENT

 

5. Finally, It's the Theme System That Styles the Requested Page

 
Being more than just a theme (since it's a mix of theme functions and templates), the theme system is the one “dictating” the content/ the web page's final look. 
 

CONTENT... THEME SYSTEM (CSS, HTML, JS etc.)... BROWSER

 
Of course that each process of this whole page request handling mechanism in Drupal requires a lot more in-depth knowledge, but this is pretty much the overall mental scheme that each developer should know for:
 
1. boosting his self-confidence with powerful knowledge
 
2. being able to come up with his own future custom modules    
 

Recommended Stories

Can LastPass Just Block Your Account and Withhold Your Passwords? Yes! Here Is What They Have Put Us Through
What if you lose your LastPass master password? Then you're doomed... You'll lose your password vault for good.… (Read more)
Adriana Cacoveanu / Oct 12 '2018
Can I Trust LastPass with My Passwords? No! Our Unexpectedly Bad Experience with Them
“Trust LastPass at your own risk!” would be our answer. One based both on:   this password manager's own “beefy”… (Read more)
Adriana Cacoveanu / Oct 9 '2018
Automatic Updates in Drupal Core? Top Benefits and Main Concerns With Drupal Updating Itself
Just imagine... automatic updates in Drupal core. Such a feature would put an end to all those never-ending… (Read more)
RADU SIMILEANU / Sep 28 '2018