Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Почему может подвисать браузер?
 
 автор: SHAman   (12.08.2007 в 18:27)   письмо автору
 
 

Ситуация такая: главный скрипт, в зависимости от параметров инклюдит другой скрипт, который, опять разгребает параметры и, в зависимости от них, инклюдит третий. Все работает отлично. Захотел добавить новый параметр ко второму обработчику. Добавил. Вызываю третий сторонний скрипт. Он вызывается. По-началу, все вызывалось как надо и работало. Но потом, я, по неосторожности, допустил бесконечный цикл. Естественно, браузер и процесс повисли. Я убил все процессы, открыл все заново, предварительно избавившись от бесконечного цикла. Браузер опять завис!

Тыкаюсь уже второй день. Нервов не хватает. Попробовал уменьшать код в третьем скрипте. Убил ВСЕ! Инклюдилась пустышка. Все равно виснет. Потом в скрипте 2, убил инклюд - все заработало. Поставил - не пашет, хотя никаких циклов или чего-то подобного там вообще нет!

Уже не знаю что делать и думать. Есть идеи, почему это?

   
 
 автор: Unkind   (12.08.2007 в 18:30)   письмо автору
 
   для: SHAman   (12.08.2007 в 18:27)
 

Поставьте лимит на время выполнения скрипта:

<?php
set_time_limit
(5);
?>


После пяти секунд должна появится ошибка где будет указана строка и файл, где на данный момент повис интерпретатор. Обычно этого хватает, чтобы определить где этот баг.

   
 
 автор: SHAman   (12.08.2007 в 18:43)   письмо автору
 
   для: Unkind   (12.08.2007 в 18:30)
 

У меня нет функции set_time_limit, потому что я пишу на Perl. Могу прервать скрипт, через какое-то время, но чтобы вывести строку - не знаю как.

Кроме того, вроде как я локализовал проблему. Она в инклюде. То есть, если 2 скрипт инклюдит третий, то виснет, если нет - не виснет. Вопрос только в том, что виснет, не смотря на то, что инклюдится пустышка.

   
 
 автор: Trianon   (12.08.2007 в 23:25)   письмо автору
 
   для: SHAman   (12.08.2007 в 18:43)
 

>У меня нет функции set_time_limit, потому что я пишу на Perl.
Тогда это нужно объявлять сразу. А тему вешать в разделе "разное".

   
 
 автор: SHAman   (13.08.2007 в 12:29)   письмо автору
 
   для: Trianon   (12.08.2007 в 23:25)
 

Какая разница? Я специально в первом посте обходился без конкретики. Ведь не догадались же, что на перл пишу. Ведь разница не велика в архитектуре! Вместо того, чтобы критиковать расположение темы, мож сказали бы дельное что... Реальная проблема. Ничего не выполняется, а браузер виснет. Вообще, из-за чего может браузер виснуть?
1) бесконечный цикл на сервере, не выдающий ничего (не правильно, потому что страница появляется, без контента правда, но появляется, значит, скрипт отработал до конца, ибо вывод шаблона в конце самом.)
2) бесконечный цикл на сервере, выдающий постоянно (тоже не то, потому что страничка выходит пустой)
3) бесконечный цикл на JS (но тогда обычно появляется алерт, который кричит об утечке памяти или что-то в этом духе. В любом случае, подвисать долнжо не моментально. JS на странице есть, но он не зациклен.)
4) ?

Больше не вижу вариантов, почему может подвесить...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования