bin/passenger-spawn-server in passenger-1.0.5 vs bin/passenger-spawn-server in passenger-2.0.1

- old
+ new

@@ -1,9 +1,11 @@ #!/usr/bin/env ruby # Phusion Passenger - http://www.modrails.com/ # Copyright (C) 2008 Phusion # +# Phusion Passenger is a trademark of Hongli Lai & Ninh Bui. +# # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. # # This program is distributed in the hope that it will be useful, @@ -13,26 +15,39 @@ # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -require 'pathname' -$LOAD_PATH.unshift(File.expand_path("#{File.dirname(__FILE__)}/../lib")) -require 'passenger/spawn_manager' -require 'passenger/utils' +root = File.expand_path("#{File.dirname(__FILE__)}/..") +$LOAD_PATH.unshift("#{root}/lib", "#{root}/ext") +DEFAULT_INPUT_FD = 3 begin STDOUT.sync = true STDERR.sync = true $0 = "Passenger spawn server" if GC.respond_to?(:copy_on_write_friendly=) GC.copy_on_write_friendly = true end + + input = IO.new(DEFAULT_INPUT_FD) + # Optimization for decreasing startup time. Since Apache starts the spawn + # server twice during startup, we don't want to load the Passenger classes + # if we don't need them. + # So we check whether Apache immediately closes the connection. If so, + # we exit without loading the rest of Passenger. If Apache doesn't close + # the connection within 4 seconds then we continue with loading Passenger, + # so that loading doesn't happen during the first spawn. + if select([input], nil, nil, 4) && input.eof? + exit + end + + require 'passenger/spawn_manager' spawn_manager = Passenger::SpawnManager.new - input = IO.new(Passenger::SpawnManager::DEFAULT_INPUT_FD) spawn_manager.start_synchronously(input) spawn_manager.cleanup rescue => e + require 'passenger/utils' include Passenger::Utils print_exception("spawn manager", e) exit 10 end