2011-12-13 3 views
1

Это может быть или не быть вопросом программирования.Internet Explorer не может обрабатывать несколько запросов

Это вопрос, который я задал earlier. Вам не нужно знать о более раннем вопросе, но это может быть актуально. Я не уверен, что это память или настройки или, может быть, db (крайне маловероятная) проблема.

$table_name на самом деле view, если это имеет значение. База данных: MySQL. У меня есть следующий код. Для согласованности я добавил die() в конце.

$query = mysql_query("SELECT * FROM $table_name") or die(mysql_error()); 

$query1 = mysql_query("SELECT * FROM $table_name") or die(mysql_error()); 

$query2 = mysql_query("SELECT * FROM $table_name") or die(mysql_error()); 

$query3 = mysql_query("SELECT * FROM $table_name") or die(mysql_error()); 

$query4 = mysql_query("SELECT * FROM $table_name") or die(mysql_error()); 

echo "End"; 
die(); 

Эта простая страница php не запускается, но работает отлично в хромированном и firefox. Я получаю ошибку "Internet Explorer cannot display the webpage". В инструментальной консоли разработчика нет ошибки. view имеет около 50 000 записей.

Однако этот фрагмент кода работает нормально. Другой запрос не должен делать такой большой разницы.

$query = mysql_query("SELECT * FROM $table_name") or die(mysql_error()); 

$query1 = mysql_query("SELECT * FROM $table_name") or die(mysql_error()); 

$query2 = mysql_query("SELECT * FROM $table_name") or die(mysql_error()); 

$query3 = mysql_query("SELECT * FROM $table_name") or die(mysql_error()); 
echo "End"; 
die();  

$query4 = mysql_query("SELECT * FROM $table_name") or die(mysql_error()); 

Я подумал, что, может быть, это большое количество записей для того, чтобы обрабатывать (250k мало). Поэтому я попробовал эту часть кода. Запрос имеет около 15 записей.

$query = mysql_query("SELECT * FROM $table_name WHERE col1 ='var'") or die(mysql_error()); 

$query1 = mysql_query("SELECT * FROM $table_name WHERE col1 ='var'") or die(mysql_error()); 

$query2 = mysql_query("SELECT * FROM $table_name WHERE col1 ='var'") or die(mysql_error()); 

$query3 = mysql_query("SELECT * FROM $table_name WHERE col1 ='var'") or die(mysql_error()); 

$query4 = mysql_query("SELECT * FROM $table_name WHERE col1 ='var'")or die(mysql_error()); 
echo "End"; 
die(); 

Этот номер не завершен. Я получаю ту же ошибку "Internet Explorer cannot display the webpage". Однако это прекрасно работает.

Я действительно озадачен тем, как Internet Explorer не может обрабатывать 5 простых запросов. Иногда он даже не подходит к $query3, он не может пройти мимо $query2.

Я тестировал это локально - Win7, IE8. У меня достаточно памяти, места на жестком диске и т. Д. И т. Д. Локально я запускаю PHP 5.3.5.

Я также тестировал это на сервере на основе unix на двух разных компьютерах, работающих под IE8. Снова хватает памяти, места на жестком диске и т. Д. На сервере версия PHP - 5,25.

Я проверил это на меньшем столе, и он отлично работает. В таблице имеется 200 записей, которые я генерировал случайным образом. Но на более крупном table(read view) он не работает.

Я действительно разочарован в этой точке с помощью IE. Любое понимание/помощь, чтобы объяснить, почему это не работает, если IE имеет какие-либо ограничения или любой способ исправить это, будем очень благодарны.

+0

Не уверен, в чем проблема (это, вероятно, не имеет никакого отношения к IE, поскольку ваш код работает на стороне сервера), но в целом - вы не выполняете проверку ошибок в своем запросе. Вам нужно * сделать это после вызова 'mysql_query()'. В противном случае ваш скрипт будет разбит без сообщения об ошибке, если один из запросов завершится с ошибкой. Как это сделать, описано в [manual on 'mysql_query()'] (http://php.net/mysql_query) или в этом [справочном вопросе.] (Http://stackoverflow.com/questions/6198104/reference -what-is-a-perfect-code-sample-using-the-mysql-extension) –

+0

Я не добавлял проверку ошибок здесь. Но у меня есть проверка ошибок в моем фактическом коде на сервере. Я могу добавить его, это не будет иметь никакого значения. Код обновлен. – theking963

+0

Попробуйте настроить тип содержимого на «text/plain». Вы должны лучше понять, что происходит не так. –

ответ

0

Это не проблема IE. IE не может отображать веб-страницу, потому что сервер не возвращал результаты (правильно). Отключите «дружественные сообщения» в своем IE, и вы можете (возможно) получить лучшее сообщение, возможно, даже некоторые намеки на то, что является проблемой. Вы также можете вложить все в try-catch и распечатать результаты, которые также могут помочь. http://php.net/manual/en/language.exceptions.php

+0

Я добавил его в блок catch try, но до сих пор не получил сообщения об ошибке. Просто «Internet Explorer не может отображать веб-страницу». – theking963

+0

вещей, которые я хотел бы попробовать: 1. прокомментировать первый запрос и оставить пятый (должен работать так же, как если у вас нет пятого, но есть первый) 2. введите имя таблицы, а не переменную 3. укажите один столбец 4. проверьте наличие ограничений на количество одновременных открытых подключений к БД (либо на сервере, либо на PHP) надеюсь, что это поможет ... – msb

+0

1) Пробовал, работает так. 2) Не имеет значения. 3) Даже с одним столбцом, т.е. 'SELECT col1 from ..', он не может их прочитать. 4) Количество возможных одновременных открытых подключений - 250. В настоящее время существует только 30. – theking963

0

Просто для того, чтобы прояснить ситуацию, PHP работает на сервере. IE и Firefox - это браузеры и не выполняют никакого PHP (это то, что работает с запросами).

PHP-скрипт, на котором работает ваш скрипт, вероятно, синхронизируется с IE. Проще говоря, это так много времени для рендеринга, IE считает, что он сломан (и так будет большинство пользователей).

Рассмотрите возможность использования вызовов AJAX.

+0

Я использую вызовы ajax. Если вы прочитали предыдущий вопрос, откуда исходит ошибка. Я пытаюсь отладить это здесь. – theking963

0

Вероятно, вы ударяете максимальное время выполнения при выполнении всех 5 запросов,
и сценарий не возвращает соответствующий статус HTTP
(вероятно, ошибка 500, вам нужно проверить против вашего журнала апача)

Однако самая опасная проблема заключается в том, что вы повторяете один и тот же набор SQL в 5 раз.
Все запросы возвращают одинаковый набор результатов, вы можете просто объединить все 5 запросов в один.

После того, как вы совмещаете запросы, сделать тест на сколько времени требуется, чтобы выполнить запрос из поля зрения,
, не зная what exactly you have written for the view, я неохотно говорят безопасно.

+0

Если я использую mysql, для выполнения запроса требуется меньше секунды. IE истекает через 5-10 секунд. – theking963

+0

Знаете ли вы, что результаты из вида кэшированы? Однако, если есть обновление, кеш будет признан недействительным, а mysql придется вычислять снова и снова. Вы хотите включить итерацию для результата mysql? (возможно, у вас есть бесконечный цикл где-то) – ajreal

+0

Скорее всего, он кэшируется, поскольку я не обновлял/удалял/не добавлял ничего со вчерашнего дня. У вас нет бесконечного цикла. Это просто проверка кода с помощью этого фрагмента. Я попытался напечатать результаты, но если я это сделаю, он не пройдет 2-3 запроса, поэтому не уверен, что это проблема с памятью. – theking963

0

Фактическая проблема заключается в том, что ваша страница занимает слишком много времени для загрузки (из-за большого запроса), и IE будет тайм-аут, если его ожидание длится более 1 минуты.

To fix you will need to edit the registry, но это не должно быть необходимо, так как ни одна страница не должна занимать больше времени, чем 1 минута для загрузки!

+0

Срок действия менее 10 секунд. Он не превышает 30 секунд. Я уверен, что значение по умолчанию составляет более 30 секунд. – theking963

Смежные вопросы