Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » CGI-скрипты на языке C

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

olsufr



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Предлагаю в этой теме писать все сообщения касающиеся создания CGI-скриптов на языке С, С++
 
Вот ссылка на другую тему, в которой обсуждается выбор компилятора:
http://forum.ru-board.com/topic.cgi?forum=33&bm=1&topic=0920#1
 
-----------------------------------------------
Сейчас начинаю пробовать создавать скрипты на С.
 
Если есть у кого-нибудь хорошие советы по написанию скриптов,
то хотелось бы их услышать.  
 
Знаю, что в отличии от Perl в С вопрос обеспечения безопасности
скрипта решается гораздо сложнее. Какие здесь есть нюансы и  
отличия от Perl ?
 
Создал небольшой тестовый скриптик
и вижу, что он имеет какие-то странно большие размеры.
Вот этот скрипт:

Код:
 
#include <stdio.h>
int main()
{
printf("Content-Type: text/html\n\n");
printf("<html><body><h1>Hello World!</h1></body></html>");
}
 

А вот его размер в откомпилированном виде: около 23 килобайт.
 
Неужели скрипты на С имеют такие огромные размеры (в сравнении с Perl) ?
 
 

Всего записей: 363 | Зарегистр. 07-08-2002 | Отправлено: 15:28 25-06-2003 | Исправлено: olsufr, 18:21 25-06-2003
webdeveloper



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
olsufr

Цитата:
code][/code]  

код ты похоже забыл....

Всего записей: 1373 | Зарегистр. 30-05-2002 | Отправлено: 15:52 25-06-2003
djelektronik

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
там есть еще ключи оптимизации -О3 обычно идет

Всего записей: 2530 | Зарегистр. 28-06-2001 | Отправлено: 18:09 25-06-2003
olsufr



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
webdeveloper

Цитата:
olsufr  
 
Цитата:code][/code]  
 
код ты похоже забыл....
Точно. Я его уже вставил на место.
 
djelektronik
Цитата:
там есть еще ключи оптимизации -О3 обычно идет

Я пользовался компилятором Bloodshed Dev-C++  
( http://www.bloodshed.net/ )
Может знаешь какие в нем особенности надо учитывать?

Всего записей: 363 | Зарегистр. 07-08-2002 | Отправлено: 18:24 25-06-2003 | Исправлено: olsufr, 18:30 25-06-2003
quesejodan

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
olsufr
 Неужели скрипты на С имеют такие огромные размеры (в сравнении с Perl) ?  
 
Имеет место неверное сравнение размеров...
скрипт написаный на языке перл он скрипт и есть, то бишь его запуск эквивалентен
 запуску интерпретатора perl (обычно около 4,5 мегов) который собственно и процессит скрипт.
 
В случае C++ экзешника мы имеем дело с законченым продуктом...он запустится и память будет занимать только сам...
Так что 23К против perl + размер скрипта - вполне хорошо....
 
А вообще я например используя просто 2 свитча : -O3 -s довёл размер до 2796 байт, но и это далеко не предел...

Всего записей: 32 | Зарегистр. 10-06-2003 | Отправлено: 21:18 25-06-2003
olsufr



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
quesejodan
Цитата:
Имеет место неверное сравнение размеров...  
Конечно ты прав.
 
 

Цитата:
А вообще я например используя просто 2 свитча : -O3 -s довёл размер до 2796 байт, но и это далеко не предел...
Вот как бы мне поподробнее узнать о подобных параметрах для моего компилятора Bloodshed Dev-C++  ?

Всего записей: 363 | Зарегистр. 07-08-2002 | Отправлено: 21:33 25-06-2003
quesejodan

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обычно вместе с компиляторами приходат мануалы к ним, в коих и объясняется какие опции есть а каких нет, поищи в инете мануал к твоему компилятору...

Всего записей: 32 | Зарегистр. 10-06-2003 | Отправлено: 21:36 25-06-2003
olsufr



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А при компилировании с GCC в Unix какие опции есть?

Всего записей: 363 | Зарегистр. 07-08-2002 | Отправлено: 21:43 25-06-2003
arto

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
скрипт написаный на языке перл он скрипт и есть, то бишь его запуск эквивалентен
 запуску интерпретатора perl (обычно около 4,5 мегов)

# ls -alF =perl
-rwxr-xr-x    2 root     root        13671 Mar 19 14:19 /usr/bin/perl*
#  
 
всего 13к. у меня неправильный perl?

Всего записей: 294 | Зарегистр. 08-02-2003 | Отправлено: 21:51 25-06-2003
quesejodan

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
arto
эхх Арто, Арто ....
 
Ну ктож это дело ls ом мерЯет
 
сделай скажем ldd от перла и увидишь все динамические либы которые к нему прилинкованы
 
Ежели перл слинковать статически, то и получатся те самые 4,5 мега...
 
 
Добавлено
И чем более функций и либ ты подключишь к своему перловому скрипту, тем более он будет занимать...
 
Добавлено
скажем в самом простейшем примере который был показан, там где перл может оптимизировать своё существование, перл занимает в памяти 1,3 Кб
 А с - 268 байт

Всего записей: 32 | Зарегистр. 10-06-2003 | Отправлено: 22:01 25-06-2003
arto

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
увидишь все динамические либы которые к нему прилинкованы

 
т.е. все они будут разделяться?
и если у меня уже запущен perl, то второй запуск не заставит их заново подгружаться?
 

Всего записей: 294 | Зарегистр. 08-02-2003 | Отправлено: 00:28 26-06-2003
quesejodan

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
несомненно, разделяться будут.
 
Но по любому перловый скрипт в сумме съест больше памяти чем Си-шная программа.
 
Другое дело, что написать многие вещи на С также грамотно как перл выполняет свой скрипт - очень сложно, и занимает гораздо больше времени..

Всего записей: 32 | Зарегистр. 10-06-2003 | Отправлено: 12:24 26-06-2003
olsufr



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
quesejodan
Цитата:
написать многие вещи на С также грамотно как перл выполняет свой скрипт - очень сложно, и занимает гораздо больше времени..

А какие вещи стоит писать на С,
а какие - нет и их тогда лучше на Перле писать?
Может какие есть примеры из практики?

Всего записей: 363 | Зарегистр. 07-08-2002 | Отправлено: 15:52 26-06-2003 | Исправлено: olsufr, 15:56 26-06-2003
DStream

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
olsufr

Цитата:
А какие вещи стоит писать на С,
а какие - нет и их тогда лучше на Перле писать?
Может какие есть примеры из практики?  

Ну, к примеру, ежели у тебя сложнейшая какая-то обработка изображения производится. Хотя собственно в таких случаях достаточно сделать библиотеку и вызывать нужные обработки из того же перла.
Аналогично - если дело касается не скорости, а например сокрытия исходного кода (алгоритмики).
Где-то мне попадалось такое: "...наш чат переписан на С и стал работать быстрее..."
 
Хотя возможность быстрой "поправки" скриптов и "генеральная линия" серьезно перевешивают в сторону перла. Особенно когда дело касается арендованного хостинга, где может быть недоступен компилятор, да и вообще точной информации о операционке нет и не факт, что завтра ее не сменят без предупреждения.

Всего записей: 605 | Зарегистр. 03-05-2003 | Отправлено: 16:25 26-06-2003
quesejodan

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
olsufr,
 
 
 
DStream полностью прав.
Несмотря на то, что "C" работает быстрее, писать на нём CGI мягко говоря неразумно..
Для перла, ПХП и Java есть всякие суровые опции кэширования и тд и тп, что очень помогает в скорости, а разработка на них по сравнению с "C" чуть-ли не в 10-ки раз легче.
 
Один из случаев когда таки С лучше, это когда делаешь что-то для сервера который не твой (то есть никаких глобальных опций веб сервера поменять не можешь), очень загружен, и неоптимизирован под perl/php/.... . Тогда С-шные CGI очень кстати...  

Всего записей: 32 | Зарегистр. 10-06-2003 | Отправлено: 16:52 26-06-2003
DStream

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
quesejodan

Цитата:
Один из случаев когда таки С лучше, это когда делаешь что-то для сервера который не твой (то есть никаких глобальных опций веб сервера поменять не можешь), очень загружен, и неоптимизирован под perl/php/.... . Тогда С-шные CGI очень кстати...  

Я бы даже сформулировал так: когда производительность/нагрузка настолько критичны, что пишется своя узкоспециализированная штуковина вместо apache. Так как по-моему выигрыш по производительности при переписывании perl-скриптов на с-программы не будет настолько уж заметен по сравнению с заменой универсального апача на что-то узкозаточенное, что естественно будет писаться на С и тогда сам бог велел остальное писать как составную часть этой проги.
 
Кстати писать:  
Код:
printf("Content-Type: text/html\n\n");
printf("<html><body><h1>Hello World!</h1></body></html>");  
не есть хорошо, т.к. printf тащит за собой столько всего...

Всего записей: 605 | Зарегистр. 03-05-2003 | Отправлено: 17:12 26-06-2003
quesejodan

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DStream, я не о том...
Такие случаи тоже конечно же есть .. только скажем в вебе они редко встречаются,
 обычно всё таки на сам веб нагрузку по процессингу чего-либо не кладут..
 
А, например, если хостишься у какого-нить провайдера, который имеет свои настройки апача, и при том офигенную нагрузку (куча клиентов).  
И скажем твои перловые скрипты не кэшируются, долго пускаются и тд и тп, а тебе нужно чтоб всё-таки тормоза помене были...
Тогда помогает писать на С.

Всего записей: 32 | Зарегистр. 10-06-2003 | Отправлено: 17:42 26-06-2003
olsufr



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DStream, quesejodan, спасибо.
 
 
DStream
Цитата:
Кстати писать:  

Код:
printf("Content-Type: text/html\n\n");  
printf("<html><body><h1>Hello World!</h1></body></html>");
 
не есть хорошо, т.к. printf тащит за собой столько всего...

А каким спосбом эффективнее всего организовать вывод
многострочного текста?
 
Насколько муторно организовать совместную работу С-программ и PHP-скрипта?
Имеется ввиду для того, кто арендует виртуальный хостинг,
а не для администратора сервера.

Всего записей: 363 | Зарегистр. 07-08-2002 | Отправлено: 18:44 26-06-2003
olsufr



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DStream
Цитата:
по-моему выигрыш по производительности при переписывании perl-скриптов на с-программы не будет настолько уж заметен  
Неужели? Получается, что высокая скорость работы CGI-скриптов написанных на С это миф?
 
 
quesejodan
Цитата:
Несмотря на то, что "C" работает быстрее, писать на нём CGI мягко говоря неразумно..  
Для перла, ПХП и Java есть всякие суровые опции кэширования и тд и тп, что очень помогает в скорости, а разработка на них по сравнению с "C" чуть-ли не в 10-ки раз легче.  
А возможно ли, из исходников Перла и ПХП стянуть нужные функции и применить (естественно обработать ручками перед этим) в собственной С-программе ?

Всего записей: 363 | Зарегистр. 07-08-2002 | Отправлено: 15:52 27-06-2003 | Исправлено: olsufr, 15:58 27-06-2003
quesejodan

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
olsufr,
отвечу сразу на 2 вопроса.
 
1) высокая скорость запуска отдельной программы это не миф.
Другой вопрос, что если пишешь на С без какой-либо инфраструктуры, то есть без каких-нить C-Server Pages и тд итп, то самому придётся писать и механизм кэширования скрипта в памяти и тд. Ну или сервер как-нить долго и геморно подстраивать.
 
Далее, например перл силён немеряно своими regexp ами и тд. Я сумлеваюсь, что на C так же эфективно напишешь многие функции.
 
Ещё далее. Смотри всегда не только на performance, но на price/performance.
Сделать что-либо на perl, в разы легче чем на C. Если ты пишешь что-либо объёмное, то тебе гораздо дешевле написать это на перле скажем и купить машину помощнее...
 
Просто в тему, вчера был на Оракловском семинаре, там обсуждалось много всяких вещей и в какой-то момент возник вопрос об оптимизации, на что оракловец сказал:
"можно достаточно беспроблемно оптимизировать это на 90-95%, а вот чтобы оптимизировать на 98% нужно потратить кучу времени и ещё часто поддерживать и следить...а можно просто потратить лишние $2000 и купить чуть помощнее железо..
 Получится гораздо ДЕШЕВЛЕ."
Так что не увлекайся написанием CGI на С....
 
2) Из перла - точно можно, из ПХП - наверно можно, только вот - нужно ли?

Всего записей: 32 | Зарегистр. 10-06-2003 | Отправлено: 16:16 27-06-2003
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » CGI-скрипты на языке C


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru