constant
Guest
Некорректная отработка register_shutdown_function()
Перед отправкой файла пользователю регистрирую через register_shutdown_function() свою функцию, для проверки закачал ли пользователь себе файл или нет. Вот так:
register_shutdown_function(check())
...
отправка файла
...
Непосредственно перед самой отправкой заголовков на отдачу скриптом файла - во временной папке создаю файл по имени IP в котором пока идет отдача файла по частям записываю сколько байт было отослано пользователю. Таким образом я всегда могу знать качает ли сейчас пользователь что-то и сколько он скачал. Проблема в том, что в функции check() не отрабатывается удаление это временного файла - хотя прекрасно отрабатывает отслеживание connection_aborted()
function check() {
if (@file_exists($GLOBALS["temp_path"].md5(getENV('REMOTE_ADDR')))) {@unlink($GLOBALS["temp_path"].md5(getENV('REMOTE_ADDR')));}
if (connection_aborted()) { $this->downloaded = false; } else {$this->downloaded = true;}
}
Я проверял - файл есть. Права на него есть (все работает на Windows под Администратором). Но почему-то не удаляется.
Перед отправкой файла пользователю регистрирую через register_shutdown_function() свою функцию, для проверки закачал ли пользователь себе файл или нет. Вот так:
register_shutdown_function(check())
...
отправка файла
...
Непосредственно перед самой отправкой заголовков на отдачу скриптом файла - во временной папке создаю файл по имени IP в котором пока идет отдача файла по частям записываю сколько байт было отослано пользователю. Таким образом я всегда могу знать качает ли сейчас пользователь что-то и сколько он скачал. Проблема в том, что в функции check() не отрабатывается удаление это временного файла - хотя прекрасно отрабатывает отслеживание connection_aborted()
function check() {
if (@file_exists($GLOBALS["temp_path"].md5(getENV('REMOTE_ADDR')))) {@unlink($GLOBALS["temp_path"].md5(getENV('REMOTE_ADDR')));}
if (connection_aborted()) { $this->downloaded = false; } else {$this->downloaded = true;}
}
Я проверял - файл есть. Права на него есть (все работает на Windows под Администратором). Но почему-то не удаляется.