
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
09.02.2011, 10:36
|
|||
|---|---|---|---|
Алгоритм обработки большого cgi запроса |
|||
|
#18+
Интересует вопрос чисто из спортивного интереса. Что если на сервер придет cgi запрос, содержащий сообщение в multipart формате, а передаваемые файлы - это три фильма по 1,2 Гб каждый. У нас пропадает возможность загрузить всё сообщение в память и распарсить его как строку. Получается, что придется как-то парсить, позволяя себе извлекать лишь небольшие кусочки из файла. Как эффективнее всего распарсить сие творение на c++ qt, чтобы на выходе мы получили 3 отдельных файла и поля post запроса. Что-то я не нашел функцию поиска подстроки в файле, есть только функции поиска подстроки в строке. Модератор: Тема перенесена из форума "C++". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.02.2011, 11:33
|
|||
|---|---|---|---|
Алгоритм обработки большого cgi запроса |
|||
|
#18+
Lumix, функции поиска подстроки в файле нет не только в С++, так что тебе придётся видимо писать полноценный парсер этого сообщения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.02.2011, 12:02
|
|||
|---|---|---|---|
Алгоритм обработки большого cgi запроса |
|||
|
#18+
Так у меня уже написан парсер, но объектом для парсинга является строка. Затруднение для меня состоит в том, чтобы теперь объектом для этого парсера стали маленькие кусочки, потому что функции работы с файлом максимум что позволяют - это с заданного места прочитать заданное количество байт. Вот я и затрудняюсь сообразить по сколько и с каких позиций читать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.02.2011, 12:05
|
|||
|---|---|---|---|
|
|||
Алгоритм обработки большого cgi запроса |
|||
|
#18+
LumixТак у меня уже написан парсер, но объектом для парсинга является строка. Затруднение для меня состоит в том, чтобы теперь объектом для этого парсера стали маленькие кусочки, потому что функции работы с файлом максимум что позволяют - это с заданного места прочитать заданное количество байт. Вот я и затрудняюсь сообразить по сколько и с каких позиций читать. ну так переделай чтобы вместо строки использовались итераторы или нечто подобное. Видел как связка bison+flex работает? Вот сам нечто подобное сделай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.02.2011, 13:17
|
|||
|---|---|---|---|
Алгоритм обработки большого cgi запроса |
|||
|
#18+
On 09.02.2011 12:02, Lumix wrote: > Так у меня уже написан парсер, но объектом для парсинга является строка. Значит, не написан. читай теорию компиляции и пр. Задача -- сделать так, чтобы он у тебя парсил файлы, а не строки. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.02.2011, 13:52
|
|||
|---|---|---|---|
Алгоритм обработки большого cgi запроса |
|||
|
#18+
> Задача -- сделать так, чтобы он у тебя парсил файлы, а не строки. Вы правильно поняли суть моего обращения на форум. Вот теперь жду, если кто-то поможет по существу - парсинг большого мультипарта. Предельно конкретный вопрос. Чтобы давать советы почитать книги по теории компиляции - много ума не надо. Такие советы можно давать даже не умея программировать вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.02.2011, 14:27
|
|||
|---|---|---|---|
Алгоритм обработки большого cgi запроса |
|||
|
#18+
Вопрос решен! На другом форуме мне подсказали как решается такая задача. Нужно использовать скользящие буферы размером с boundary-сепаратор и тогда всё получается красиво и экономично. Более того, даже двупроходный алгоритм не понадобился - можно всё сделать за один проход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=16&mobile=1&tid=1343149]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
87ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 404ms |

| 0 / 0 |
