Bagikan melalui


FastCGI <fastCgi>

Gambaran Umum

Elemen ini <fastCgi> berisi kumpulan <application> elemen, yang masing-masing membuat definisi kumpulan aplikasi FastCGI. Layanan Informasi Internet (IIS) 7 mencakup komponen FastCGI. Komponen ini memberi Anda keandalan yang lebih besar dan performa yang lebih baik dan memungkinkan Anda menjalankan kerangka kerja aplikasi PHP dan kerangka kerja aplikasi Web lainnya di IIS 7.

Definisi kumpulan aplikasi FastCGI paling sederhana mengharuskan Anda menyertakan atribut fullPath dalam <application> elemen untuk menentukan biner yang akan digunakan untuk kerangka kerja aplikasi tertentu. Untuk kerangka kerja PHP, atur atribut fullPath ke direktori dan nama file biner PHP.

Atribut lain bersifat opsional dan memungkinkan Anda mengonfigurasi sejumlah parameter lain. Ini termasuk jumlah maksimum permintaan yang dapat diproses oleh proses pekerja FastCGI sebelum didaur ulang, jumlah maksimum proses pekerja untuk kumpulan aplikasi, dan jumlah maksimum waktu yang dapat diambil permintaan FastCGI.

Catatan

Untuk memproses permintaan dengan menggunakan FastCGI, Anda harus terlebih dahulu memetakan jalur dan ekstensi nama file tertentu ke modul FastCGI dan menentukan proses FastCGI target sebagai prosesor skrip.

Baru di IIS 7.5

IIS 7.5 menambahkan atribut berikut ke <fastCgi>/<application> elemen :

  • Atribut monitorChangesTo memungkinkan Anda menentukan file untuk memantau perubahan yang mungkin memengaruhi perilaku aplikasi FastCGI. Misalnya, jika Anda menggunakan kerangka kerja PHP, Anda dapat mengonfigurasi IIS untuk memantau PHP. File INI untuk perubahan dengan menentukan jalur lengkap ke file di atribut monitorChangesTo .
  • Atribut stderrMode menentukan bagaimana IIS 7 akan menangani kesalahan yang dikembalikan dari aplikasi FastCGI melalui aliran STDERR.
  • Atribut signalBeforeTerminateSeconds memungkinkan Anda mengonfigurasi IIS untuk menunggu periode waktu tertentu setelah IIS memberi sinyal aplikasi FastCGI bahwa ia perlu dimatikan. Ini memungkinkan aplikasi FastCGI membersihkan pengaturan apa pun sebelum IIS mengakhiri proses.

Kompatibilitas

Versi Catatan
IIS 10.0 Elemen <fastCgi> tidak dimodifikasi dalam IIS 10.0.
IIS 8.5 Elemen <fastCgi> tidak dimodifikasi dalam IIS 8.5.
IIS 8.0 Elemen <fastCgi> tidak dimodifikasi dalam IIS 8.0.
IIS 7.5 Elemen <application><fastCgi> koleksi diperbarui di IIS 7.5 dengan atribut monitorChangesTo, stderrMode, dan signalBeforeTerminateSeconds .
IIS 7.0 Elemen ini <fastCgi> diperkenalkan dalam IIS 7.0.
IIS 6.0 T/A

Siapkan

Untuk menggunakan lingkungan FastCGI, Anda harus terlebih dahulu menginstal layanan peran CGI. Proses penginstalan mendaftarkan layanan peran Common Gateway Interface (CGI) di <globalModules> elemen dan <modules> . Anda tidak perlu melakukan langkah-langkah lain untuk menginstal lingkungan FastCGI.

Windows Server 2012 atau Windows Server 2012 R2

  1. Pada taskbar, klik Manajer Server.
  2. Di Manajer Server, klik menu Kelola , lalu klik Tambahkan Peran dan Fitur.
  3. Di wizard Tambahkan Peran dan Fitur, klik Berikutnya. Pilih jenis penginstalan dan klik Berikutnya. Pilih server tujuan dan klik Berikutnya.
  4. Pada halaman Peran Server, perluas Server Web (IIS), perluas Server Web, perluas Pengembangan Aplikasi, lalu pilih CGI. Klik Berikutnya.
    Cuplikan layar C G I dipilih di antarmuka Windows Server 2012.
  5. Pada halaman Pilih Fitur , klik Berikutnya.
  6. Pada halaman Konfirmasi pilihan instalasi, klik Instal.
  7. Pada halaman Hasil , klik Tutup.

Windows 8 atau Windows 8.1

  1. Pada layar Mulai, pindahkan penunjuk ke sudut kiri bawah, klik kanan tombol Mulai, lalu klik Panel Kontrol.
  2. Di Panel Kontrol, klik Program dan Fitur, lalu klik Aktifkan atau nonaktifkan fitur Windows.
  3. Perluas Layanan Informasi Internet, perluas World Wide Web Services, perluas Fitur Pengembangan Aplikasi, lalu pilih CGI.
    Cuplikan layar C G I dipilih di antarmuka Windows 8.
  4. Klik OK.
  5. Klik Tutup.

Windows Server 2008 atau Windows Server 2008 R2

  1. Pada bilah tugas, klik Mulai, arahkan ke Alat Administratif, lalu klik Manajer Server.
  2. Di panel hierarki Manajer Server, perluas Peran, lalu klik Server Web (IIS).
  3. Di panel Server Web (IIS), gulir ke bagian Layanan Peran, lalu klik Tambahkan Layanan Peran.
  4. Pada halaman Pilih Layanan Peran wizard Tambahkan Layanan Peran, pilih CGI, lalu klik Berikutnya.
    Cuplikan layar C G I dipilih di antarmuka Windows Server 2008.
  5. Pada halaman Konfirmasi Pilihan Penginstalan, klik Instal.
  6. Pada halaman Hasil , klik Tutup.

Windows Vista atau Windows 7

  1. Pada bilah tugas, klik Mulai, lalu klik Panel Kontrol.
  2. Di Panel Kontrol, klik Program dan Fitur, lalu klik Aktifkan atau nonaktifkan Fitur Windows.
  3. Perluas Layanan Informasi Internet, lalu pilih CGI, lalu klik OK.
    Cuplikan layar C G I dipilih di antarmuka Windows Vista atau Windows 7.

Bagaimana Caranya

Catatan untuk pengguna IIS 7.0: Beberapa langkah di bagian ini mungkin mengharuskan Anda menginstal Paket Administrasi Microsoft untuk IIS 7.0, yang mencakup antarmuka pengguna untuk pengaturan FastCGI. Untuk menginstal Paket Administrasi Microsoft untuk IIS 7.0, lihat URL berikut:

Cara membuat pemetaan handler FastCGI global untuk PHP

Catatan

Sebelum prosedur berikut ini berfungsi, Anda harus sudah menginstal biner yang akan menjalankan jalur file atau ekstensi nama file yang Anda tentukan. Contoh ini menggunakan implementasi PHP yang tersedia dari https://www.php.net/.

  1. Buka Manajer Layanan Informasi Internet (IIS):

    • Jika Anda menggunakan Windows Server 2012 atau Windows Server 2012 R2:

      • Pada bilah tugas, klik Manajer Server, klik Alat, lalu klik manajer Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows 8 atau Windows 8.1:

      • Tahan tombol Windows, tekan huruf X, lalu klik Panel Kontrol.
      • Klik Alat Administratif, lalu klik dua kali manajer Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows Server 2008 atau Windows Server 2008 R2:

      • Pada bilah tugas, klik Mulai, arahkan ke Alat Administratif, lalu klik manajer Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows Vista atau Windows 7:

      • Pada bilah tugas, klik Mulai, lalu klik Panel Kontrol.
      • Klik dua kali Alat Administratif, lalu klik dua kali Layanan Informasi Internet (IIS) Manager.
  2. Di panel Koneksi ions, klik nama server yang ingin Anda konfigurasikan pemetaan handler FastCGInya.

  3. Di panel Beranda , klik dua kali Pemetaan Handler.
    Cuplikan layar Pemetaan Handler dipilih di panel Beranda Situs Web Default.

  4. Di panel Tindakan , klik Tambahkan Pemetaan Modul. Cuplikan layar Pemetaan Handler yang Dinonaktifkan dan Diaktifkan di Manajer I S.

  5. Masukkan informasi berikut:

    • Masukkan ekstensi nama file dalam kotak teks Jalur permintaan. Misalnya, "*.php".

    • Klik FastCgiModule di daftar drop-down Modul .

    • Masukkan jalur ke mesin skrip dalam kotak Dapat Dieksekusi . Misalnya, "C:\PHP\php-cgi.exe".

    • Masukkan nama unik untuk pemetaan handler di kotak Nama . Misalnya, "PHP-FastCGI".

      Cuplikan layar dialog Tambahkan Pemetaan Modul dengan opsi yang ditentukan.

    • Klik Pembatasan Permintaan

    • Pilih Panggil handler hanya jika permintaan dipetakan.

    • Klik untuk memilih opsi File atau Folder .

    • Klik OK.

      Cuplikan layar pengaturan opsi Pemetaan dalam dialog Pembatasan Permintaan.

  6. Klik OK.

  7. Jika Anda diminta untuk membuat aplikasi FastCGI dalam kotak dialog Tambahkan Pemetaan Modul, klik Ya.

    Cuplikan layar sebelum mengonfirmasi untuk membuat aplikasi baru untuk executable yang ditentukan.

    Catatan

    Ini akan secara otomatis membuat aplikasi FastCGI untuk pemetaan handler yang baru saja Anda buat. Jika Anda memilih Tidak, Anda dapat membuat aplikasi FastCGI secara manual nanti.

Cara membuat aplikasi FastCGI untuk PHP

Catatan

Sebelum prosedur berikut ini berfungsi, Anda harus sudah menginstal biner yang akan menjalankan jalur file atau ekstensi nama file yang Anda tentukan. Contoh ini menggunakan implementasi PHP yang tersedia dari www.php.net.

Catatan

Menambahkan aplikasi FastCGI tidak secara otomatis menambahkan pemetaan handler. Untuk melakukannya, Anda perlu mengikuti langkah-langkah di bagian Cara membuat pemetaan handler FastCGI untuk PHP] di artikel ini.

  1. Buka Manajer Layanan Informasi Internet (IIS):

    • Jika Anda menggunakan Windows Server 2012 atau Windows Server 2012 R2:

      • Pada bilah tugas, klik Manajer Server, klik Alat, lalu klik manajer Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows 8 atau Windows 8.1:

      • Tahan tombol Windows, tekan huruf X, lalu klik Panel Kontrol.
      • Klik Alat Administratif, lalu klik dua kali manajer Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows Server 2008 atau Windows Server 2008 R2:

      • Pada bilah tugas, klik Mulai, arahkan ke Alat Administratif, lalu klik manajer Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows Vista atau Windows 7:

      • Pada bilah tugas, klik Mulai, lalu klik Panel Kontrol.
      • Klik dua kali Alat Administratif, lalu klik dua kali Layanan Informasi Internet (IIS) Manager.
  2. Di panel Koneksi ion, klik nama server yang ingin Anda konfigurasi pengaturan FastCGI-nya.

  3. Di panel Beranda, klik dua kali Pengaturan FastCGI.
    Cuplikan layar Fast C G I Pengaturan dipilih di panel Beranda SERVER.

  4. Di panel Tindakan , klik Tambahkan Aplikasi
    Cuplikan layar panel Fast C G I Pengaturan kosong.

  5. Dalam kotak dialog Tambahkan Aplikasi FastCGI, masukkan informasi berikut ini:

    • Masukkan jalur ke mesin skrip di kotak Jalur Lengkap. Misalnya, "C:\PHP\php-cgi.exe".

    • Masukkan jumlah maksimum permintaan untuk aplikasi FastCGI.

      Catatan

      Untuk PHP, jumlah ini harus lebih sedikit atau sama dengan jumlah maksimum permintaan untuk lingkungan PHP, yang dikonfigurasi dengan menggunakan PHP_FCGI_MAX_REQUESTS variabel lingkungan.
      Cuplikan layar dialog Tambahkan Aplikasi C G I Cepat dengan Properti Fast C G I default.

  6. Klik elipsis (...) di samping EnvironmentVariables untuk membuka editor pengumpulan variabel lingkungan.

  7. Dalam kotak dialog Editor Koleksi EnvironmentVariables, klik Tambahkan.
    Cuplikan layar dialog Editor Koleksi Variabel Lingkungan kosong.

  8. Masukkan informasi berikut, lalu klik OK.

    • Masukkan "PHP_FCGI_MAX_REQUESTS" untuk Nama.

    • Masukkan "10000" untuk Nilai.

      Cuplikan layar variabel baru dalam daftar Anggota dengan properti yang ditentukan.

  9. Klik OK untuk menutup kotak dialog Tambahkan Aplikasi FastCGI.

Cara menambahkan variabel lingkungan FastCGI untuk PHP

Catatan

Sebelum prosedur berikut ini berfungsi, Anda harus sudah menginstal biner yang akan menjalankan jalur file atau ekstensi nama file yang Anda tentukan. Contoh ini menggunakan implementasi PHP yang tersedia dari https://www.php.net/.

  1. Buka Manajer Layanan Informasi Internet (IIS):

    • Jika Anda menggunakan Windows Server 2012 atau Windows Server 2012 R2:

      • Pada bilah tugas, klik Manajer Server, klik Alat, lalu klik manajer Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows 8 atau Windows 8.1:

      • Tahan tombol Windows, tekan huruf X, lalu klik Panel Kontrol.
      • Klik Alat Administratif, lalu klik dua kali manajer Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows Server 2008 atau Windows Server 2008 R2:

      • Pada bilah tugas, klik Mulai, arahkan ke Alat Administratif, lalu klik manajer Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows Vista atau Windows 7:

      • Pada bilah tugas, klik Mulai, lalu klik Panel Kontrol.
      • Klik dua kali Alat Administratif, lalu klik dua kali Layanan Informasi Internet (IIS) Manager.
  2. Di panel Koneksi ion, klik nama server yang ingin Anda konfigurasi pengaturan FastCGI-nya.

  3. Di panel Beranda, klik dua kali Pengaturan FastCGI.
    Cuplikan layar ikon Pengaturan Fast C G I dipilih di panel Beranda SERVER.

  4. Sorot aplikasi PHP di panel FastCGI Pengaturan, lalu klik Edit di panel Tindakan
    Cuplikan layar aplikasi P H P yang dipilih di panel Fast C G I Pengaturan.

  5. Dalam kotak dialog Edit Aplikasi FastCGI, klik elipsis (...) di samping EnvironmentVariables untuk membuka editor koleksi variabel lingkungan.
    Cuplikan layar dialog Edit Aplikasi C G I Cepat dengan opsi yang ditentukan.

  6. Dalam kotak dialog Editor Koleksi EnvironmentVariables, klik Tambahkan.
    Cuplikan layar dialog Editor Koleksi Variabel Lingkungan kosong sebelum menambahkan variabel baru.

  7. Masukkan informasi berikut, lalu klik OK.

    • Masukkan "PHP_FCGI_MAX_REQUESTS" untuk Nama.

    • Masukkan "10000" untuk Nilai.

      Cuplikan layar setelah menambahkan Variabel Lingkungan baru dengan properti yang ditentukan.

  8. Klik OK untuk menutup kotak dialog Tambahkan Aplikasi FastCGI.

Konfigurasi

Anda dapat mengonfigurasi <fastCgi> elemen di tingkat server dalam file ApplicationHost.config atau di tingkat situs, di tingkat aplikasi, atau di tingkat direktori dalam file Web.config.

Atribut

Tidak ada.

Elemen Anak

Elemen Deskripsi
application Elemen opsional.

Menambahkan definisi kumpulan proses FastCGI ke koleksi definisi kumpulan proses FastCGI.

Sampel Konfigurasi

Sampel konfigurasi berikut menambahkan aplikasi FastCGI untuk PHP, mengatur atribut instanceMaxRequests ke "10000," dan mengatur PHP_FCGI_MAX_REQUESTS variabel lingkungan ke "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>

Catatan

Untuk PHP, nilai PHP_FCGI_MAX_REQUESTS variabel lingkungan harus berupa angka yang lebih kecil atau sama dengan nilai yang ditentukan oleh atribut instanceMaxRequests dari elemen FastCGI <application> .

Sampel konfigurasi berikut menambahkan pemetaan handler FastCGI global untuk file PHP ke IIS dan menentukan jalur lengkap ke file yang dapat dieksekusi 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>

Catatan

Pengaturan FastCGI dapat dikonfigurasi per situs melalui penggunaan aplikasi FastCGI yang diformat khusus dan dengan pemetaan handler, yang dibedakan dengan mencocokkan atribut fullPath dan argumen untuk <application> elemen dengan atribut scriptProcessor yang sesuai dalam <handlers> pemetaan untuk proses FastCGI. Untuk membuat pemetaan ini, pengaturan di atribut fullPath dan argumen untuk <application> elemen harus ditambahkan ke atribut scriptProcessor dalam <handlers> pemetaan untuk proses FastCGI dan dipisahkan oleh karakter pipa "|". Kombinasi ini berfungsi sebagai kunci unik untuk setiap aplikasi FastCGI. Misalnya, kutipan konfigurasi berikut menunjukkan dua contoh <elemen fastCgi>/<aplikasi> dan pemetaan handler> yang sesuai <untuk dua penangan PHP khusus situs:

<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>

Kode Sampel

Sampel kode berikut menambahkan aplikasi FastCGI untuk PHP, mengatur atribut instanceMaxRequests ke "10000," dan mengatur PHP_FCGI_MAX_REQUESTS variabel lingkungan ke "10000." Setiap sampel juga menambahkan pemetaan handler FastCGI global untuk file PHP ke IIS dan menentukan jalur lengkap ke file yang dapat dieksekusi 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

Catatan

Anda harus yakin untuk mengatur parameter penerapan ke apphost ketika Anda menggunakan AppCmd.exe untuk mengonfigurasi pengaturan ini. Ini menerapkan pengaturan konfigurasi ke bagian lokasi yang sesuai di file 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()