/** * @task hook */ public static function didStartup() { self::$startTime = microtime(true); self::$accessLog = null; static $registered; if (!$registered) { // NOTE: This protects us against multiple calls to didStartup() in the // same request, but also against repeated requests to the same // interpreter state, which we may implement in the future. register_shutdown_function(array(__CLASS__, 'didShutdown')); $registered = true; } self::setupPHP(); self::verifyPHP(); // If we've made it this far, the environment isn't completely broken so // we can switch over to relying on our own exception recovery mechanisms. ini_set('display_errors', 0); if (isset($_SERVER['REMOTE_ADDR'])) { self::rateLimitRequest($_SERVER['REMOTE_ADDR']); } self::normalizeInput(); self::verifyRewriteRules(); self::detectPostMaxSizeTriggered(); self::beginOutputCapture(); self::$rawInput = (string) file_get_contents('php://input'); }
/** * @param float Request start time, from `microtime(true)`. * @task hook */ public static function didStartup($start_time) { self::$startTime = $start_time; self::$phases = array(); self::$accessLog = null; static $registered; if (!$registered) { // NOTE: This protects us against multiple calls to didStartup() in the // same request, but also against repeated requests to the same // interpreter state, which we may implement in the future. register_shutdown_function(array(__CLASS__, 'didShutdown')); $registered = true; } self::setupPHP(); self::verifyPHP(); // If we've made it this far, the environment isn't completely broken so // we can switch over to relying on our own exception recovery mechanisms. ini_set('display_errors', 0); if (isset($_SERVER['REMOTE_ADDR'])) { self::rateLimitRequest($_SERVER['REMOTE_ADDR']); } self::normalizeInput(); self::verifyRewriteRules(); self::detectPostMaxSizeTriggered(); self::beginOutputCapture(); if (isset($_SERVER['HTTP_CONTENT_ENCODING'])) { $encoding = trim($_SERVER['HTTP_CONTENT_ENCODING']); } else { $encoding = null; } $input_stream = fopen('php://input', 'rb'); if (!$input_stream) { self::didFatal('Unable to open "php://input" to read HTTP request body.'); } if ($encoding === 'gzip') { $ok = stream_filter_append($input_stream, 'zlib.inflate', STREAM_FILTER_READ, array('window' => 30)); if (!$ok) { self::didFatal('Failed to append gzip inflate filter to HTTP request body input ' . 'stream.'); } } $input_data = ''; while (!feof($input_stream)) { $read_bytes = fread($input_stream, 16 * 1024); if ($read_bytes === false) { self::didFatal('Failed to read input bytes from HTTP request body.'); } $input_data .= $read_bytes; } fclose($input_stream); self::$rawInput = $input_data; }