|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
Добрый день всем! Для нового проекта решил освоить FB. Вопросы настройки сервера решились быстро (debian8), код пишу на чистом С в аналогичной среде на debian. Пакеты содержащие все необходимое (на тему ibase.h и libfbclient.so) проинсталил. Простите.. по парюсь со следующем: где взять исходники с примерами на голом СИ? Не знаю кому как, но мне как-то легче воспринимается. А гугление на вскидку, выдает все что угодно только не эти экзэмплы. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 11:55 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
pietro_888, в корневой папке Firebird examples/api/ ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 12:07 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
Роюсь вот в примерах.. Не прошу решить задчу) прошу подскажите с общим курсом. Был у меня проектик, на чистом С. Мне так надо. Люблю этот язык, и кодить на нем люблю.. и быстродействие фантастическое. В том проекте я слепил взаимодействие с MySQL. Вот что мне нравилось, так это простота несмотря на "низкоуровневость". Сначала делаю SELECT, потом: res = mysql_store_result(mysql); numrows = mysql_num_rows(res); numfields = mysql_num_fields(res); И уже все понятно: сколько строк.. полей, и мне СЛАВА БОГУ ничего явно не требовалось указывать, выделять память вручную. Разворачивай себе.. пока не упрешься в конец цикла по numrows или numfields, а память выделяется автоматом сколько надо при выполнении запроса. Ну типа: printf("%s" , sqlrow[n]); - и всего делов, грубо говоря. Ну, по задаче.. В Firebird мы полезли ради раздаваемых по клиентским приложениям сигналам по установке триггеров. Моя часть на том же С. Т.к - быстродействие, сооружаем hi-load. То что я туплю пока.. это абсолютно точно. Несколько дней потуплю еще. Но подскажите прямо - это я туплю, или написание С-кода на API напоминает сборку на ассемблере?? Я уже в паре мест нашел требование вручную указать размер массива, т.е его надо сначала спросить у базы, т.к я не знаю заранее и знать не хочу) размерность таблицы. Ну точнее хочу, но абсолютно не хочу переписывать в 100 местах потом код при модификации самой таблицы.. Ну или.. опять таки я возможно туплю но в найденном экземпле присутствует предварительное выделение памяти под данные, напр. sqlda->sqlvar[2].sqldata = (char *) phone_ext; и потом еще вручную нуль-терминировать конец строки: phone_ext[sqlda->sqlvar[2].sqllen] = '\0'; Т.е прежде чем я смогу нормально работать с проектом, придется соорудить свою прослойку "среднего уровня" . ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 13:13 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
pietro_888опять таки я возможно туплю но в найденном экземпле присутствует предварительное выделение памяти под данные, напр. sqlda->sqlvar[2].sqldata = (char *) phone_ext; и потом еще вручную нуль-терминировать конец строки: phone_ext[sqlda->sqlvar[2].sqllen] = '\0'; ISC API и его примеры рассчитаны на то, что программа знает какие поля в базе. Поэтому если у тебя в базе поле "PHONE_EXT CHAR(10)", ты в программе просто объявляешь "char phone_ext[10];" и не паришься ни с каким терминированием. После этого вызов isc_dsql_fetch() автоматически заполняет твои переменные данными и ты работаешь с этими переменными, не тратя времени на дополнительные обращения к API для получения собственно данных. PS: MySQL API тоже так умеет, просто не каждый дочитает до нужного места. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 13:34 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
Так! Вас понял. Вот из того же экземпла: while ((fetch_stat = isc_dsql_fetch(status, &stmt, 1, sqlda)) == 0) //тут куча printf по этой строке isc_dsql_fetch - извлекает одну строку. Так ведь? Вероятно так же как аналогичные *fetch* в MySQL. Ранее я делаю sqlda = (XSQLDA *) malloc(XSQLDA_LENGTH(3)); - в рассчете допустим, что я точно знаю что хочу получить 3 поля. Но вот чего я не могу знать в общем случае в принципе, так это сколько будет строк. Более того, 2 последовательных одинаковых SELECTa могут вернуть разное количкство строк, т.к HI LOAD. (реально у меня 2-15 транзакций в секунду). В каком месте во всей этой системе запросов происходит выделение фактического объема памяти под результат запроса? Допустим 818 строк. или 1000. В момент isc_dsql_execute ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 14:03 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
pietro_888прежде чем я смогу нормально работать с проектом, придется соорудить свою прослойку "среднего уровня" . Хочешь - сооружай. Не хочешь - не сооружай. Раз у тебя "хайлоад" - придётся принять во внимание какой процент быстродействия твоя прослойка сожрёт во имя "не знаю заранее и знать не хочу". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 14:03 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
pietro_888В каком месте во всей этой системе запросов происходит выделение фактического объема памяти под результат запроса? Допустим 818 строк. или 1000. Результат получается и обрабатывается построчно. Нормальные люди не выделяют память под весь result set именно потому, что он может быть и 100500 записей, что сожрёт всё ОЗУ и обрушит программу с ООМ. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 14:06 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
pietro_888, в качестве примеров можно посмотреть еще исходники IBX и FIBPlus. Они на pascal, но будет понятно. Из C - IBPP, и что-то там еще. Посмотрел у себя на сайте - там какое-то старье, надо бы подновить информацию... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 14:10 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
kdvв качестве примеров можно посмотреть еще исходники IBX и FIBPlus. Это если только в качестве примеров "как делать не нужно, хоть и можно". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 14:18 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
>>во имя "не знаю заранее и знать не хочу". Согласен с Вами, это несколько эмоционально написал. >>Нормальные люди не выделяют память под весь result set А я думал.. под это надо представлять с каким ОЗУ имеешь дело и использовать если что опцию LIMIT в запросе. Конечно ПО тестируется на реальном железе. >>Результат получается и обрабатывается построчно. Не понял. Т.е при каждом isc_dsql_fetch запрос к базе? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 14:32 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
pietro_888Т.е при каждом isc_dsql_fetch запрос к базе? Получил запись - сделал с ней что хотел - выкинул - пошёл за следующей. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 14:35 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
pietro_888 >>Результат получается и обрабатывается построчно. Не понял. Т.е при каждом isc_dsql_fetch запрос к базе? После обработки всех записей буфер освобождается ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 14:36 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
Дошло, понял. У меня С-код будет либо на одной машине с FB крутится либо если на разных то соединяться прямым гигабитным проводом. Так что вопросы траффика не стоит.. Далее. SELECT в данных примерах делается в обертке транзакции. Результат атомарен пока я не закрою транзакцию? Получается, память так-таки выделяется, но на сервере?? Товарищи спасибо за дружественность, с вашей помошью кое что для начала понял, для старта. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 14:45 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
pietro_888 Так что вопросы траффика не стоит.. pietro_888 Получается, память так-таки выделяется, но на сервере?? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 14:50 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
>>Зачем выделять память под 1000 записей, если одновременно идет работа только с одной? Да ХЗ если честно.. привык мыслить в таком контексте. Надо отправить в аппарат 1000 идентов - извлек 1000 и пулеметной очередью выпустил по сети. А действительно нефиг в память копировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 14:54 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
pietro_888Получается, память так-таки выделяется, но на сервере?? - на сервере - зависит от запроса (метода доступа, которым он выполняется). - дальше сервер отправляет клиенту пакеты по сети. Обычно - сколько записей влезет в пакет, столько и влезет. - клиентская часть получает записи этими же пакетами. И на каждый fetch из API прикидывается, что получает запись с сервера, а на самом деле достает очередную из пакета. Пакет кончился - принимает следующий пакет, и т.д. Бывают запросы, когда в пакете по 1 записи. Но это специфика. На клиенте складывать записи в буфер или не складывать - зависит от задачи. Если обработка построчная, можно не складывать. Если надо по выборке елозить туда-сюда (например, показывать клиенту), значит надо буферизировать. как-то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 15:52 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
C mysql есть 2 режима работы курсора. Первый - драйвер вычитывает весть резалтсет на клиента, распределяя под это память самостоятельно, а потом отдаёт по стольку записей, сколько запросил, но уже с клиента. И Второй - когда результат выполнения остаётся на сервере, и за каждой записью драйвер туда отдельно лезет. Вот именно по второму режиму и работает птичка. Естественно есть большие отличия что и как именно хранится на сервере у мускула и птички в этом режиме. Но с точки зрения клиента грубо можно рассматривать примерно так. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2020, 17:42 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
Ну да, у мускуля просто выбора нет с историческим отсутствием транзакций и блокировочной архитектурой: не вычитаешь весь резалт-сет, он либо будет неконсистентным, либо поставит весь сервер колом. Версионные движки уже появились, но от наследия уже не избавиться. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2020, 17:53 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
Tonal результат выполнения остаётся на сервере, и за каждой записью драйвер туда отдельно лезет. Вот именно по второму режиму и работает птичка. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2020, 18:00 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
TonalВот именно по второму режиму и работает птичка. что за фантазии... драйвер кэширует столько данных, сколько ему надо. Например, в IBX/FIBPlus есть компоненты, которые вычитывают по одной записи, а есть компоненты, которые буферизируют считываемые данные. А есть технология брифкейз, когда ClientDataSet вообще сразу вычитывает весь резалтсет с сервера. Обычно так работают stateless-системы. Как там конкретный .net драйвер написан - это его личное дело. "Птичка" к драйверу вообще никаким боком, в данном случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2020, 03:17 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
kdv TonalВот именно по второму режиму и работает птичка. что за фантазии... драйвер кэширует столько данных, сколько ему надо. Например, в IBX/FIBPlus есть компоненты, которые вычитывают по одной записи, а есть компоненты, которые буферизируют считываемые данные. А есть технология брифкейз, когда ClientDataSet вообще сразу вычитывает весь резалтсет с сервера. Обычно так работают stateless-системы. Как там конкретный .net драйвер написан - это его личное дело. "Птичка" к драйверу вообще никаким боком, в данном случае. Не знаю, что за "брифкейз", но речь шла (я так понял) о том, что клиент (isc api fbclient) заставляет за каждой записью делать отдельный запрос на сервер, и нет возможности сделать запрос "Сервер, верни мне сразу 100 записей резалтсета (или сколько есть) одним пакетом!" ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 22:08 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
Не дело API лезть в низкоуровневый обмен клиента и сервера. Программа должна просто спрашивать "дай мне следующую запись" (или "дай мне Х записей"), а что при этом происходит между клиентом и сервером это их интимное дело. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 22:14 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov что при этом происходит между клиентом и сервером это их интимное дело. Но управлять размерами буфферов, т.е. памятью, иногда очень полезно и наверху. Бывает гораздо лучше выделить десяток мегабайт и одним пакетом с сервера стащить все тысячи и тысячи записей для отчёта, чем делать тысячи фетчей (которые вызовут хз сколько сетевых запросов). На медленной сети это особенно важно. Через спутник, например. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 22:24 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
YuRock Бывает гораздо лучше выделить десяток мегабайт Клиент же - нифига. Он не знает, сколько записей может быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 22:27 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
YuRockБывает гораздо лучше выделить десяток мегабайт и одним пакетом с сервера слишком много вас таких, желающий вытащить "десяток мегабайт". Никакой памяти не напасёшся. А потом, например, при SORT создается временный файл, который ОС пытается разместить в памяти полностью. А ты его затем утаскиваешь. Впрочем, заканчивается это всё точно так же - приходит 10-20 таких клиентов, каждому подай отчет 2-5 гиг, в результате память кончается, и всё это тащится на клиента с диска. А потом жалуются. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 22:36 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
YuRock, ничего, что клиент сам себе один любимый, а у сервера их таких х\з сколько в данный момент ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 22:42 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
kdv YuRockБывает гораздо лучше выделить десяток мегабайт и одним пакетом с сервера слишком много вас таких, желающий вытащить "десяток мегабайт". Никакой памяти не напасёшся. А потом, например, при SORT создается временный файл, который ОС пытается разместить в памяти полностью. А ты его затем утаскиваешь. Впрочем, заканчивается это всё точно так же - приходит 10-20 таких клиентов, каждому подай отчет 2-5 гиг, в результате память кончается, и всё это тащится на клиента с диска. А потом жалуются.И к чему это? Сортировка должна быть произведена полностью в любом случае - все я записи профетчил или нет. Даже если бы это было не так - не вижу смысла делать многомегабайтные запросы и потом, не фетча записи, закрывать запрос. Это странные клиенты. Хотя всякая логика бывает, конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 22:46 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
hvlad YuRock, ничего, что клиент сам себе один любимый, а у сервера их таких х\з сколько в данный момент ? "верни следующую запись" добавить возможность запроса "верни следующие N записей или сколько осталось, если их меньше N". Или ты на память намекаешь? Если да - то это полностью на совести прикладных программистов будет, ясное дело. Они могут как существенно снизить время получения данных, так и переполнить память сервера, что увеличит это время. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 22:53 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
YuRock, речь о том, что нет универсально хороших решений. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 23:13 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
hvlad, Вот, к примеру, есть отчет, который возвращается запросом, результат которого будет 10000 записей 10Мб. Это на 100 клиентов - 1Gb всего на буффер для этого. При условии, что все одновременно захотят. Вот у меня клиент есть ~150 точек, большинство из которых - на спутнике (и ничего другого нет лучшего). Скорость > 10Мбит, но пинг - 9 секунд. Получить такой резалтсет в таких условиях можно было бы за 20 секунд. И серверу было бы лучше - отдал сразу всё и забыл. А сейчас за такую задачу даже браться нет смысла - не дождутся, приходится придумывать другие архитектурные решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 23:14 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
hvlad YuRock, речь о том, что нет универсально хороших решений. Потому надо давать больше свободы прикладным программистам - они знают (могут знать), как в их случае может быть лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 23:15 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
YuRock hvlad, Вот, к примеру, есть отчет, который возвращается запросом, результат которого будет 10000 записей 10Мб. Это на 100 клиентов - 1Gb всего на буффер для этого. При условии, что все одновременно захотят. YuRock Вот у меня клиент есть ~150 точек, большинство из которых - на спутнике (и ничего другого нет лучшего). Скорость > 10Мбит, но пинг - 9 секунд. Получить такой резалтсет в таких условиях можно было бы за 20 секунд. И серверу было бы лучше - отдал сразу всё и забыл. YuRock А сейчас за такую задачу даже браться нет смысла - не дождутся, приходится придумывать другие архитектурные решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 23:31 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
YuRock Потому надо давать больше свободы прикладным программистам - они знают (могут знать), как в их случае может быть лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 23:32 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
Только смысла в этом никакого. Запрос-то на фетч с сервера отправляется ещё до того, как клиентский буфер резалтсета опустеет, не так ли?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 23:36 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, ну да, как первый байт получили - сразу спрашиваем новый пакет. Или нет так ? А как ? И как тут влияет размер пакета ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 23:41 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
hvlad Ты действительно считаешь, что сеть в состоянии мгновенно проглотить 100 пакетов по 10МБ на 100 адресов ? hvlad Ты уверен, что сервер (спутник) не отдавал бы их по-очереди в таких условиях ? Даже если и так - это было бы жизнеспособно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 23:55 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
hvlad YuRock Потому надо давать больше свободы прикладным программистам - они знают (могут знать), как в их случае может быть лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 23:59 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
YuRock hvladТы действительно считаешь, что сеть в состоянии мгновенно проглотить 100 пакетов по 10МБ на 100 адресов ? YuRock hvladТы уверен, что сервер (спутник) не отдавал бы их по-очереди в таких условиях ? Даже если и так - это было бы жизнеспособно.Первый получит своё через 10 сек, второй - через 20, 10-ый - через 100 и т.д. Жизнеспособно ? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 00:04 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
YuRock hvlad Firebird разрешает в некоторой степени управлять размером сетевого пакета (логического, есс-но) См. TcpRemoteBufferSize PS Долгий пинг так или иначе себя покажет ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 00:07 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
hvlad Так она же не гигабитная ? hvlad Первый получит своё через 10 сек, второй - через 20, 10-ый - через 100 и т.д. Жизнеспособно ? А даже если 10 одновременно - это всего лишь 100 секунд - это реальное время. Сколько времени займет поочерёдный фетч 10к записей - я даже считать не хочу. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 00:20 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
hvlad YuRock пропущено... Я не в курсе, если это возможно - хорошо, это похоже на решение проблемы долгого пинга. См. TcpRemoteBufferSize PS Долгий пинг так или иначе себя покажет Там вроде лимит в 32 кб. Легко посчитать во мя для моего примера: 10000/32 = 300. 3 тысячи секунд. Это - НЕ жизнеспособно. Но всё равно спасибо, это может ускорить некоторые кейсы в несколько раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 00:30 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
YuRockНа сервере - именно гигабитная сервер в вакууме? Ты о чем вообще? Допустим, на сервере сеть гигабитная, а у клиента модем gprs 3g. Дальше что? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 00:30 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
kdv YuRockНа сервере - именно гигабитная сервер в вакууме? Ты о чем вообще? Допустим, на сервере сеть гигабитная, а у клиента модем gprs 3g. Дальше что?Сервер что, со всеми клиентами работает по скорости самого медленного (тонкого) клиента? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 00:33 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
Или по очереди? Я не понимаю, на что вы намекаете. Я понимаю так, грубо говоря: если сервер гигабитный, и у него 10 клиентов 100-мегабитных, то сервер может в секунду посылать по 100 мегабит каждому клиенту, а вот если клиентов 11 - то уже меньше. Возможно, я заблуждаюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 00:37 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
hvladну да, как первый байт получили - сразу спрашиваем новый пакет. Или нет так ? А как ? И как тут влияет размер пакета ? Нууу... Например, можно завести какую-нибудь переменную и при каждом фетче проверять: если количество сообщений в буфере упало ниже её значения - посылать новый запрос. Главное дать этой переменной имечко позаковыристее, чтобы никто не догадался к чему она служит. Например, rrq_reorder_level. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 01:00 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
YuRock hvladак она же не гигабитная ? Или ты надеешься, что все промежуточные уровни будут буферизовать эти гигабайты ? YuRock Сколько времени займет поочерёдный фетч 10к записей - я даже считать не хочу. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 01:29 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, иди к Джимми поплачь. PS rrq_reorder_level - абсолютно нормальное имя. Если читать уметь. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 01:30 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
YuRock если сервер гигабитный, и у него 10 клиентов 100-мегабитных, то сервер может в секунду посылать по 100 мегабит каждому клиенту Это так не работает. И не будет работать никогда. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 01:32 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
hvlad YuRock если сервер гигабитный, и у него 10 клиентов 100-мегабитных, то сервер может в секунду посылать по 100 мегабит каждому клиенту Это так не работает. И не будет работать никогда. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 02:05 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
hvlad Скорость передачи данных определяется самым медленным звеном. hvlad Нет никакого поочерёдного фетча. Не читай бред. Я и не говорю, что на каждую запись отдельный пакет. Но на размер пакета 32кб уже делил - всё-равно ужасно на долгом пинге. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 02:08 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
YuRock Я и не говорю, что на каждую запись отдельный пакет. Но на размер пакета 32кб уже делил - всё-равно ужасно на долгом пинге. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 07:42 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
Побурчу. 10000 строк - не бывает такого отчёта. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 09:36 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
Basil A. Sidorov А какой будет ужас, когда размер пакета FB всё равно превысит MTU ... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 09:42 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
Basil A. Sidorov А какой будет ужас, когда размер пакета FB всё равно превысит MTU ... скорее когда превысит window size YuRock Я и не говорю, что на каждую запись отдельный пакет. Но на размер пакета 32кб уже делил - всё-равно ужасно на долгом пинге. говоришь, как будто 10мб разом передаются по сети с таким пингом ничего не спасет, ты не сможешь утилизировать весь канал в одном соединении ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 09:44 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
YuRock, кто тебе мешает написать промежуточное звено которое так делает? Писать толстый клиент, который работает через спутник с огромнейшим пингом, мне кажется немного странным архитектурным решением. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 09:48 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
Симонов Денис YuRock, кто тебе мешает написать промежуточное звено которое так делает? Писать толстый клиент, который работает через спутник с огромнейшим пингом, мне кажется немного странным архитектурным решением. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 10:32 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
YuRockКого еще, если у него 10 клиентов? Именно их он и должен обслуживать Один клиент запросил миллион записей. Сервер забил весь канал фетчем этому клиенту. Остальные нервно курят, ожидая пока это дерьмо пролезет сквозь трубу. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 12:32 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov YuRockКого еще, если у него 10 клиентов? Именно их он и должен обслуживать Один клиент запросил миллион записей. Сервер забил весь канал фетчем этому клиенту. Остальные нервно курят, ожидая пока это дерьмо пролезет сквозь трубу.Я не понимаю, почему должно быть так, если толщина канала сервера в десятки-сотни раз толще, чем у этого клиента, запросившего миллион записей. Возможно, это особенность сервера Firebird, я нюансов не знаю, но верится неохотно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 14:02 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
YuRockтолщина канала сервера в десятки-сотни раз толще, чем у этого клиента 1. Откуда у сервера такой канал? 2. Это дерьмо будет накапливаться в месте где широкий канал становится узким. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 14:14 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Это дерьмо будет накапливаться в месте где широкий канал становится узким. Ну и что? Почему в это время нельзя обслуживать других клиентов? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 14:26 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
YuRockПочему в это время нельзя обслуживать других клиентов? Потому что обработка переполнения системного буфера при send() в общем случае нетривиальна и требует довольно хитровывернутого кода, который 30 лет назад никто просто не стал писать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 14:38 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov YuRockПочему в это время нельзя обслуживать других клиентов? Потому что обработка переполнения системного буфера при send() в общем случае нетривиальна и требует довольно хитровывернутого кода, который 30 лет назад никто просто не стал писать.Я не видел исходников. Но если без хитровывернутости, то в моём понимании это так: 1. Делаем select. 2. Если он вернул < 0, или FD_ISSET(exceptfds) - ошибка, всё. 3. Если 0, или !FD_ISSET(writefds) - ждём. 4. Иначе - send следующей порции. Мне кажется, при таком тривиальном алгоритме можно обслуживать других клиентов. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 14:56 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
Вот это "ждём" и "можно обслуживать" - взаимно несовместимы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 15:08 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Вот это "ждём" и "можно обслуживать" - взаимно несовместимы. Это тоже мне кажется странным, впрочем я не претендую на звание гуру работы с сетями. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 15:18 |
|
Ищу примеры на С
|
|||
---|---|---|---|
#18+
pietro_888, pietro_888Простите.. по парюсь со следующем: где взять исходники с примерами на голом СИ? посмотрите, например: firebird/examples/api
... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 15:58 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1560328]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
124ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
81ms |
get tp. blocked users: |
2ms |
others: | 259ms |
total: | 516ms |
0 / 0 |