Utente: Anonymous

Bootstrap

La funzione drupal_bootstrap() è contenuta nel file ./includes/bootstrap.inc che viene subito caricato. All'interno del file bootstrap.inc sono definite le otto costanti che indicano quale sotto fase attivare nel bootstrap.

  • DRUPAL_BOOTSTRAP_CONFIGURATION=0
  • DRUPAL_BOOTSTRAP_EARLY_PAGE_CACHE=1
  • DRUPAL_BOOTSTRAP_DATABASE=2
  • DRUPAL_BOOTSTRAP_ACCESS=3
  • DRUPAL_BOOTSTRAP_SESSION=4
  • DRUPAL_BOOTSTRAP_LATE_PAGE_CACHE=5
  • DRUPAL_BOOTSTRAP_PATH=6
  • DRUPAL_BOOTSTRAP_FULL=7

Alla funzione drupal_bootstrap() viene passato un parametro che indica a quale fase fermarsi del bootstrap. All'avvio, e in generale su richiesta di un nodo generico, il parametro è posto uguale a DRUPAL_BOOTSTRAP_FULL in modo tale da eseguire tutte le otto le fasi. Le funzioni attivate dalle singole fase sono definite nella funzione _drupal_bootstrap($phase).

1) DRUPAL_BOOTSTRAP_CONFIGURATION
Funzioni utilizzate:
conf_init() inizializza le variabili
conf_path() torna il percorso del file settings.php

  1. Vengono eliminate le definizioni , se esistenti (ini_get('register_globals')=1), delle variabili globali del php: _ENV, _GET, _POST, _COOKIE, _FILES, _SERVER, _REQUEST, access_check, GLOBALS .
  2. Sono inizializzate le variabili globali locali di Drupal.
    Le variabili $db_url, $db_prefix ,$db_type sono lette dal file sites/default/settings.php
    Le variabili: $base_url, $base_path, $base_root, $cookie_domain, $conf, $installed_profile sono calcolate a run-time

2) DRUPAL_BOOTSTRAP_EARLY_PAGE_CACHE

Include il file ./includes/cache.inc
Funzioni utilizzate:
_drupal_cache_init()

Inizializzazione della cache.
All'avvio non viene eseguita nessuna operazione.

3) DRUPAL_BOOTSTRAP_DATABASE

Include il file ./includes/database.inc
Funzioni utilizzate:
- db_set_active() Apre la connessione al database definito in settings.php

Apre la connessione al database.
Le funzioni per accedere al database sono definite nel file ./includes/database.$db_type.inc. (tipicamente $db_type=mysql)

Se il file non esiste, Drupal si ferma indicando che non è possibile utilizzare il tipo di database definito in $db_type. Se la connessione va a buon fine viceversa vengono impostati i valori delle seguenti variabili globali:

  • $db_url contiene la stringa di connessione definita in settings.php
  • $db_type contiene il tipo di database da utilizzare per la connessione corrente (dedotta da $db_url)
  • $active_db = Resource php al database attivo.

Se username='username' e password='password' in $db_url di settings.php, Drupal avvia l'installazione del sistema caricando il file instal.php. Il valore di ritorno della funzione db_set_active() è il nome del database precedentemente attivato, FALSE se non ce ne era nessuno.

4) DRUPAL_BOOTSTRAP_ACCESS

Funzioni utilizzate:
_drupal_is_denied()

La funzione drupal_is_denied(), verifica che ci siano i permessi per l'accesso all'host contenente Drupal.

5) DRUPAL_BOOTSTRAP_SESSION
Include il file ./includes/session.inc
Funzioni utilizzate:
session_set_save_handler() (nativa php)

Imposta le funzioni di archiviazione sessioni a livello utente, ed avvia mediante session_start() la gestione della sessione.

6) DRUPAL_BOOTSTRAP_LATE_PAGE_CACHE

Include i file ./includes/cache.inc, ./includes/module.inc
Funzioni utilizzate:
_drupal_cache_init()

Se la cache è abilitata e per la URL fornita esiste un record nella tabella cache, Drupal legge il contenuto della cache, visualizza la pagina e si ferma.
Se la cache non è abilitata o è vuota , Drupal torna dalla funzione _drupal_cache_init() e continua con il bootstrap eseguendo le funzioni e le fasi successive. In particolare in questa fase esegue le seguenti funzioni:
timer_start()
drupal_page_header()
Inizializza l'array globale $conf utilizzata dalla funzione variable_get().
Attiva , mediante drupal_page_header(), le impostazioni del protocollo HTTP per la risposta.

header("Expires: Sun,19 Nov 1978 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", FALSE);

7) DRUPAL_BOOTSTRAP_PATH
Include il file ./includes/path.inc
Funzioni utilizzate:
drupal_init_path()

Inizializza la variabile $_GET['q'] al valore 'node'.

8) DRUPAL_BOOTSTRAP_FULL
Include il file ./includes/common.inc
Funzioni utilizzate:
_drupal_bootstrap_full()

E' l'ultima fase del bootstrap del sistema.

La funzione drupal_bootstrap_full() consente di caricare gli ultimi file include:
./includes/theme.inc
./includes/pager.inc
./includes/menu.inc
./includes/tablesort.inc
./includes/file.inc
./includes/unicode.inc
./includes/image.inc
./includes/form.inc

che conterranno le funzioni da utilizzare nelle tre successive fasi (vedi Avvio di Drupal), attivare delle funzioni di inizializzazione del sistema e caricare i moduli abilitati.
L'ultima funzione module_invoke_all('init') invoca tutte le funzioni di inizializzazione del tipo hook_init(), se esistenti, dei singoli moduli.