Действительно ли cgi мертв? [закрытый]

Решение следующие.

Использование модуль Python zipfile для создания архива zip, но как файл определяют объект StringIO (конструктор ZipFile требует подобного файлу объекта). Добавьте файлы, которые Вы хотите сжать. Тогда в Вашем Django приложение возвращают содержание объекта StringIO в HttpResponse с набором mimetype к application/x-zip-compressed (или [по крайней мере 112]). Если Вы хотите, можно установить content-disposition заголовок, но это не должно действительно требоваться.

, Но остерегаются, создание архивов zip по каждому запросу является плохой идеей, и это может уничтожить Ваш сервер (не считающий тайм-ауты, если архивы являются крупными). Мудрый производительностью подход должен кэшировать сгенерированный вывод где-нибудь в файловой системе и повторно создать его, только если исходные файлы изменились. Еще лучшая идея состоит в том, чтобы подготовить архивы заранее (например, заданием крона) и иметь Ваш веб-сервер, служащий им в качестве обычных помех.

17
задан flybywire 23 September 2009 в 08:22
поделиться

4 ответа

На самом деле он далеко не мертв. Несмотря на накладные расходы, многие компании, занимающиеся виртуальным веб-хостингом, в настоящее время используют PHP как CGI из соображений безопасности, так как его можно использовать с suEXEC. suEXEC означает, что ваши скрипты выполняются с вашими фактическими привилегиями пользователя Unix и, таким образом, ограничены разделением привилегий операционной системы. Это намного более надежная модель безопасности, чем специфическая для PHP альтернатива open_basedir.

Кроме того, CGI представляет собой действительно простой и довольно универсальный интерфейс, поддержка которого никогда не прекратится. с веб-серверов. Многие новые интерфейсы, такие как FastCGI и SCGI, наследуют способ, которым CGI передает заголовки HTTP и другие переменные в веб-приложение и обратно. Даже PHP ' s SAPI имитирует это с помощью своей переменной $ _ SERVER . Так что CGI никуда не денется, он просто строится.

12
ответ дан 30 November 2019 в 13:28
поделиться

Наследие? Абсолютно. Мертв? Ну это на аппарате жизнеобеспечения. Я сомневаюсь, что он действительно «умрет» в обозримом будущем. Вы можете по-прежнему использовать CGI для написания очень небольших скриптов, если у вас есть сервер, на котором нет других средств для запуска веб-приложений, и вам лень его настраивать.

Что еще причина? Возможно, у вас есть программа, которая пропускает память или ресурсы, например решето, но вам все равно нужно запустить ее, поэтому вы должны убедиться, что все очищено, завершая процесс при каждом запросе ...

А если серьезно, для вещей, которые действительно имеет значение , я думаю, что преимущества перехода на систему любого типа с постоянными процессами намного перевешивают затраты. По моему опыту, это также способствует написанию более организованного кода,

9
ответ дан 30 November 2019 в 13:28
поделиться

Он не совсем мертв. Но fcgi выглядит намного лучше. Хотя официально не поддерживается, скажем, Apache. Вам необходимо использовать боковые моды, чтобы заставить его работать.

1
ответ дан 30 November 2019 в 13:28
поделиться

CGI не очень хорошо подходит для высокой производительности.

Но мой совет - игнорировать это, писать для языка или библиотеки, которые поддерживают несколько SAPI, а затем использовать то, что лучше всего подходит для каждого ситуация.

0
ответ дан 30 November 2019 в 13:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: