Текст пользователю, отрубить юзера, а скрипт дальше работал. как?

dandandan

Мой дом здесь!
Регистрация
7 Авг 2008
Сообщения
1.036
Реакции
293
Есть следующая задача:
1. При запуске скрипта отдать пользователю некоторый текст, сгенерированный скриптом. а-ля echo 'текст';
2. Отключить этого пользователя, а скрипт должен продолжать работать как в случае с ignore_user_abort(true);

Как именно отключить пользователя ? Почему-то в голове всплыла команда connection_close() , но не нашел ее в функциях php.
 
unset()
destroy()

?
 
Надо закрыть http соединение пользователя, и продолжить работу скрипта.
unset() и destroy() вообще ни к месту. Да и php не знает такой команды destroy().
 
я имел ввиду
session_destroy() и session_unset()

Код:
header('Connection: close');
Такое подходит?
 
Один, выводит надпись и потом гетом пинает другой который уже и продолжает молотить?
Несколько причин:
1. Нежен будет повторный запрос к бд.
2. Существует вероятность, что не произойдет http соединение
3. Зачем лишний код, если все можно сделать одной командой.
header('Connection: close');
Похоже, что тоже не совсем подходит. Если сначала выдам пользователю текст, то php ругается на отправленный хедер после текста.
А если сделаю закрытие соединения, то не смогу пользователю передать текст.
 
PHP:
ob_start();
 
// вывод
 
header("Content-Length: ".ob_get_length());
header("Connection: close");
ob_end_flush();

браузер отключается, скрипт работает дальше
 
изучил пример вверху. Теперь хотелось бы понять как работает сама функция header("Connection: close");

$length = ob_get_length(); - получили размер буфера с текстом.
header("Connection: close"); - закрыли соединение с браузером. На мой взгляд больше браузер не должен ничего получить весь вывод текста ниже - неправильная работа браузера.

// что будет если здесь будет еще echo 'Текст'; покажется ли он на экране пользователя во всех ли браузерах будет 1 и та же реакция??

// sleep (10000) // скрипт спит 10 секунд. Брузер получит буфер только через 10 секунд?

ob_end_flush(); ob_flush(); flush(); - отдали буфер с текстом.

// что будет если здесь будет еще echo 'Текст'; покажется ли он на экране пользователя? Видимо этот текст пользователь уже не получит. Правильно ли думаю?


Как будут вести себя браузеры если не указывать:
header("Content-Length: " . $length);
header("Content-Encoding: none");
header("Accept-Ranges: bytes");
 
Назад
Сверху