Прошу прощения если не совсем в ту тему пишу.
Мне надо прочитать файл 10Мб. И надо вывести результаты в браузере IE7, то есть запустить программу как cgi скрипт.
Файл читаю так:
std::ifstream in;
...
in.seekg( 0, std::ios_base::end);
std::ifstream::pos_type len = in.tellg();
in.seekg( 0 );
str.resize( len);
in.read( (char*)str.data(), len);
Читает за 3 секунды, с этим все нормально но когда пытаюсь вывести с помощью cout 10Мб строку то IE7 уходит в себя.
Вернее начальный текст он выводит но потом все — крэш. В opera все отрабатывает нормально, но надо именно в IE7?
Кто может чем помочь — буду очень благодарен!!!???
17.10.08 23:08: Перенесено модератором из 'C/C++' — Кодт
andrew2008 однажды (17 октября 2008 20:18) писал в rsdn.web:
Если апдейты не помогут, то чтож... видимо такова судьба.
Установи firefox и не мучайся впредь.
--
Бортовой журналPosted via RSDN NNTP Server 2.1 beta
Здравствуйте, andrew2008, Вы писали:
A>Прошу прощения если не совсем в ту тему пишу.
A>Мне надо прочитать файл 10Мб. И надо вывести результаты в браузере IE7, то есть запустить программу как cgi скрипт.
A>Файл читаю так:
A>std::ifstream in;
A>...
A>in.seekg( 0, std::ios_base::end);
A>std::ifstream::pos_type len = in.tellg();
A>in.seekg( 0 );
A>str.resize( len);
A>in.read( (char*)str.data(), len);
A>Читает за 3 секунды, с этим все нормально но когда пытаюсь вывести с помощью cout 10Мб строку то IE7 уходит в себя.
A>Вернее начальный текст он выводит но потом все — крэш. В opera все отрабатывает нормально, но надо именно в IE7?
A>Кто может чем помочь — буду очень благодарен!!!???
Загружать кусками аяксом, например. То есть что-то вроде (используя jQuery и
taconite):
// на клиенте
function load(start)
{
$.get(
url: '/get_file', // адрес, откуда будем получать файл
{start: start}, // передаем в качестве ?start=x откуда начинать считывать файл
success: function(response){ // в случае успеха вызываем обработку таконайтом
$.taconite(response);
}
);
}
$(document).ready(
function(){
load(0); // сразу начинаем загружать документ
}
);
с сервера отдавать
<taconite>
<append select="#id-of-element"><![CDATA[
текст, который мы вычитали
с места, которое мы получили в параметре start
например, 500 к текста
]]></append>
<!-- а теперь вызываем функцию load с новой позицией -->
<!-- если файл уже вычитан до конца, то просто -->
<!-- пропускаем секцию eval -->
<eval>
load(new_pos)
</eval>
</taconite>
с другой стороны я бы задумался, зачем показывать 10МБ текста сразу
Здравствуйте, andrew2008, Вы писали:
A>Кто может чем помочь — буду очень благодарен!!!???
Ну, для начала нужно отделить мух от котлет — т.е. проблемы твоего скрипта от проблем IE.
Попробуй открыть через IE
статический файл с твоим содержимым. Посмотри, как он будет работать.
Если удовлетворительно — ставь
http://fiddler2.com и смотри, чем твой скрипт отличается от Апача.
Если неудовлетворительно — то пересмотри свой подход к задаче. Для чего может потребоваться десять метров текста???
Даже 1 мегабайт — это целый роман. Романы редко читаются в браузере; а когда читаются — отдавать весь мегабайт-явное излишество.
... << RSDN@Home 1.2.0 alpha rev. 677>>