Скорее всего именно он. Была еще проблема у vasketsov с подключением к проксиzed писал(а): Может это wininet так шутит, не знаю.
Разбивка выделения при закачке на части
Правила форума
Настоятельно рекомендуем ознакомиться с правилами раздела платных услуг ТУТ.
Настоятельно рекомендуем ознакомиться с правилами раздела платных услуг ТУТ.
- vdemidov
- Гуру
- Сообщения: 1687
- Зарегистрирован: 12 дек 2008, 13:10
- Откуда: Киев
- Благодарил (а): 191 раз
- Поблагодарили: 157 раз
Re: Разбивка выделения при закачке на части
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
-
zed
- Гуру
- Сообщения: 2888
- Зарегистрирован: 16 авг 2008, 20:21
- Благодарил (а): 89 раз
- Поблагодарили: 568 раз
Re: Разбивка выделения при закачке на части
Да, wininet во всём виноват: https://support.microsoft.com/en-us/kb/183110
Решается установкой максимального лимита на процесс:
Теперь надо придумать, куда это вкорячить, чтобы оно срабатывало до того, как выполнится хоть один запрос.
Решается установкой максимального лимита на процесс:
Код: Выделить всё
const
INTERNET_OPTION_MAX_CONNS_PER_SERVER = 73;
INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER = 74;
var
buf: ULONG;
res: Boolean;
begin
buf := 50;
res := InternetSetOption(nil, INTERNET_OPTION_MAX_CONNS_PER_SERVER, @buf, SizeOf(buf));
buf := 50;
res := InternetSetOption(nil, INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER, @buf, SizeOf(buf));
end.-
zed
- Гуру
- Сообщения: 2888
- Зарегистрирован: 16 авг 2008, 20:21
- Благодарил (а): 89 раз
- Поблагодарили: 568 раз
Re: Разбивка выделения при закачке на части
Пофиксил.zed писал(а):Решается установкой максимального лимита на процесс:
Всё-таки это лимит не соединений, а запросов. Установленных открытых соединений с сервером может быть больше, чем параллельных запросов из-за алиасов. Если у карты только один хост, без алиасов, то да, всё просто: один запрос = одно соединение. В противном же случае, соединений может быть до: (Число алиасов) * (Число MaxConnectToServerCount). Соединения держит WinInet для keep-alive запросов. Если соединения будут рваться после каждого запроса, то превышения соединений над запросами не будет.Simultaneous connections limit
Предлагаю назвать: Max simultaneous requests number / Макс число параллельных запросов. Для ясности, можно ещё подписать HTTP(S)-requests, вместо requests.
-
Tolik
- Гуру
- Сообщения: 2604
- Зарегистрирован: 28 янв 2011, 10:38
- Благодарил (а): 283 раза
- Поблагодарили: 587 раз
Re: Разбивка выделения при закачке на части
Как всё запутано...
Max simultaneous requests number - не годится, т.к. запросы не могут быть одновременными: запрос - это не длительный процесс (как сессия), а только отправленный пакет.
Думаю, всем будет проще, если использовать привычный Max connect to server count, что бы это ни значило...
Max simultaneous requests number - не годится, т.к. запросы не могут быть одновременными: запрос - это не длительный процесс (как сессия), а только отправленный пакет.
Думаю, всем будет проще, если использовать привычный Max connect to server count, что бы это ни значило...
-
zed
- Гуру
- Сообщения: 2888
- Зарегистрирован: 16 авг 2008, 20:21
- Благодарил (а): 89 раз
- Поблагодарили: 568 раз
Re: Разбивка выделения при закачке на части
Запрос вполне себе длительный процесс. Словосочетание довольно распространено:
http://serverfault.com/questions/75054/ ... -to-handle
https://docs.oracle.com/cd/E19857-01/82 ... index.html
Или ещё можно вот так: Max concurrent http(s)-requests number
http://serverfault.com/questions/75054/ ... -to-handle
https://docs.oracle.com/cd/E19857-01/82 ... index.html
Или ещё можно вот так: Max concurrent http(s)-requests number
-
zed
- Гуру
- Сообщения: 2888
- Зарегистрирован: 16 авг 2008, 20:21
- Благодарил (а): 89 раз
- Поблагодарили: 568 раз
Re: Разбивка выделения при закачке на части
Нашёл и исправил парочку багов:
- если запустить закачку в двух и более окошках (для одной карты), а потом закрыть одно из них во время закачки, второе затормаживалось на 30 сек.
- если при разделении области, какому-то окошку не доставалось ни одного тайла для обработки, вываливалась ошибка.
Изменения в ночнушке.
- если запустить закачку в двух и более окошках (для одной карты), а потом закрыть одно из них во время закачки, второе затормаживалось на 30 сек.
- если при разделении области, какому-то окошку не доставалось ни одного тайла для обработки, вываливалась ошибка.
Изменения в ночнушке.
- Parasite
- Администратор
- Сообщения: 5646
- Зарегистрирован: 23 окт 2008, 17:38
- Благодарил (а): 124 раза
- Поблагодарили: 508 раз
Re: Разбивка выделения при закачке на части
Вроде бы работает так, как требуется. Откровенных багов пока не выявлено.
Пожелание: в гуе, рядом с окошком выбора числа потоков - возможно ли писать текущий MaxConnectToServerCount, если он был задан в ZMP (и, соответственно, не давать ввести цифирку больше оного)?
Пожелание: в гуе, рядом с окошком выбора числа потоков - возможно ли писать текущий MaxConnectToServerCount, если он был задан в ZMP (и, соответственно, не давать ввести цифирку больше оного)?
The only difference between me and a mad man is that I am not mad. /Salvador Dali/


-
zed
- Гуру
- Сообщения: 2888
- Зарегистрирован: 16 авг 2008, 20:21
- Благодарил (а): 89 раз
- Поблагодарили: 568 раз
Re: Разбивка выделения при закачке на части
А точно, всегда нужно ограничиваться этим числом? Сейчас там по дефолту число устанавливается на MaxConnectToServerCount при открытии окна операции с областью. Могу сделать, чтобы оно реагировало на смену карты и менять верхнюю границу на этот дефолт. Делать дополнительные надписи нет необходимости.