FastCGI <fastCgi>
Visão geral
O elemento <fastCgi>
contém uma coleção de elementos <application>
, cada um deles cria uma definição de pool de aplicativos FastCGI. O IIS (Serviços de Informações da Internet) 7 inclui o componente FastCGI. Esse componente oferece maior confiabilidade e melhor desempenho e permite executar a estrutura de aplicativos PHP e outras estruturas de aplicativos Web no IIS 7.
A definição mais simples do pool de aplicativos FastCGI requer que você inclua o atributo fullPath em um elemento <application>
para definir os binários a serem usados para a estrutura de aplicativo específica. Para a estrutura php, defina o atributo fullPath para o diretório e o nome do arquivo dos binários PHP.
Outros atributos são opcionais e permitem que você configure vários outros parâmetros. Isso inclui o número máximo de solicitações que um processo de trabalho FastCGI pode processar antes de ser reciclado, o número máximo de processos de trabalho para um pool de aplicativos e o tempo máximo que uma solicitação FastCGI pode levar.
Observação
Para processar solicitações usando FastCGI, primeiro você deve mapear o caminho e as extensões de nome de arquivo específicas para o módulo FastCGI e especificar o processo FastCGI de destino como o processador de script.
Novidades no IIS 7.5
O IIS 7.5 adicionou os seguintes atributos ao elemento <fastCgi>
/<application>
:
- O atributo monitorChangesTo permite que você especifique um arquivo para monitorar alterações que possam afetar o comportamento de um aplicativo FastCGI. Por exemplo, se você usar a estrutura php, poderá configurar o IIS para monitorar o PHP. Arquivo INI para alterações especificando o caminho completo para o arquivo no atributo monitorChangesTo.
- O atributo stderrMode especifica como o IIS 7 lidará com erros retornados de um aplicativo FastCGI por meio do fluxo STDERR.
- O atributo signalBeforeTerminateSeconds permite que você configure o IIS para aguardar um período especificado depois que o IIS sinalizar um aplicativo FastCGI que ele precisa desligar. Isso permite que um aplicativo FastCGI limpe todas as configurações antes que o IIS encerre o processo.
Compatibilidade
Versão | Observações |
---|---|
IIS 10.0 | O elemento <fastCgi> não foi modificado no IIS 10.0. |
IIS 8.5 | O elemento <fastCgi> não foi modificado no IIS 8.5. |
IIS 8.0 | O elemento <fastCgi> não foi modificado no IIS 8.0. |
IIS 7.5 | O elemento <application> da coleção <fastCgi> foi atualizado no IIS 7.5 com os atributos monitorChangesTo, stderrModee signalBeforeTerminateSeconds. |
IIS 7.0 | O elemento <fastCgi> foi introduzido no IIS 7.0. |
IIS 6,0 | N/D |
Instalação
Para usar o ambiente FastCGI, primeiro você deve instalar o serviço de função CGI. O processo de instalação registra o serviço de função CGI (Common Gateway Interface) nos elementos <globalModules>
e <modules>
. Você não precisa executar outra etapa para instalar o ambiente FastCGI.
Windows Server 2012 R2 ou Windows Server 2012
- Na barra de tarefas, clique em Gerenciador do Servidor.
- No Gerenciador do Servidor, clique no menu Gerenciar e clique em Adicionar Funções e Recursos.
- No assistente Adicionar Funções e Recursos, clique em Avançar. Selecione o tipo de instalação e clique em Avançar. Selecione o servidor de destino e clique em Avançar.
- Na página Funções de Servidor, expanda Servidor Web (IIS), Servidor Web, Desenvolvimento do Aplicativo e selecionar CGI. Clique em Avançar.
- Na página Selecionar Recursos, clique em Avançar.
- Na página Confirmar seleções de instalação, clique em Instalar.
- Na página Resultados , clique em Fechar.
Windows 8 ou Windows 8.1
- Na tela Iniciar, mova o ponteiro até o canto inferior esquerdo, clique com o botão direito do mouse no botão Iniciar e clique em Painel de Controle.
- Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar recursos do Windows.
- Expanda Serviços de Informações da Internet, Serviços da World Wide Web, Recursos de Desenvolvimento de Aplicativos e selecione CGI.
- Clique em OK.
- Clique em Fechar.
Windows Server 2008 R2 ou Windows Server 2008
- Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador do Servidor.
- No painel de hierarquia do Gerenciador do Servidor, expanda Funções e clique em Servidor Web (IIS).
- No painel Servidor Web (IIS), role até a seção Serviços de Função e clique em Adicionar Serviços de Função.
- Na página Selecionar Serviços de Função do Assistente para Adicionar Serviços de Função, selecione CGI e clique em Avançar.
- Na página Confirmar Seleções de Instalação, clique em Instalar.
- Na página Resultados , clique em Fechar.
Windows Vista ou Windows 7
- Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
- Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar Recursos do Windows.
- Expanda Serviços de Informações da Internet, selecione CGI e, em seguida, clique em OK.
Instruções
Observação para usuários do IIS 7.0: algumas etapas nesta seção podem exigir que você instale o Microsoft Administration Pack para IIS 7.0, que inclui uma interface do usuário para configurações de FastCGI. Para instalar o Microsoft Administration Pack para IIS 7.0, consulte a seguinte URL:
Como criar um mapeamento global do manipulador FastCGI para PHP
Observação
Antes que o procedimento a seguir funcione, você já deve ter instalado binários que executarão o caminho do arquivo ou a extensão de nome de arquivo que você especificar. Este exemplo usa uma implementação PHP disponível de https://www.php.net/.
Abra o Gerenciador dos Serviços de Informações da Internet (IIS):
Caso você esteja usando o Windows Server 2012 ou o Windows Server 2012 R2:
- Na barra de tarefas, clique em Gerenciador do Servidor, em Ferramentas e em Gerenciador do IIS (Serviços de Informações da Internet).
Se você estiver usando o Windows 8 ou Windows 8.1:
- Mantenha pressionada a tecla Windows, pressione a letra X e clique em Painel de Controle.
- Clique em Ferramentas Administrativas e clique duas vezes em Gerenciador do IIS (Serviços de Informações da Internet).
Caso você esteja usando o Windows Server 2008 ou o Windows Server 2008 R2:
- Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador do IIS (Serviços de Informações da Internet).
Se você estiver usando o Windows Vista ou Windows 7:
- Na barra de tarefas, selecione Iniciar e selecione Painel de Controle.
- Clique duas vezes em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
No painel Conexões, clique no nome do servidor no qual deseja definir os mapeamentos do manipulador do FastCGI.
No painel Página Inicial, clique duas vezes em Mapeamentos de Manipulador.
No painel Ações , clique em Adicionar Mapeamento de Módulo.
Insira as seguintes informações:
Insira a extensão de nome de arquivo na caixa de texto Caminho da solicitação. Por exemplo, "*.php".
Clique em FastCgiModule na lista suspensa Módulo.
Insira o caminho para o mecanismo de script na caixa Executável. Por exemplo, "C:\PHP\php-cgi.exe".
Insira um nome exclusivo para o mapeamento do manipulador na caixa Nome. Por exemplo, "PHP-FastCGI".
Clique em Restrições de Solicitação.
Selecione Invocar identificador somente se a solicitação for mapeada para.
Clique para selecionar a opção Arquivo ou Pasta.
Clique em OK.
Clique em OK.
Se for solicitado que você crie um aplicativo FastCGI na caixa de diálogo Adicionar Mapeamento de Módulo, clique em Sim.
Observação
Isso criará automaticamente um aplicativo FastCGI para o mapeamento de manipulador que você acabou de criar. Se você escolher Não, poderá criar manualmente um aplicativo FastCGI posteriormente.
Como criar um aplicativo FastCGI para PHP
Observação
Antes que o procedimento a seguir funcione, você já deve ter instalado binários que executarão o caminho do arquivo ou a extensão de nome de arquivo que você especificar. Este exemplo usa uma implementação PHP disponível de www.php.net.
Observação
A adição de um aplicativo FastCGI não adiciona automaticamente um mapeamento de manipulador. Para fazer isso, você precisa seguir as etapas na seção Como criar um mapeamento do manipulador FastCGI para o PHP deste artigo.
Abra o Gerenciador dos Serviços de Informações da Internet (IIS):
Caso você esteja usando o Windows Server 2012 ou o Windows Server 2012 R2:
- Na barra de tarefas, clique em Gerenciador do Servidor, em Ferramentas e em Gerenciador do IIS (Serviços de Informações da Internet).
Se você estiver usando o Windows 8 ou Windows 8.1:
- Mantenha pressionada a tecla Windows, pressione a letra X e clique em Painel de Controle.
- Clique em Ferramentas Administrativas e clique duas vezes em Gerenciador do IIS (Serviços de Informações da Internet).
Caso você esteja usando o Windows Server 2008 ou o Windows Server 2008 R2:
- Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador do IIS (Serviços de Informações da Internet).
Se você estiver usando o Windows Vista ou Windows 7:
- Na barra de tarefas, selecione Iniciar e selecione Painel de Controle.
- Clique duas vezes em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
No painel Conexões, clique no nome do servidor no qual deseja definir as configurações do FastCGI.
No painel Página Inicial, clique duas vezes em Configurações do FastCGI.
No painel Ações, selecione Adicionar Aplicativo
Na caixa de diálogo Adicionar Aplicativo FastCGI, insira as seguintes informações:
Insira o caminho para o mecanismo de script na caixa Caminho Completo. Por exemplo, "C:\PHP\php-cgi.exe".
Insira o número máximo de solicitações para o aplicativo FastCGI.
Observação
Para PHP, esse número deve ser menor ou igual ao número máximo de solicitações para o ambiente PHP, que é configurado usando a variável de ambiente
PHP_FCGI_MAX_REQUESTS
.
Clique nas reticências (...) ao lado de EnvironmentVariables para abrir o editor de coleção de variáveis de ambiente.
Na caixa de diálogo Editor da Coleção EnvironmentVariables, clique em Adicionar.
Insira as seguintes informações e clique em OK.
Insira "PHP_FCGI_MAX_REQUESTS" em Nome.
Insira "10000" como o Valor.
Clique em OK para fechar a caixa de diálogo Adicionar Aplicativo FastCGI.
Como adicionar uma variável de ambiente FastCGI para PHP
Observação
Antes que o procedimento a seguir funcione, você já deve ter instalado binários que executarão o caminho do arquivo ou a extensão de nome de arquivo que você especificar. Este exemplo usa uma implementação PHP disponível de https://www.php.net/.
Abra o Gerenciador dos Serviços de Informações da Internet (IIS):
Caso você esteja usando o Windows Server 2012 ou o Windows Server 2012 R2:
- Na barra de tarefas, clique em Gerenciador do Servidor, em Ferramentas e em Gerenciador do IIS (Serviços de Informações da Internet).
Se você estiver usando o Windows 8 ou Windows 8.1:
- Mantenha pressionada a tecla Windows, pressione a letra X e clique em Painel de Controle.
- Clique em Ferramentas Administrativas e clique duas vezes em Gerenciador do IIS (Serviços de Informações da Internet).
Caso você esteja usando o Windows Server 2008 ou o Windows Server 2008 R2:
- Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador do IIS (Serviços de Informações da Internet).
Se você estiver usando o Windows Vista ou Windows 7:
- Na barra de tarefas, selecione Iniciar e selecione Painel de Controle.
- Clique duas vezes em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
No painel Conexões, clique no nome do servidor no qual deseja definir as configurações do FastCGI.
No painel Página Inicial, clique duas vezes em Configurações do FastCGI.
Realce o aplicativo PHP no painel Configurações FastCGI e clique em Editar no painel Ações.
Na caixa de diálogo Editar Aplicativo FastCGI, clique nas reticências (...) ao lado de EnvironmentVariables para abrir o editor de coleção de variáveis de ambiente.
Na caixa de diálogo Editor da Coleção EnvironmentVariables, clique em Adicionar.
Insira as seguintes informações e clique em OK.
Insira "PHP_FCGI_MAX_REQUESTS" em Nome.
Insira "10000" como o Valor.
Clique em OK para fechar a caixa de diálogo Adicionar Aplicativo FastCGI.
Configuração
Você pode configurar o elemento <fastCgi>
no nível do servidor no arquivo ApplicationHost.config ou no nível do site, do aplicativo ou do diretório em um arquivo Web.config.
Atributos
Nenhum.
Elementos filho
Elemento | Descrição |
---|---|
application |
Elemento opcional. Adiciona uma definição de pool de processos FastCGI à coleção de definições do pool de processos FastCGI. |
Exemplo de configuração
O exemplo de configuração a seguir adiciona um aplicativo FastCGI para PHP, define o atributo instanceMaxRequests como “10000” e define a variável de ambiente PHP_FCGI_MAX_REQUESTS
como “10000”.
<fastCgi>
<application fullPath="C:\PHP\php-cgi.exe"
arguments=""
maxInstances="4"
idleTimeout="300"
activityTimeout="30"
requestTimeout="90"
instanceMaxRequests="10000"
protocol="NamedPipe"
flushNamedPipe="false">
<environmentVariables>
<environmentVariable
name="PHP_FCGI_MAX_REQUESTS"
value="10000" />
</environmentVariables>
</application>
</fastCgi>
Observação
Para PHP, o valor da variável de ambiente PHP_FCGI_MAX_REQUESTS
deve ser um número menor ou igual ao valor especificado pelo atributo instanceMaxRequests do elemento <application>
do FastCGI.
O exemplo de configuração a seguir adiciona um mapeamento global do manipulador FastCGI para arquivos PHP ao IIS e especifica o caminho completo para um arquivo executável FastCGI.
<configuration>
<location path="" overrideMode="Allow">
<system.webServer>
<handlers>
<add name="PHP-FastCGI"
path="*.php"
verb="GET,HEAD,POST"
modules="FastCgiModule"
scriptProcessor="C:\PHP\php-cgi.exe"
resourceType="Either"
requireAccess="Script" />
</handlers>
</system.webServer>
</location>
</configuration>
Observação
As configurações de FastCGI podem ser configuradas por site por meio do uso de aplicativos FastCGI especialmente formatados e por mapeamentos de manipulador, que são diferenciados pela correspondência dos atributos fullPath e arguments para um elemento <application>
com o atributo scriptProcessor correspondente no mapeamento <handlers>
para o processo FastCGI. Para criar esses mapeamentos, as configurações nos atributos fullPath e arguments para um elemento <application>
devem ser adicionadas ao atributo scriptProcessor no mapeamento <handlers>
para o processo FastCGI e separados pelo caractere "|" do pipe. Essa combinação serve como uma chave exclusiva para cada aplicativo FastCGI. Por exemplo, o trecho de configuração a seguir mostra dois elementos de exemplo <fastCgi>/<application> e seus mapeamentos de <manipuladores> correspondentes para dois manipuladores PHP específicos do site:
<fastCgi>
<application fullPath="C:\PHP\php-cgi.exe"
arguments="-d open_basedir=C:\Websites\Website1" />
<application fullPath="C:\PHP\php-cgi.exe"
arguments="-d open_basedir=C:\Websites\Website2" />
</fastCgi>
<system.webServer>
<handlers accessPolicy="Read, Script">
<add name="PHP via FastCGI 1"
path="*.php"
verb="*"
modules="FastCgiModule"
scriptProcessor="C:\PHP\php-cgi.exe|-d open_basedir=C:\Websites\Website1"
resourceType="Unspecified"
requireAccess="Script" />
<add name="PHP via FastCGI 2"
path="*.php"
verb="*"
modules="FastCgiModule"
scriptProcessor="C:\PHP\php-cgi.exe|-d open_basedir=C:\Websites\Website2"
resourceType="Unspecified"
requireAccess="Script" />
</handlers>
</system.webServer>
Exemplo de código
Os códigos de exemplo a seguir adicionam um aplicativo FastCGI para PHP, definem o atributo instanceMaxRequests como “10000” e definem a variável de ambiente PHP_FCGI_MAX_REQUESTS
como “10000”. Cada amostra também adiciona um mapeamento global do manipulador FastCGI para arquivos PHP ao IIS e especifica o caminho completo para um arquivo executável FastCGI.
AppCmd.exe
appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='C:\PHP\php-cgi.exe',arguments='',maxInstances='4',idleTimeout='300',activityTimeout='30',requestTimeout='90',instanceMaxRequests='10000',protocol='NamedPipe',flushNamedPipe='False']" /commit:apphost
appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='C:\PHP\php-cgi.exe'].environmentVariables.[name='PHP_FCGI_MAX_REQUESTS',value='10000']" /commit:apphost
appcmd.exe set config -section:system.webServer/handlers /+"[name='PHP-FastCGI',path='*.php',verb='GET,HEAD,POST',modules='FastCgiModule',scriptProcessor='C:\PHP\php-cgi.exe',resourceType='Either',requireAccess='Script']" /commit:apphost
Observação
Defina o parâmetro commit para apphost
quando usar AppCmd.exe para definir essas configurações. Isso confirma os conjuntos de configurações para a seção de local apropriado no arquivo ApplicationHost.config.
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection fastCgiSection = config.GetSection("system.webServer/fastCgi");
ConfigurationElementCollection fastCgiCollection = fastCgiSection.GetCollection();
ConfigurationElement applicationElement = fastCgiCollection.CreateElement("application");
applicationElement["fullPath"] = @"C:\PHP\php-cgi.exe";
applicationElement["arguments"] = @"";
applicationElement["maxInstances"] = 4;
applicationElement["idleTimeout"] = 300;
applicationElement["activityTimeout"] = 30;
applicationElement["requestTimeout"] = 90;
applicationElement["instanceMaxRequests"] = 10000;
applicationElement["protocol"] = @"NamedPipe";
applicationElement["flushNamedPipe"] = false;
ConfigurationElementCollection environmentVariablesCollection = applicationElement.GetCollection("environmentVariables");
ConfigurationElement environmentVariableElement = environmentVariablesCollection.CreateElement("environmentVariable");
environmentVariableElement["name"] = @"PHP_FCGI_MAX_REQUESTS";
environmentVariableElement["value"] = @"10000";
environmentVariablesCollection.Add(environmentVariableElement);
fastCgiCollection.Add(applicationElement);
ConfigurationSection handlersSection = config.GetSection("system.webServer/handlers");
ConfigurationElementCollection handlersCollection = handlersSection.GetCollection();
ConfigurationElement addElement = handlersCollection.CreateElement("add");
addElement["name"] = @"PHP-FastCGI";
addElement["path"] = @"*.php";
addElement["verb"] = @"GET,HEAD,POST";
addElement["modules"] = @"FastCgiModule";
addElement["scriptProcessor"] = @"C:\PHP\php-cgi.exe";
addElement["resourceType"] = @"Either";
addElement["requireAccess"] = @"Script";
handlersCollection.AddAt(0, addElement);
serverManager.CommitChanges();
}
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetApplicationHostConfiguration
Dim fastCgiSection As ConfigurationSection = config.GetSection("system.webServer/fastCgi")
Dim fastCgiCollection As ConfigurationElementCollection = fastCgiSection.GetCollection
Dim applicationElement As ConfigurationElement = fastCgiCollection.CreateElement("application")
applicationElement("fullPath") = "C:\PHP\php-cgi.exe"
applicationElement("arguments") = ""
applicationElement("maxInstances") = 4
applicationElement("idleTimeout") = 300
applicationElement("activityTimeout") = 30
applicationElement("requestTimeout") = 90
applicationElement("instanceMaxRequests") = 10000
applicationElement("protocol") = "NamedPipe"
applicationElement("flushNamedPipe") = False
Dim environmentVariablesCollection As ConfigurationElementCollection = applicationElement.GetCollection("environmentVariables")
Dim environmentVariableElement As ConfigurationElement = environmentVariablesCollection.CreateElement("environmentVariable")
environmentVariableElement("name") = "PHP_FCGI_MAX_REQUESTS"
environmentVariableElement("value") = "10000"
environmentVariablesCollection.Add(environmentVariableElement)
fastCgiCollection.Add(applicationElement)
Dim handlersSection As ConfigurationSection = config.GetSection("system.webServer/handlers")
Dim handlersCollection As ConfigurationElementCollection = handlersSection.GetCollection
Dim addElement As ConfigurationElement = handlersCollection.CreateElement("add")
addElement("name") = "PHP-FastCGI"
addElement("path") = "*.php"
addElement("verb") = "GET,HEAD,POST"
addElement("modules") = "FastCgiModule"
addElement("scriptProcessor") = "C:\PHP\php-cgi.exe"
addElement("resourceType") = "Either"
addElement("requireAccess") = "Script"
handlersCollection.AddAt(0, addElement)
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var fastCgiSection = adminManager.GetAdminSection("system.webServer/fastCgi", "MACHINE/WEBROOT/APPHOST");
var fastCgiCollection = fastCgiSection.Collection;
var applicationElement = fastCgiCollection.CreateNewElement("application");
applicationElement.Properties.Item("fullPath").Value = "C:\\PHP\\php-cgi.exe";
applicationElement.Properties.Item("arguments").Value = "";
applicationElement.Properties.Item("maxInstances").Value = 4;
applicationElement.Properties.Item("idleTimeout").Value = 300;
applicationElement.Properties.Item("activityTimeout").Value = 30;
applicationElement.Properties.Item("requestTimeout").Value = 90;
applicationElement.Properties.Item("instanceMaxRequests").Value = 10000;
applicationElement.Properties.Item("protocol").Value = "NamedPipe";
applicationElement.Properties.Item("queueLength").Value = 1000;
applicationElement.Properties.Item("flushNamedPipe").Value = false;
applicationElement.Properties.Item("rapidFailsPerMinute").Value = 10;
var environmentVariablesCollection = applicationElement.ChildElements.Item("environmentVariables").Collection;
var environmentVariableElement = environmentVariablesCollection.CreateNewElement("environmentVariable");
environmentVariableElement.Properties.Item("name").Value = "PHP_FCGI_MAX_REQUESTS";
environmentVariableElement.Properties.Item("value").Value = "10000";
environmentVariablesCollection.AddElement(environmentVariableElement);
fastCgiCollection.AddElement(applicationElement);
var handlersSection = adminManager.GetAdminSection("system.webServer/handlers", "MACHINE/WEBROOT/APPHOST");
var handlersCollection = handlersSection.Collection;
var addElement = handlersCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "PHP-FastCGI";
addElement.Properties.Item("path").Value = "*.php";
addElement.Properties.Item("verb").Value = "GET,HEAD,POST";
addElement.Properties.Item("modules").Value = "FastCgiModule";
addElement.Properties.Item("scriptProcessor").Value = "C:\\PHP\\php-cgi.exe";
addElement.Properties.Item("resourceType").Value = "Either";
addElement.Properties.Item("requireAccess").Value = "Script";
handlersCollection.AddElement(addElement, 0);
adminManager.CommitChanges();
VBScript
Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set fastCgiSection = adminManager.GetAdminSection("system.webServer/fastCgi", "MACHINE/WEBROOT/APPHOST")
Set fastCgiCollection = fastCgiSection.Collection
Set applicationElement = fastCgiCollection.CreateNewElement("application")
applicationElement.Properties.Item("fullPath").Value = "C:\PHP\php-cgi.exe"
applicationElement.Properties.Item("arguments").Value = ""
applicationElement.Properties.Item("maxInstances").Value = 4
applicationElement.Properties.Item("idleTimeout").Value = 300
applicationElement.Properties.Item("activityTimeout").Value = 30
applicationElement.Properties.Item("requestTimeout").Value = 90
applicationElement.Properties.Item("instanceMaxRequests").Value = 10000
applicationElement.Properties.Item("protocol").Value = "NamedPipe"
applicationElement.Properties.Item("queueLength").Value = 1000
applicationElement.Properties.Item("flushNamedPipe").Value = false
applicationElement.Properties.Item("rapidFailsPerMinute").Value = 10
Set environmentVariablesCollection = applicationElement.ChildElements.Item("environmentVariables").Collection
Set environmentVariableElement = environmentVariablesCollection.CreateNewElement("environmentVariable")
environmentVariableElement.Properties.Item("name").Value = "PHP_FCGI_MAX_REQUESTS"
environmentVariableElement.Properties.Item("value").Value = "10000"
environmentVariablesCollection.AddElement(environmentVariableElement)
Call fastCgiCollection.AddElement(applicationElement)
Set handlersSection = adminManager.GetAdminSection("system.webServer/handlers", "MACHINE/WEBROOT/APPHOST")
Set handlersCollection = handlersSection.Collection
Set addElement = handlersCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "PHP-FastCGI"
addElement.Properties.Item("path").Value = "*.php"
addElement.Properties.Item("verb").Value = "GET,HEAD,POST"
addElement.Properties.Item("modules").Value = "FastCgiModule"
addElement.Properties.Item("scriptProcessor").Value = "C:\PHP\php-cgi.exe"
addElement.Properties.Item("resourceType").Value = "Either"
addElement.Properties.Item("requireAccess").Value = "Script"
Call handlersCollection.AddElement(addElement, 0)
adminManager.CommitChanges()