Проблема с ignore_user_abort

demon_mhm

Новичок
Проблема с ignore_user_abort

Здравствуйте!
Проблема в следующем: есть java приложение, которое передает моему скрипту данные и закрывает соединение. Необходимо чтобы скрипт продолжил работу после закрытия соединения. Написал небольшую тестовую программку чтобы изучить поведение ignore_user_abort()
PHP:
<?php
ignore_user_abort(1);
$i=0;
for ($i = 0; $i <= 1000; $i= $i + 0.0001);//выполняется длинный цикл, 
//во время которого жмем "стоп", имитируя отключение клиента
$fh = @fopen('test.txt', 'a+');
if (connection_aborted())
fwrite($fh, "\n ".date('[H:i:s]')."connection aborted on i = ".$i);
fwrite($fh, "\n ".date('[H:i:s]')." connection_status: ".connection_status());
fwrite($fh, "\n  ignore_user_abort is set to: ".ignore_user_abort());
echo '!!!';
?>
Запускаю ее в браузере, нажимаю на "стоп". По загрузке проца видно что скрипт дорабатывает. Лезу в логи...
PHP:
 [15:29:29] connection_status: 0
  ignore_user_abort is set to: 1
По идее здесь еще должна быть строчка connection aborted on i = 12345... И connection_status должен быть 1
То есть ветка if (connection aborted()) не отрабатывает?
Но самое смешное, что если закоментировать строчку ignore_user_abort(1), то при нажатии "стоп" скрипт останавливается, НО! Сообщения в логах появляются все-равно:
PHP:
 [16:43:28] connection_status: 0
  ignore_user_abort is set to: 0
Кто-нибудь может подсказать что я делаю не так?
Apache/1.3.26 (Win32) PHP/4.3.11
 

demon_mhm

Новичок
Если внимательно посмотреть на код, то можно понять, что если фигурные скобки пропущены, то строчка
PHP:
fwrite($fh, "\n ".date('[H:i:s]')."connection aborted on i = ".$i);
должна выполняться в любом случае...
А вообще, они здесь не обязательны, так как я хочу чтоб эта строка писалась в файл только если коннекция обрубается, а остальные две пишутся всегда
 

Tor

Новичок
может стоит посмотреть на значение connection_aborted() в разных случаях?

Если внимательно посмотреть на код, то можно понять, что если фигурные скобки пропущены, то строчка
fwrite($fh, "\n ".date('[H:i:s]')."connection aborted on i = ".$i);
а если еще внимательнее?
 

demon_mhm

Новичок
Автор оригинала: Tor
может стоит посмотреть на значение connection_aborted() в разных случаях?


а если еще внимательнее?
Давайте не будем играть в догадки, я не вижу недостающих фигурных скобок. Если вы усмотрели синтаксическую или логическую ошибку в коде, укажите на нее и мы ее обсудим
Если стоит ignore_user_abort = 0, то при обрубе соединения во время выполнения цикла не должны отрабатывать нижестоящие операторы, так ведь? Я хочу выяснить хотя бы почему они отрабатывают
 

Tor

Новичок
как вариант потому, что Вы прервали работу скрипта ПОСЛЕ того, как он выполнил запись в файл

может стоит посмотреть на значение connection_aborted() в разных случаях?
это мы ингорируем?
 

demon_mhm

Новичок
Автор оригинала: Tor
как вариант потому, что Вы прервали работу скрипта ПОСЛЕ того, как он выполнил запись в файл
Цикл отрабатывает примерно в течении 5-7 секунд, я пробовал ставить конечное значение в миллион, это ничего не изменило...
Сомневаюсь что всегда успеваю попасть в такой маленький промежуток времени пока скрипт пишет в файл
может стоит посмотреть на значение connection_aborted() в разных случаях?
Что вы понимаете под разными случаями?
 

demon_mhm

Новичок
Автор оригинала: Tor
когда вы закрыли окно браузера (нажали ESC), когда нет
Ну естественно, я пробовал и закрывать окно браузера и нажимать ESC. Проверял и не прерывая процесс...
 

Tor

Новичок
может стоит посмотреть на значение connection_aborted() в разных случаях?
Вы действительно.. э .. "альтернативно одаренный" или не понимаете по русски?
ob_start();
var_dump(...);
ob_get_content();
fwrite();
так понятно?
 

demon_mhm

Новичок
Автор оригинала: Tor
Вы действительно.. э .. "альтернативно одаренный" или не понимаете по русски?
ob_start();
var_dump(...);
ob_get_content();
fwrite();
так понятно?
Спасибо за помощь по существу...
Если не знаете что-нибудь по сути вопроса нечего флеймить, а если знаете, то по-моему надо помочь, а не самоутверждаться...
Топик закрыт.
 

SelenIT

IT-лунатик :)
Несмотря на закрытость топика, рекомендую обратить внимание на комменты к ф-ции [m]connection_status[/m] от 13-Dec-2002 07:28 и 16-Jun-2004 12:06.
 

demon_mhm

Новичок
Автор оригинала: SelenIT
Несмотря на закрытость топика, рекомендую обратить внимание на комменты к ф-ции [m]connection_status[/m] от 13-Dec-2002 07:28 и 16-Jun-2004 12:06.
Спасибо огромное!!!
 
Сверху