<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0">
<channel>
<title>Форум ApacheDev : Разработка : Создание модулей для Apache 2.*</title>
<link>http://apachedev.ru/forum</link>
<description> Форум ApacheDev</description>
<language>en</language>
<docs>http://backend.userland.com/rss</docs>
<item>
<title>Проблемы с вызовами конструкторов/деструктор С++ при разработке модуля in Разработка : Создание модулей для Apache 2.*</title>
<link>http://apachedev.ru/forum/viewtopic.php?pid=653#653</link>
<guid isPermaLink="false">653@http://apachedev.ru/forum</guid>
<description>Topic: Проблемы с вызовами конструкторов/деструктор С++ при разработке модуля

Message: Прочтите http://apachedev.ru/forum/viewtopic.php?id=3В этой книге есть вся интересующая вас информация.
</description>
<pubDate>Sat, 17 Jan 2009 19:15:48 +0300</pubDate>
</item>
<item>
<title>Новая книга про создание моделей для Apache in Разработка : Создание модулей для Apache 2.*</title>
<link>http://apachedev.ru/forum/viewtopic.php?pid=652#652</link>
<guid isPermaLink="false">652@http://apachedev.ru/forum</guid>
<description>Topic: Новая книга про создание моделей для Apache

Message: Эту книгу можно почитать онлайн:http://www.dleex.com/read/?42118 (откроется в этом же окне)
</description>
<pubDate>Wed, 14 Jan 2009 16:07:45 +0300</pubDate>
</item>
<item>
<title>Задача по созданию модуля (Функциональность RapidShare) in Разработка : Создание модулей для Apache 2.*</title>
<link>http://apachedev.ru/forum/viewtopic.php?pid=651#651</link>
<guid isPermaLink="false">651@http://apachedev.ru/forum</guid>
<description>Topic: Задача по созданию модуля (Функциональность RapidShare)

Message: Здравствуйте.Описание задачи:Существует система, по доставке контента в виде медиа-файлов пользователям.Схема: Web-server - содержит сайт с системой авторизации.MySQL - БД в которой хранятся учетные записи пользователей и данные системы.Прочие сервера - отвечающие за доставку файлов (сервера хранения и отдачи):Пользователь при просмотре страниц Web-сервера получает те или иные ссылки на скачку с этих серверов,например - http://down1.server/?id=832947230sdkfh здесь - id есть временный идентификатор какого то файла в структуре каталогов серверов хранения и отдачиСоответствие id и конкретного файла задается в БД MySQL. Когда и как, пока не обсуждается.Пользователи БД:3 типа пользователей: vip (в единственном числе), user, гость.ГЛАВНОЕ ТРЕБОВАНИЕ:Управлять пропускной способностью канала во время скачивания в зависимости от типа пользователя и загруженности канала в целом.Обеспечить выполнение следующих условий:- если качает vip, то отдавать ему ширину канала на столько на сколько широкий он у него, урезая в то же время всех остальных качающих users и гостей (вплоть до какого-то минимального значения). Докачка поддерживается. Скачивание множества объектов в множество потоков поддерживается.- если качает гость: позволять скачивать только 1 объект в 1 поток в единицу времени. Докачка не поддерживается. Ограничение канала из настроек в какую-либо величину, например 100кБайт/сек.- если качает User: позволять скачивать множество объектов (но не более определенной величины), в несколько потоков на объект (не более определенной величины), докачка поддерживается. Ограничение на суммарную пропускную способность отдачи от всех закачек в данный момент равно какой-либо величине, например 250кБайт/сек.Очевидно, что решение лежит в области создания собственного модуля Apache. Имеет место быть аналогичный модуль по управлению пропускной способностью и трафиком - имя ему mod_cband. Его разработка прекращена, но есть исходники.При решении данной задачи в контексте описанного, очевидно, что модуль должен взаимодействовать с БД MySQL, что решаемо с помощью функций APR. Драйвер для доступа к MySQL из APR распространяется отдельно в виде исходников.Требования к модулю:Модуль необходим для платформы Windows и FreeBSD.Должен поддерживать настройку в виде директив http.conf и/или .htaccess.Точные параметры настройки определяются в процессе разработки.Кто знает как решить задачу, кому интересно, кто имеет возражения и видит свое решение задачи - пишите в ICQ 476201644, или на e-mail: ean.garbage.mail{sobak)mail(dot]ruPS. и кто хочет заработать или помочь в разработке.С уважением UNKOWN212.
</description>
<pubDate>Wed, 14 Jan 2009 16:02:56 +0300</pubDate>
</item>
<item>
<title>О времени жизни переменных в модулях in Разработка : Создание модулей для Apache 2.*</title>
<link>http://apachedev.ru/forum/viewtopic.php?pid=602#602</link>
<guid isPermaLink="false">602@http://apachedev.ru/forum</guid>
<description>Topic: О времени жизни переменных в модулях

Message: Память нужна для динамической работы. Не уверен, что после выделения её под конфиг она не копируется в область памяти каждого процесса сервера. В любом случае это не совсем кошерный метод.Решил выделять ресурсы в каждом процессе отдельно. Небольшие потери ресурсов, зато конкретная стабильность.
</description>
<pubDate>Wed, 23 Apr 2008 17:44:49 +0400</pubDate>
</item>
<item>
<title>О времени жизни переменных в модулях in Разработка : Создание модулей для Apache 2.*</title>
<link>http://apachedev.ru/forum/viewtopic.php?pid=601#601</link>
<guid isPermaLink="false">601@http://apachedev.ru/forum</guid>
<description>Topic: О времени жизни переменных в модулях

Message: тебе Нужна общая память для всех модулей или только для одного!? Если общая память для одного модуля то выделяй ее в&#160;  функциях создания и слияния;module my_module = {STANDARD20_MODULE_STUFF,my_create_dir_conf, /* Создание конфигурации каталога */my_merge_dir_conf, /* Слияние конфигураций каталогов */my_create_svr_conf, /* Создание конфигурации сервера */my_merge_svr_conf, /* Слияние конфигураций серверов */my_cmds, /* Директивы конфигурации */my_hooks}; а вот если глобально видели все модули  то в структуре http://apachedev.ru/2006/06/10/strukturyi-dannyih-apache-request_rec/ есть переменная apr_table_t *notes; через нее можно передавать
</description>
<pubDate>Tue, 22 Apr 2008 14:47:39 +0400</pubDate>
</item>
<item>
<title>Глобальная переманная in Разработка : Создание модулей для Apache 2.*</title>
<link>http://apachedev.ru/forum/viewtopic.php?pid=600#600</link>
<guid isPermaLink="false">600@http://apachedev.ru/forum</guid>
<description>Topic: Глобальная переманная

Message: nre, отпишись если разобрался с глобальными переменными.
</description>
<pubDate>Tue, 15 Apr 2008 11:44:58 +0400</pubDate>
</item>
<item>
<title>О времени жизни переменных в модулях in Разработка : Создание модулей для Apache 2.*</title>
<link>http://apachedev.ru/forum/viewtopic.php?pid=599#599</link>
<guid isPermaLink="false">599@http://apachedev.ru/forum</guid>
<description>Topic: О времени жизни переменных в модулях

Message: Интересное наблюдение сделал. Выделял большие объёмы памяти и смотрел процессы по используемым ресурсам.Выделенная память действительно НЕ пропадает на протяжении всего времени жизни сервера, но через минуту apr_pool_userdata_get уже данных получить не может, потому что запрос обрабатывает уже другой поток сервера. Значит нужно только как-то определять область памяти доступную всем потокам. http://httpd.apache.org/docs/2.0/develo &#8230; afety.html - здесь написано что необходимо использовать функции apr_atomic_* и apr_thread_mutex_*. Так же нашёл группу функций apr_shm_*, но не могу понять чем и как пользоваться, чтобы выделить раздяемую потоками память.
</description>
<pubDate>Mon, 14 Apr 2008 05:40:36 +0400</pubDate>
</item>
<item>
<title>О времени жизни переменных в модулях in Разработка : Создание модулей для Apache 2.*</title>
<link>http://apachedev.ru/forum/viewtopic.php?pid=597#597</link>
<guid isPermaLink="false">597@http://apachedev.ru/forum</guid>
<description>Topic: О времени жизни переменных в модулях

Message: Некорректно я поставил вопрос.Немного разобрался в проблеме, читайте следующий комментарий.Интересную картину наблюдаю при работе с переменными, время жизни которых не ограничивается одним request или connection циклом.Пробовал разные способы выделения динамической переменной через apr_palloc (c apr_pool_userdata_set и без) и в пул модуля, и в главный пул сервера, и с использованием мутекса, да даже просто через malloc в памяти, не связывая ни как с пулом соответственно. Как бы не пробовал - переменные живут только небольшое время. Если обращений к серверу нет ~минуту то ссылка обязательно обнуляется в любом случае. Хотя пул не пропадает вроде. Подскажите пожалуйста какая логика работы сервера? Почему выделенная память пропадает даже из глобального пула после некоторого времени застоя?
Код:static int test_handler(request_rec *r)
{
    int *bb;
    void *dd = NULL;
    
    if (apr_pool_userdata_get (&#38;dd, &#34;my:data&#34;, r-&#62;server-&#62;process-&#62;pool) != APR_SUCCESS ) {
        jdc_echo_debug(&#34;data get bad&#34;);
    } else {
        jdc_echo_debug(&#34;data get ok&#34;);
        bb = (int*)dd;
    }
        
    if (dd == NULL) {
        echo_debug(&#34;dd == NULL&#34;);
        bb = (int*) apr_palloc (jdc_pglobal, sizeof (int));
        *bb = 17;
        dd = (void*)bb;
        apr_pool_userdata_set (dd, &#34;my:data&#34;, NULL, r-&#62;server-&#62;process-&#62;pool);
    } else {
        *bb += 1;
        dd = (void*)bb;
    }
    echo_debug(&#34;bb = &#34;);
    echo_debug_simple_i(*bb);
    
    
    r-&#62;content_type = &#34;plain/text&#34;;
    
    ap_rputs(&#34;OK&#34;, r);
    
    echo_debug(&#34;All OK&#34;);
    
    return OK;
}
Вот вывод:DEBUG [16:49:55] : data get okDEBUG [16:49:55] : dd == NULLDEBUG [16:49:55] : bb = 17DEBUG [16:49:55] : All OKDEBUG [16:50:00] : data get okDEBUG [16:50:00] : bb = 18DEBUG [16:50:00] : All OKDEBUG [16:50:04] : data get okDEBUG [16:50:04] : bb = 19DEBUG [16:50:04] : All OKDEBUG [16:51:30] : data get okDEBUG [16:51:30] : dd == NULLDEBUG [16:51:30] : bb = 17DEBUG [16:51:30] : All OK
</description>
<pubDate>Sun, 13 Apr 2008 09:59:13 +0400</pubDate>
</item>
<item>
<title>Дериктива конфигурации in Разработка : Создание модулей для Apache 2.*</title>
<link>http://apachedev.ru/forum/viewtopic.php?pid=571#571</link>
<guid isPermaLink="false">571@http://apachedev.ru/forum</guid>
<description>Topic: Дериктива конфигурации

Message: Как в модуле получить доступ к директиве&#160; &#34;DocumentRoot&#34; ?
</description>
<pubDate>Thu,  7 Feb 2008 08:15:15 +0300</pubDate>
</item>
<item>
<title>Работа с MySQL через apr in Разработка : Создание модулей для Apache 2.*</title>
<link>http://apachedev.ru/forum/viewtopic.php?pid=543#543</link>
<guid isPermaLink="false">543@http://apachedev.ru/forum</guid>
<description>Topic: Работа с MySQL через apr

Message: Подскажите в какой последовательности использовать функции apr_dbd_ для корректной работы с MySQL?&#160; И как заполнять&#160; &#160;apr_dbd_driver_t ?
</description>
<pubDate>Mon, 24 Dec 2007 16:35:55 +0300</pubDate>
</item>
<item>
<title>Apache и IPC in Разработка : Создание модулей для Apache 2.*</title>
<link>http://apachedev.ru/forum/viewtopic.php?pid=540#540</link>
<guid isPermaLink="false">540@http://apachedev.ru/forum</guid>
<description>Topic: Apache и IPC

Message: Решил все таки переписать модуль под 2-й апач, Создаю Shared Memory для хранения данных общих всех процессов, возникает вопрос есть ли в апаче 2 реализация семафоров или использовать системные семафоры?если существует то ткните мордой.
</description>
<pubDate>Thu, 20 Dec 2007 12:42:33 +0300</pubDate>
</item>
<item>
<title>Запрос POST in Разработка : Создание модулей для Apache 2.*</title>
<link>http://apachedev.ru/forum/viewtopic.php?pid=534#534</link>
<guid isPermaLink="false">534@http://apachedev.ru/forum</guid>
<description>Topic: Запрос POST

Message: Если идет большой поток данных, а если весь запрос POST не большой и укладывается в один пакет то как посмотреть тело запроса.
</description>
<pubDate>Tue, 11 Dec 2007 11:58:14 +0300</pubDate>
</item>
<item>
<title>Запрос POST in Разработка : Создание модулей для Apache 2.*</title>
<link>http://apachedev.ru/forum/viewtopic.php?pid=533#533</link>
<guid isPermaLink="false">533@http://apachedev.ru/forum</guid>
<description>Topic: Запрос POST

Message: Не совсем понял, что ты имеешь в виду.Поскольку я пишу на C++, то делаю так:&#160; class ap_source: public boost::iostreams::source {public:&#160; &#160; ap_source(request_rec *r): rec_(r) {&#160; &#160; &#160; &#160; ap_setup_client_block(rec_, 0);&#160; &#160; &#160; &#160; ap_should_client_block(rec_);&#160; &#160; &#160; &#160; &#160; &#160; }&#160; &#160; std::streamsize read(char *s, std::streamsize n) {&#160; &#160; &#160; &#160; &#160; &#160; return ap_get_client_block(rec_, s, n);&#160; &#160; }private:&#160; &#160;request_rec *rec_;};boost::iostreams::stream&#60;ap_source&#62; in(r); // где r - указатель на структуру request_recТеперь можно читать данные с помощью стандартных средств работы с потоками C++, например:std::string str;std::getline(in, str);
</description>
<pubDate>Fri,  7 Dec 2007 12:19:46 +0300</pubDate>
</item>
<item>
<title>Запрос POST in Разработка : Создание модулей для Apache 2.*</title>
<link>http://apachedev.ru/forum/viewtopic.php?pid=532#532</link>
<guid isPermaLink="false">532@http://apachedev.ru/forum</guid>
<description>Topic: Запрос POST

Message: Вроде понял нужно создать входной фильтр!!  Для обработки тела запроса!!
</description>
<pubDate>Thu,  6 Dec 2007 20:04:13 +0300</pubDate>
</item>
<item>
<title>Запрос POST in Разработка : Создание модулей для Apache 2.*</title>
<link>http://apachedev.ru/forum/viewtopic.php?pid=531#531</link>
<guid isPermaLink="false">531@http://apachedev.ru/forum</guid>
<description>Topic: Запрос POST

Message: Нигде :-) См. функции:ap_setup_client_blockap_should_client_blockap_get_client_block
</description>
<pubDate>Thu,  6 Dec 2007 09:42:08 +0300</pubDate>
</item>
</channel>
</rss>
