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

Разное

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

 

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

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

тема: Может ли браузер закрыться сам по себе?
 
 автор: Владимир55   (09.11.2009 в 15:44)   письмо автору
 
 

Браузер ИЕ8 воспроизводит страницу с запущенным скриптом, на которую ничего не выводится. Примерно через час на странице появляется запись, что ее невозможно открыть. То ли в этом скрипт виновен, то ли сам браузер от безделья так реагирует?

Может, ФФ или Опера в этом смыле лучше себя ведут?

  Ответить  
 
 автор: cheops   (09.11.2009 в 19:05)   письмо автору
 
   для: Владимир55   (09.11.2009 в 15:44)
 

Дело в том, что протокол HTTP плохо подходит для поддержания таких длительных связей - дело может быть даже не в браузере, а в сервере или в промежуточном сервере. В то же время, скрипты, как правило, легко можно запускать без зависимости от браузера, через командную строку сервера - они будут выполняться столько, сколько нужно.

  Ответить  
 
 автор: Владимир55   (09.11.2009 в 21:21)   письмо автору
 
   для: cheops   (09.11.2009 в 19:05)
 

Я запускаю скрипт посредством Аякс. В этом случае обращения к браузеру не происходит, но зато трудно контролировать его работу и диагностировать ошибки. Поэтому сделал специальный стенд для отладочной записи через браузер, но он сам по сеьбе ненадежен...

  Ответить  
 
 автор: cheops   (10.11.2009 в 12:33)   письмо автору
 
   для: Владимир55   (09.11.2009 в 21:21)
 

Связь рвется не смотря на то, что постоянно идут AJAX-запросы?

  Ответить  
 
 автор: coloboc66   (10.11.2009 в 12:58)   письмо автору
 
   для: Владимир55   (09.11.2009 в 21:21)
 

Сделайте на странице невидимый ответ аякса.

  Ответить  
 
 автор: Владимир55   (10.11.2009 в 14:13)   письмо автору
 
   для: coloboc66   (10.11.2009 в 12:58)
 

Нет, AJAX только запускает скрипт, но больше не обращается к нему (я полагал, что так лучше). Скрипт пишет оперативные отчеты в файлы, а админка раз в 10 секунд их оттуда считывает.

Однако, дело может быть и в чем-то другом, ибо скрипт всегда останавливается на одном и том же цикле...

  Ответить  
 
 автор: coloboc66   (10.11.2009 в 14:24)   письмо автору
 
   для: Владимир55   (10.11.2009 в 14:13)
 

Как понять "...AJAX только запускает скрипт, но больше не обращается к нему ..."? Что вы понимаете под аяксом, а что - под скриптом? скрипт серверный или клиентский?

  Ответить  
 
 автор: Владимир55   (10.11.2009 в 15:48)   письмо автору
 
   для: coloboc66   (10.11.2009 в 14:24)
 

Скрипт серверный. Я запускаю его так:
<script src="jquery.min.js"></script>
<script> 
function to_ajax() 

$.get('31.php');

</script> 
<input type="button" onclick="to_ajax()" value="Пуск" />


В процессе работы скрипт пишет отчеты в файлы для контроля его работы.

  Ответить  
 
 автор: coloboc66   (10.11.2009 в 16:32)   письмо автору
 
   для: Владимир55   (10.11.2009 в 15:48)
 

То есть нажали на кнопку - серверный скрипт сработал, второй раз нажали - второй раз сработал, и т.д. Не перезапускается же он на сервере сам без команд из браузера? Так?

  Ответить  
 
 автор: Владимир55   (10.11.2009 в 17:32)   письмо автору
 
   для: coloboc66   (10.11.2009 в 16:32)
 

Именно так - кнопка нажата и скрипт работает. Примерно через час (а точнее всегда через 1 час 6 минут и 7 секунд) скрипт перестат работать, не выполнив свою задачу (то есть, не осуществив необходимое количество итераций).

Вот я и ищу всякими средствами, что в нем такое происходит, да понять никак не могу. При старте Аяксом ничего не видно, а при запуске через браузер он сам ненадежен...

  Ответить  
 
 автор: coloboc66   (10.11.2009 в 17:55)   письмо автору
 
   для: Владимир55   (10.11.2009 в 17:32)
 

А скрипт случайно не создаёт нагрузку на сервер? Что ж он такое обрабатывает такое долгое время??? Может он зацикливается? Можно тем же аяксом выводить на страницу промежуточные результаты работы скрипта и контролировать...

  Ответить  
 
 автор: Владимир55   (10.11.2009 в 18:10)   письмо автору
 
   для: coloboc66   (10.11.2009 в 17:55)
 

Скрипт на Денвере. В цикле задействован двумерный массив, наполняющийся по мере работы. На память отвел 2 гига. Контролирую суммарное количество знаков во всех элементах всех массивов для оценки задействованной памяти. Где то на 80 мегабитах он останавливается. Час работы - это совсем немного относительно количества выполнных циклов.

  Ответить  
 
 автор: heed   (10.11.2009 в 19:53)   письмо автору
 
   для: Владимир55   (10.11.2009 в 18:10)
 

попробуйте сделать какой-нибудь вывод и сброс буфера в этих циклах, там где было-бы не слишком часто(, немножко тоже замедляет работу).
что-то типа
<?
echo '.';
flush();

обычно делаю echo "<hr/>\n"; вместо точки
, при простом запросе браузером, чтобы браузер прорисовывал сразу при каждом получении этого "<hr/>\n".
Просто из браузера так-же как из AJAX должно быть можно всё просмотреть.

Если вывод совсем не нужен никакой напишите в php-скрипте
ignore_user_abort(true);
это гарантирует что выполнение скрипта не закончится когда например будет нажато "стоп" в браузере.

Но замечал на своей сборке загадочное поведение сервера/серверов, когда через минут 10 что-то получалось, и ИЕ просто выдавал что страница недоступна, а опера посылала повторный запрос, который так-же доходил только до одного и того-же колличества insert'ов в db

  Ответить  
 
 автор: Владимир55   (10.11.2009 в 21:56)   письмо автору
 
   для: heed   (10.11.2009 в 19:53)
 

Вот cheops на то и намекает, что инструмент я использую не по назначению. Хоть и серверный язык, а всё же создан не для этого. Так я это начинаю понимать.

  Ответить  
 
 автор: heed   (10.11.2009 в 23:31)   письмо автору
 
   для: Владимир55   (10.11.2009 в 21:56)
 

Думаю сам сервер разрывает соединение,
, только не знаю позволительно-ли на сервере намного увеличивать таймаут соединения
сейчас в /server-info у меня такой вывод , таймауты не трогал
Server Settings
Server Version: Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.11-dev
Server Built: Dec 10 2008 00:10:06
Module Magic Number: 20051115:21
Hostname/port: comp:80
Timeouts: connection: 300 keep-alive: 5
MPM Name: WinNT
MPM Information: Max Daemons: 64 Threaded: yes Forked: no
Server Architecture: 32-bit
,,,,,,,,,,,,,,,,,,,,,,

  Ответить  
Rambler's Top100
вверх

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