В IIS 6, используя Perl, я мог отправлять поток вывода клиенту, а не буферизовать все это и сразу выгружать. Это позволило использовать такие вещи, как индикаторы выполнения и тому подобное.
Как я могу сделать то же самое в IIS 7?
В IIS 6, используя Perl, я мог отправлять поток вывода клиенту, а не буферизовать все это и сразу выгружать. Это позволило использовать такие вещи, как индикаторы выполнения и тому подобное.
Как я могу сделать то же самое в IIS 7?
В IIS 7 после создания сопоставления сценария Perl Script вы можете добавить атрибут, который это исправит.
Вы изменяете файл %windir%\system32\inetsrv\config\applicationHost.control и находите сопоставление сценария по имени (в моем случае Perl-Script). Затем добавьте атрибут responseBufferLimit в XML, например:
<add name="Perl-Script" path="*.pl" blah blah blah responseBufferLimit="0" />
Это приводит к тому, что IIS работает так же, как и в IIS 6, с отключенной буферизацией.
Вы можете настроить web.config веб-приложения, чтобы установить responseBufferLimit="0"
вместо изменения глобальных настроек. Пример web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="Perl CGI for .pl (custom)" path="*.pl" verb="GET,HEAD,POST" modules="CgiModule" scriptProcessor="C:\Perl64\bin\perl.exe "%s" %s" resourceType="File" requireAccess="Script" responseBufferLimit="0" />
</handlers>
</system.webServer>
<system.web>
<identity impersonate="false" />
</system.web>
</configuration>
Поместите этот файл в корневой веб-каталог. Он переопределит настройки сервера для *.pl
.
ЕДИНСТВЕННАЯ вещь, которая работала для меня в IIS 7.5 (Windows 7), была следующей командой, запускаемой из CMD:
appcmd.exe set config /section:handlers "/[name='PHP_via_FastCGI'].ResponseBufferLimit:0"
ПРИМЕЧАНИЕ. Вы должны заменить PHP_via_FastCGI на имя вашего обработчика PHP в "Handler Mappings".