system_cron
function system_cron
system_cron()
Implements hook_cron().
Remove older rows from flood and batch table. Remove old temporary files.
File
- modules/system/system.module, line 3032
- Configuration system that lets administrators modify the workings of the site.
Code
function system_cron() { // Cleanup the flood. db_delete('flood') ->condition('expiration', REQUEST_TIME, '<') ->execute(); // Remove temporary files that are older than DRUPAL_MAXIMUM_TEMP_FILE_AGE. // Use separate placeholders for the status to avoid a bug in some versions // of PHP. See http://drupal.org/node/352956. $result = db_query('SELECT fid FROM {file_managed} WHERE status <> :permanent AND timestamp < :timestamp', array( ':permanent' => FILE_STATUS_PERMANENT, ':timestamp' => REQUEST_TIME - DRUPAL_MAXIMUM_TEMP_FILE_AGE )); foreach ($result as $row) { if ($file = file_load($row->fid)) { $references = file_usage_list($file); if (empty($references)) { if (!file_delete($file)) { watchdog('file system', 'Could not delete temporary file "%path" during garbage collection', array('%path' => $file->uri), WATCHDOG_ERROR); } } else { watchdog('file system', 'Did not delete temporary file "%path" during garbage collection, because it is in use by the following modules: %modules.', array('%path' => $file->uri, '%modules' => implode(', ', array_keys($references))), WATCHDOG_INFO); } } } // Delete expired cache entries. // Avoid invoking hook_flush_cashes() on every cron run because some modules // use this hook to perform expensive rebuilding operations (which are only // designed to happen on full cache clears), rather than just returning a // list of cache tables to be cleared. $cache_object = cache_get('system_cache_tables'); if (empty($cache_object)) { $core = array('cache', 'cache_path', 'cache_filter', 'cache_page', 'cache_form', 'cache_menu'); $cache_tables = array_merge(module_invoke_all('flush_caches'), $core); cache_set('system_cache_tables', $cache_tables); } else { $cache_tables = $cache_object->data; } foreach ($cache_tables as $table) { cache_clear_all(NULL, $table); } // Cleanup the batch table and the queue for failed batches. db_delete('batch') ->condition('timestamp', REQUEST_TIME - 864000, '<') ->execute(); db_delete('queue') ->condition('created', REQUEST_TIME - 864000, '<') ->condition('name', 'drupal_batch:%', 'LIKE') ->execute(); // Reset expired items in the default queue implementation table. If that's // not used, this will simply be a no-op. db_update('queue') ->fields(array( 'expire' => 0, )) ->condition('expire', 0, '<>') ->condition('expire', REQUEST_TIME, '<') ->execute(); }
© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/modules!system!system.module/function/system_cron/7.x