Обрыв связи с клиентом

Vano

Новичок
PHP:
function dropped_connection()
{
    $fp = fopen('dropped.txt','a+');
    fwrite($fp, 'Blbblbl');
}


sleep(10);


echo 'Wooohoo';
Если я в течении 10 секунд нажму в браузере X, или дропнется инет. Как сервер может это определить?
Хочу запустить функцию dropped_connection.
 

Vano

Новичок
Почему?? ну почему?
PHP:
ignore_user_abort(true);

    echo "Testing connection handling";

    while (1) {
            if (connection_aborted() != 0)
            {
                $fopen = fopen('aborted.txt', 'a+');
                fwrite($fopen, connection_aborted().connection_status());
                fclose($fopen);
                break;
            }
                   
            sleep(1);
            echo "test";
            flush();
    }
Так работает,
PHP:
ignore_user_abort(true);


    while (1) {
            if (connection_aborted() != 0)
            {
                $fopen = fopen('aborted.txt', 'a+');
                fwrite($fopen, 'norm - '.connection_aborted().connection_status());
                fclose($fopen);
                break;
            }
                   
            sleep(1);
            flush();
    }
а так нет.
 

AnrDaemon

Продвинутый новичок
После "ignore_user_abort(true);" попробуй поставить "flush();" (отдать данные клиенту).
А вообще ты не тем делом занят.
 

Vano

Новичок
После "ignore_user_abort(true);" попробуй поставить "flush();" (отдать данные клиенту).
А вообще ты не тем делом занят.
А почему не тем? Допустим на моем сайте юзер списывает некие деньги, и хотелось бы знать, получил ли пользователь уведомление что всё хорошо, чтобы он 2 раза не списывал деньги если допустим оборветься связь и он не получит ответ.
 

Vano

Новичок
В общем задача. Чел посылает запрос. Сервер обрабатывает, списывает деньги со счета, и я хочу знать отправил ли сервер ответ, или пользователь оборвался. Если оборвался то на след раз выдать уведомление, воу воу ты оборвался но вот деньги твои списаны.
 

AnrDaemon

Продвинутый новичок
В общем задача. Чел посылает запрос. Сервер обрабатывает, списывает деньги со счета, и я хочу знать отправил ли сервер ответ, или пользователь оборвался. Если оборвался то на след раз выдать уведомление, воу воу ты оборвался но вот деньги твои списаны.
Это должно быть две независимых операции. Посмотри, например, на e-Pos.
При совершении операции клиенту отдаётся тикет, НА КЛИЕНТЕ жабаскрипт этот тикет е… ерм, мурыжит…, пока не получит на него внятного ответа сервера. Если клиент закрыл окно до ответа сервера - ССЗБ.
 
Сверху