diff options
author | Dries Buytaert <dries@buytaert.net> | 2008-05-06 12:18:54 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2008-05-06 12:18:54 +0000 |
commit | 2e18cb8924eb9a83a0ec9857f405ed038a1d3ded (patch) | |
tree | 5159327c54df6625e8377db268e8b074b43ae79c /modules/system | |
parent | c100468cf232d34b85534277d3fc01ee95f02256 (diff) | |
download | brdo-2e18cb8924eb9a83a0ec9857f405ed038a1d3ded.tar.gz brdo-2e18cb8924eb9a83a0ec9857f405ed038a1d3ded.tar.bz2 |
- Patch #221964 by chx, dopry, webernet, moshe, webchick, justinrandall, flobruit
et al. Can you say 'registry'? Drupal now maintains an internal registry of
all functions or classes in the system, allowing it to lazy-load code files as
needed (reducing the amount of code that must be parsed on each request). The
list of included files is cached per menu callback for subsequent loading by
the menu router. This way, a given page request will have all the code it needs
but little else, minimizing time spent parsing unneeded code.
Diffstat (limited to 'modules/system')
-rw-r--r-- | modules/system/system.info | 2 | ||||
-rw-r--r-- | modules/system/system.install | 97 | ||||
-rw-r--r-- | modules/system/system.module | 29 |
3 files changed, 92 insertions, 36 deletions
diff --git a/modules/system/system.info b/modules/system/system.info index b4daf5205..649436908 100644 --- a/modules/system/system.info +++ b/modules/system/system.info @@ -4,3 +4,5 @@ description = Handles general site configuration for administrators. package = Core - required version = VERSION core = 7.x +files[] = system.module +files[] = system.admin.inc diff --git a/modules/system/system.install b/modules/system/system.install index d09eabb48..9207e6e2d 100644 --- a/modules/system/system.install +++ b/modules/system/system.install @@ -603,6 +603,8 @@ function system_schema() { $schema['cache_page']['description'] = t('Cache table used to store compressed pages for anonymous users, if page caching is enabled.'); $schema['cache_menu'] = $schema['cache']; $schema['cache_menu']['description'] = t('Cache table for the menu system to store router information as well as generated link trees for various menu/page/user combinations.'); + $schema['cache_registry'] = $schema['cache']; + $schema['cache_registry']['description'] = t('Cache table for the code registry system to remember what code files need to be loaded on any given page.'); $schema['files'] = array( 'description' => t('Stores information for uploaded files.'), @@ -859,11 +861,6 @@ function system_schema() { 'not null' => TRUE, 'default' => 0, ), - 'file' => array( - 'description' => t('The file to include for this element, usually the page callback function lives in this file.'), - 'type' => 'text', - 'size' => 'medium', - ), ), 'indexes' => array( 'fit' => array('fit'), @@ -1056,6 +1053,52 @@ function system_schema() { 'primary key' => array('mlid'), ); + $schema['registry'] = array( + 'description' => t("Each record is a function, class, or interface name and the file it is in."), + 'fields' => array( + 'name' => array( + 'description' => t('The name of the function, class, or interface.'), + 'type' => 'varchar', + 'length' => 255, + 'not null' => TRUE, + 'default' => '', + ), + 'type' => array( + 'description' => t('Either function or class or interface.'), + 'type' => 'varchar', + 'length' => 9, + 'not null' => TRUE, + 'default' => '', + ), + 'filename' => array( + 'description' => t('Name of the file.'), + 'type' => 'varchar', + 'length' => 255, + 'not null' => TRUE, + ), + ), + 'primary key' => array('name', 'type'), + ); + + $schema['registry_file'] = array( + 'description' => t("Files parsed to build the registry."), + 'fields' => array( + 'filename' => array( + 'description' => t('Path to the file.'), + 'type' => 'varchar', + 'length' => 255, + 'not null' => TRUE, + ), + 'md5' => array( + 'description' => t("Md5 hash of the file's contents when last parsed."), + 'type' => 'varchar', + 'length' => 32, + 'not null' => TRUE, + ), + ), + 'primary key' => array('filename'), + ); + $schema['sessions'] = array( 'description' => t("Drupal's session handlers read and write into the sessions table. Each record represents a user session, either anonymous or authenticated."), 'fields' => array( @@ -2682,7 +2725,7 @@ function system_update_7000() { } /** - * Generate a cron key and save it in the variables table + * Generate a cron key and save it in the variables table. */ function system_update_7001() { $ret = array(); @@ -2861,8 +2904,48 @@ function system_update_7005() { } /** + * Registry tables and drop the file key of the menu router, since it is no + * longer needed. + */ +function system_update_7006() { + $ret = array(); + db_drop_field($ret, 'menu_router', 'file'); + $schema['registry'] = array( + 'fields' => array( + 'name' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''), + 'type' => array('type' => 'varchar', 'length' => 9, 'not null' => TRUE, 'default' => ''), + 'filename' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''), + ), + 'primary key' => array('name', 'type'), + ); + $schema['registry_file'] = array( + 'fields' => array( + 'filename' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''), + 'md5' => array('type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => ''), + ), + 'primary key' => array('filename'), + ); + $schema['cache_registry'] = array( + 'fields' => array( + 'cid' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''), + 'data' => array('type' => 'blob', 'not null' => FALSE, 'size' => 'big'), + 'expire' => array('type' => 'int', 'not null' => TRUE, 'default' => 0), + 'created' => array('type' => 'int', 'not null' => TRUE, 'default' => 0), + 'headers' => array('type' => 'text', 'not null' => FALSE), + 'serialized' => array('type' => 'int', 'size' => 'small', 'not null' => TRUE, 'default' => 0) + ), + 'indexes' => array('expire' => array('expire')), + 'primary key' => array('cid'), + ); + db_create_table($ret, 'cache_registry', $schema['cache_registry']); + db_create_table($ret, 'registry', $schema['registry']); + db_create_table($ret, 'registry_file', $schema['registry_file']); + drupal_rebuild_code_registry(); + return $ret; +} + +/** * @} End of "defgroup updates-6.x-to-7.x" * The next series of updates should start at 8000. */ - diff --git a/modules/system/system.module b/modules/system/system.module index e8e9d0e14..2cc438463 100644 --- a/modules/system/system.module +++ b/modules/system/system.module @@ -331,27 +331,23 @@ function system_menu() { 'access arguments' => array('access administration pages'), 'page callback' => 'system_main_admin_page', 'weight' => 9, - 'file' => 'system.admin.inc', ); $items['admin/compact'] = array( 'title' => 'Compact mode', 'page callback' => 'system_admin_compact_page', 'access arguments' => array('access administration pages'), 'type' => MENU_CALLBACK, - 'file' => 'system.admin.inc', ); $items['admin/by-task'] = array( 'title' => 'By task', 'page callback' => 'system_main_admin_page', 'access arguments' => array('access administration pages'), - 'file' => 'system.admin.inc', 'type' => MENU_DEFAULT_LOCAL_TASK, ); $items['admin/by-module'] = array( 'title' => 'By module', 'page callback' => 'system_admin_by_module', 'access arguments' => array('access administration pages'), - 'file' => 'system.admin.inc', 'type' => MENU_LOCAL_TASK, 'weight' => 2, ); @@ -362,7 +358,6 @@ function system_menu() { 'weight' => -10, 'page callback' => 'system_admin_menu_block_page', 'access arguments' => array('access administration pages'), - 'file' => 'system.admin.inc', ); // menu items that are basically just menu blocks @@ -373,7 +368,6 @@ function system_menu() { 'weight' => -5, 'page callback' => 'system_settings_overview', 'access arguments' => array('access administration pages'), - 'file' => 'system.admin.inc', ); $items['admin/build'] = array( 'title' => 'Site building', @@ -382,7 +376,6 @@ function system_menu() { 'weight' => -10, 'page callback' => 'system_admin_menu_block_page', 'access arguments' => array('access administration pages'), - 'file' => 'system.admin.inc', ); $items['admin/settings/admin'] = array( 'title' => 'Administration theme', @@ -392,7 +385,6 @@ function system_menu() { 'page arguments' => array('system_admin_theme_settings'), 'access arguments' => array('administer site configuration'), 'block callback' => 'system_admin_theme_settings', - 'file' => 'system.admin.inc', ); // Themes: $items['admin/build/themes'] = array( @@ -401,7 +393,6 @@ function system_menu() { 'page callback' => 'drupal_get_form', 'page arguments' => array('system_themes_form', NULL), 'access arguments' => array('administer site configuration'), - 'file' => 'system.admin.inc', ); $items['admin/build/themes/select'] = array( 'title' => 'List', @@ -439,7 +430,6 @@ function system_menu() { 'page callback' => 'drupal_get_form', 'page arguments' => array('system_modules'), 'access arguments' => array('administer site configuration'), - 'file' => 'system.admin.inc', ); $items['admin/build/modules/list'] = array( 'title' => 'List', @@ -504,7 +494,6 @@ function system_menu() { 'description' => 'Manage blocked IP addresses.', 'page callback' => 'system_ip_blocking', 'access arguments' => array('block IP addresses'), - 'file' => 'system.admin.inc', ); $items['admin/settings/ip-blocking/delete/%blocked_ip'] = array( 'title' => 'Delete IP address', @@ -512,7 +501,6 @@ function system_menu() { 'page arguments' => array('system_ip_blocking_delete', 4), 'access arguments' => array('block IP addresses'), 'type' => MENU_CALLBACK, - 'file' => 'system.admin.inc', ); // Settings: @@ -522,7 +510,6 @@ function system_menu() { 'page callback' => 'drupal_get_form', 'page arguments' => array('system_site_information_settings'), 'access arguments' => array('administer site configuration'), - 'file' => 'system.admin.inc', ); $items['admin/settings/error-reporting'] = array( 'title' => 'Error reporting', @@ -530,14 +517,12 @@ function system_menu() { 'page callback' => 'drupal_get_form', 'page arguments' => array('system_error_reporting_settings'), 'access arguments' => array('administer site configuration'), - 'file' => 'system.admin.inc', ); $items['admin/settings/logging'] = array( 'title' => 'Logging and alerts', 'description' => "Settings for logging and alerts modules. Various modules can route Drupal's system events to different destination, such as syslog, database, email, ...etc.", 'page callback' => 'system_logging_overview', 'access arguments' => array('administer site configuration'), - 'file' => 'system.admin.inc', ); $items['admin/settings/performance'] = array( 'title' => 'Performance', @@ -545,7 +530,6 @@ function system_menu() { 'page callback' => 'drupal_get_form', 'page arguments' => array('system_performance_settings'), 'access arguments' => array('administer site configuration'), - 'file' => 'system.admin.inc', ); $items['admin/settings/file-system'] = array( 'title' => 'File system', @@ -553,7 +537,6 @@ function system_menu() { 'page callback' => 'drupal_get_form', 'page arguments' => array('system_file_system_settings'), 'access arguments' => array('administer site configuration'), - 'file' => 'system.admin.inc', ); $items['admin/settings/image-toolkit'] = array( 'title' => 'Image toolkit', @@ -561,7 +544,6 @@ function system_menu() { 'page callback' => 'drupal_get_form', 'page arguments' => array('system_image_toolkit_settings'), 'access arguments' => array('administer site configuration'), - 'file' => 'system.admin.inc', ); $items['admin/content/rss-publishing'] = array( 'title' => 'RSS publishing', @@ -569,7 +551,6 @@ function system_menu() { 'page callback' => 'drupal_get_form', 'page arguments' => array('system_rss_feeds_settings'), 'access arguments' => array('administer site configuration'), - 'file' => 'system.admin.inc', ); $items['admin/settings/date-time'] = array( 'title' => 'Date and time', @@ -577,14 +558,12 @@ function system_menu() { 'page callback' => 'drupal_get_form', 'page arguments' => array('system_date_time_settings'), 'access arguments' => array('administer site configuration'), - 'file' => 'system.admin.inc', ); $items['admin/settings/date-time/lookup'] = array( 'title' => 'Date and time lookup', 'type' => MENU_CALLBACK, 'page callback' => 'system_date_time_lookup', 'access arguments' => array('administer site configuration'), - 'file' => 'system.admin.inc', ); $items['admin/settings/site-maintenance'] = array( 'title' => 'Site maintenance', @@ -592,7 +571,6 @@ function system_menu() { 'page callback' => 'drupal_get_form', 'page arguments' => array('system_site_maintenance_settings'), 'access arguments' => array('administer site configuration'), - 'file' => 'system.admin.inc', ); $items['admin/settings/clean-urls'] = array( 'title' => 'Clean URLs', @@ -600,7 +578,6 @@ function system_menu() { 'page callback' => 'drupal_get_form', 'page arguments' => array('system_clean_url_settings'), 'access arguments' => array('administer site configuration'), - 'file' => 'system.admin.inc', ); $items['admin/settings/clean-urls/check'] = array( 'title' => 'Clean URL check', @@ -627,7 +604,6 @@ function system_menu() { 'access arguments' => array('access site reports'), 'weight' => 5, 'position' => 'left', - 'file' => 'system.admin.inc', ); $items['admin/reports/status'] = array( 'title' => 'Status report', @@ -635,35 +611,30 @@ function system_menu() { 'page callback' => 'system_status', 'weight' => 10, 'access arguments' => array('administer site configuration'), - 'file' => 'system.admin.inc', ); $items['admin/reports/status/run-cron'] = array( 'title' => 'Run cron', 'page callback' => 'system_run_cron', 'access arguments' => array('administer site configuration'), 'type' => MENU_CALLBACK, - 'file' => 'system.admin.inc', ); $items['admin/reports/status/php'] = array( 'title' => 'PHP', 'page callback' => 'system_php', 'access arguments' => array('administer site configuration'), 'type' => MENU_CALLBACK, - 'file' => 'system.admin.inc', ); $items['admin/reports/status/sql'] = array( 'title' => 'SQL', 'page callback' => 'system_sql', 'access arguments' => array('administer site configuration'), 'type' => MENU_CALLBACK, - 'file' => 'system.admin.inc', ); // Default page for batch operations $items['batch'] = array( 'page callback' => 'system_batch_page', 'access callback' => TRUE, 'type' => MENU_CALLBACK, - 'file' => 'system.admin.inc', ); return $items; } |