Для fastcgi на IIS требуется указать обработчик exe или dll.
Если использовать php как fastcgi.
То в качестве обработчика указываю php-cgi.exe который в папке с самим php.
И все работает.
У .exe файлов я вижу в качестве обработчика только cmd.exe.
Но это консольный обработчик. А нужен windows.
Получается настроить это дело в apache.
Но в IIS7.5 ничего не выходит.
1. manking - 09 Ноября, 2010 - 00:40:24 - перейти к сообщению
2. DeepVarvar - 09 Ноября, 2010 - 08:25:27 - перейти к сообщению
C++ это компилятор вобще-то.
Как вы себе представляете его работу в серверном окружении? Что он там компилировать будет? Непонятные цели...
Как вы себе представляете его работу в серверном окружении? Что он там компилировать будет? Непонятные цели...
3. Мелкий - 09 Ноября, 2010 - 11:01:19 - перейти к сообщению
DeepVarvar пишет:
C++ это компилятор вобще-то.
![Не понял Не понял](./im/emoticons/blink.gif)
А язык-то тогда какой С++ компилит? Ну чтобы точно уже знать?
![Радость Радость](./im/emoticons/biggrin24.gif)
manking пишет:
У .exe файлов я вижу в качестве обработчика только cmd.exe.
Но это консольный обработчик. А нужен windows.
Но это консольный обработчик. А нужен windows.
А в чём, простите, разница? У виндов нет cmd?
Вот под апач пример настройки: http://habrahabr[dot]ru/blogs/cpp/61532/
4. DeepVarvar - 09 Ноября, 2010 - 11:05:21 - перейти к сообщению
Мелкий пишет:
Поздравляю всех, кто знаком с этим языком - оказывается, мы пишем на компиляторе
Мелкий посмотрите название темы, в контексте вопроса имеется виду не язык.
5. Мелкий - 09 Ноября, 2010 - 11:10:09 - перейти к сообщению
DeepVarvar, перечитал. Спрашивается: "как запустить приложение, написанное на С++, как fastcgi под M$ IIS"
И где тут про компилятор?
И где тут про компилятор?
6. DeepVarvar - 09 Ноября, 2010 - 11:28:01 - перейти к сообщению
Мелкий, перечитал и я, теперь понял что было нужно...
7. JustUserR - 09 Ноября, 2010 - 13:17:00 - перейти к сообщению
manking пишет:
Возможность использования различных конфигурационых схем обработки запрашиваемых ресурсов и URL-адресов на IIS-сервере обеспечивается с учетом возможности сохранения совместимости с активными компонентами среды выполнения - по этой причине для огранизации произвольного FastCGI-обработчика целесообразно создание собственного .NET-приложения обеспечивающего реализацию функциональности API сервера - в частности использования HadlerFactory для генерации обработчиков реального времени
Для fastcgi на IIS требуется указать обработчик exe или dll
8. manking - 09 Ноября, 2010 - 16:18:55 - перейти к сообщению
Мелкий пишет:
А в чём, простите, разница? У виндов нет cmd?
Вот под апач пример настройки: http://habrahabr.ru/blogs/cpp/61532/
А в чём, простите, разница? У виндов нет cmd?
Вот под апач пример настройки: http://habrahabr.ru/blogs/cpp/61532/
На IIS указание cmd обработчиком приводит к ошибке 500. К тому же поднятие консоли при каждом запросе, приведет к падению производительности(по крайне мере так выглядит).
Эту статью читал, но там используется сокеты. А при CGI вывод cout print идет сразу в браузер.
Попробую с сокетами.
JustUserR пишет:
в частности использования HadlerFactory для генерации обработчиков реального времени
А вот здесь не совсем понимаю.
Выходит как. При CGI исполнении exe файла, создается процесс в windows.
например приложение web.exe создаст процесс web.exe который виден в диспетчере задач.
Это приложение выполнилось, все cout printf выводы отдало в браузер. И завершилось.
Но если оно выполняется долго, то новый посетитель не сможет получить доступ к этому приложению, пока оно не выполниться. Я проверял, кликаю в браузере по ссылке, но оно возвращает пустую страницу.
Вот здесь 2 выхода, либо как то применять новое название для процесса
web.exe , web1.exe , web3.exe . Как это сделать представления не имею. Это нужно ковырять ядро win.
2 выход это создать свой обработчик exe. Который создает один процесс. И принимает запросы на запуск приложений, но создает для каждого нового обращения свой поток
внутри этого процесса.
Видимо php-cgi.exe это и есть подобный обработчик для php. Для других языков типа perl python он тоже должен быть.
Но вот есть ли такой для c++? Ведь писать собственный это как я понял огромный труд на 3-4 месяца?
9. DeepVarvar - 09 Ноября, 2010 - 16:40:45 - перейти к сообщению
manking пишет:
то новый посетитель не сможет получить доступ к этому приложению
Для этого нужны threads, именно так и достигается многопоточная работа одного приложения. Я не силен в С++, однако если смотреть на тот же пхп - есть возможность ветвления процессов для одновременной обработки различных задач и вычислений. В контексте С++ я так предполагаю после ф-ции main необходимо создать возможность ветвления с однозначной "индентификацией" того кто эту ветвь запустил, для отдачи результата именно тому кто запускал... А вот как оно там делается в С++ я не знаю...
10. JustUserR - 09 Ноября, 2010 - 22:31:54 - перейти к сообщению
manking пишет:
Приведенный вами пример обеспечения работоспособности исполняемого exe-приложения не согласован для использованя его для обработки пользовательских запросов посредством интерфейса CGI - для реализации такой системы взамодействия необходимо обеспечение получения введенных пользователем информационных полей из переменной окружения QUERY_STRING как GET-данные - и осуществлять считывание из потока STDIN в размере приведенном в значении переменной окружения CONTENT_LENGTH при условии установки значения POST в параметре REQUEST_METHOD После осуществления получения указанных информационных полей - производится их преобразования в форму ассоциативного массива - посредством применения операции строкового разбиения и urlencode-декодирования отноительно входящих компонентовА вот здесь не совсем понимаю. Выходит как. При CGI исполнении exe файла, создается процесс в windows.
например приложение web.exe создаст процесс web.exe который виден в диспетчере задач.
Это приложение выполнилось, все cout printf выводы отдало в браузер. И завершилось.
Но если оно выполняется долго, то новый посетитель не сможет получить доступ к этому приложению, пока оно не выполниться. Я проверял, кликаю в браузере по ссылке, но оно возвращает пустую страницу.
например приложение web.exe создаст процесс web.exe который виден в диспетчере задач.
Это приложение выполнилось, все cout printf выводы отдало в браузер. И завершилось.
Но если оно выполняется долго, то новый посетитель не сможет получить доступ к этому приложению, пока оно не выполниться. Я проверял, кликаю в браузере по ссылке, но оно возвращает пустую страницу.
После осуществления основной функциональности вашег приложения - производится вывод пользователю документа HTTP-ответа - включающего в себя обязательные HTTP-заголовки типа Content neogation - и представляющие собой в частном и широко используемом случае значение Content-type Обеспечение целевого пользовательского вывода должно быть согласовано в соответствии требования web-сервера и CGI-интерфейса - иначе в процессе результата выполнения приложения обеспечивается получение ошибки HTTP 500 Кроме тог достаточно важным критерием обеспечения работоспособности является проверка кодовой таблицы представления передаваемой информации - поскольку в случае ее несопоставления с 7bit-ным ASCII-представлением при осуществлении вывода HTTP-заголовков производится появление ошибки HTTP 500
Указанная выше схема обеспечивает функционирование минимально-простого CGI-приложения - при условии обеспечения web-сервером правильного исполнения его компонентов при запросе пользователями целевого URL-адреса
Обеспечение работоспособности приложения с интерфейсом FastCGI представляет собой усложненную схему - включающую в себя протокол передачи информации между сеансом обработчика FastCGI-скрипта и web-сервером Полное описание соответствующей спецификации предоставлено на этом ресурсе http://fastcgi[dot]com/devkit/doc/fcgi-spec[dot]html
Использование в качестве обрабатывающего web-сервера приложения IIS предполагает включение активных сисетемных компонентов для проведения обработки - в частности такими элементами могут быть скомпилированные dll-модули обеспечивающие требуемое значение с прикладным интерфейсом IIS-сервера - или активные компоненты .net framework Одним из возможным вариантом обеспечения кастомизации настройки сервера IIS является следующая схема - для заданного виртуального хоста или директории обеспечивается создание такого конфигурационного файла web.config - который обеспечивает передачу управления .NET-программе компиляция которой может осуществляться в реальном времени посредством включения директривы codedom
CODE (text):
скопировать код в буфер обмена
скопировать код в буфер обмена
- <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
- <providerOption name="CompilerVersion" value="v3.5" />
- <providerOption name="WarnAsError" value="false" />
- </compiler>