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

start [/forum/topic.php?fid=16&msg=37106187&tid=1343149]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
172ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 503ms |

| 0 / 0 |
