function drupal_register_shutdown_function

Registers a function for execution on shutdown.

Wrapper for register_shutdown_function() that catches thrown exceptions to avoid "Exception thrown without a stack frame in Unknown".

Parameters

$callback: The shutdown function to register.

...: Additional arguments to pass to the shutdown function.

Return value

Array of shutdown functions to be executed.

See also

register_shutdown_function()

Related topics

10 calls to drupal_register_shutdown_function()
DatabaseLockBackend::__construct in drupal/core/lib/Drupal/Core/Lock/DatabaseLockBackend.php
Constructs a new DatabaseLockBackend.
search_cron in drupal/core/modules/search/search.module
Implements hook_cron().
system_test_page_shutdown_functions in drupal/core/modules/system/tests/modules/system_test/system_test.module
A simple page callback which adds a register shutdown function.
TestBase::prepareEnvironment in drupal/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php
Prepares the current environment for running the test.
TestBase::tearDown in drupal/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php
Deletes created files, database tables, and reverts all environment changes.

... See full list

File

drupal/core/includes/bootstrap.inc, line 3032
Functions that need to be loaded on every Drupal request.

Code

function &drupal_register_shutdown_function($callback = NULL) {

  // We cannot use drupal_static() here because the static cache is reset during
  // batch processing, which breaks batch handling.
  static $callbacks = array();
  if (isset($callback)) {

    // Only register the internal shutdown function once.
    if (empty($callbacks)) {
      register_shutdown_function('_drupal_shutdown_function');
    }
    $args = func_get_args();
    array_shift($args);

    // Save callback and arguments
    $callbacks[] = array(
      'callback' => $callback,
      'arguments' => $args,
    );
  }
  return $callbacks;
}