powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) register_shutdown_function()? - как заставить работать?
15 сообщений из 15, страница 1 из 1
(PHP) register_shutdown_function()? - как заставить работать?
    #33429399
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нашел скрипт, который стребует этой функции, там логируется определенное событие...
У меня, как я понал она не работает (лог пустой).

Как заставить функцию заработать? (ман посмотрел - ничего вроде нету по этому поводу...)
...
Рейтинг: 0 / 0
(PHP) register_shutdown_function()? - как заставить работать?
    #33429412
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
twistfireУ меня, как я понал она не работает (лог пустой).А с чего ты взял, что дело - в функции register_shutdown_function?
...
Рейтинг: 0 / 0
(PHP) register_shutdown_function()? - как заставить работать?
    #33429700
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
приведу код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
<?php
/*
* Работать будет только если работает PHP функция register_shutdown_function и flush
*/
$filename='sample.file'; //Имя файла
$mime_type='application/octet-stream'; //тип
define('FILE_PART_SIZE', 1024 * 8 * 10 );

ignore_user_abort(false);

//Функция-обработчик завершения работы скрипта

function shdn() {
global $g_total;
//если пользователь прервал соединение то
//пишем в файл сколько было выкачено
//(само сабой место файла можем написать, например, в базу)
if (connection_aborted()) {
$h2=fopen('/tmp/downloaded_count.txt','a+');
$str2save=$_SERVER['REMOTE_ADDR'].' '.$g_total."\n";
fwrite($h2,$str2save);
fclose($h2);
}
}

if (file_exists($filename)) {
$filesize=filesize($filename);
}
else {
exit('File '.$filename.' not found');
}

$g_total= 0 ;
$h=fopen($filename,'r');
if (!$h) {
exit('Can not open file: '.$filename);
}

header("Content-Type: $mime_type;");
header('Accept-Ranges: bytes');
//Организовываем докачку если надо:
if (isset($_SERVER['HTTP_RANGE']))
{
preg_match_all('/bytes=([0-9]*)-([0-9]*)/',$_SERVER['HTTP_RANGE'],$out);
header("HTTP/1.1 206 Partial Content");
$rlow=$out[ 1 ][ 0 ];
$rhigh=$out[ 2 ][ 0 ];
if (empty($rhigh)) $rhigh=$filesize- 1 ;
header("Content-Range: bytes $rlow-$rhigh/$filesize");
$filesize = $rhigh - $rlow +  1 ;
}
header("Content-Length: $filesize");
header("Content-Disposition: attachment; filename=$filename");

register_shutdown_function('shdn'); // вот она родимая!!

$contents = '';

set_time_limit( 0 );
if (isset($rhigh)) fread($h,$rlow); //Проскакиваем то что уже скачено
while (!feof($h)) {
echo fread($h, FILE_PART_SIZE);
flush(); //На всякий случай, вдруг включена буферезация вывода
$g_total+=FILE_PART_SIZE; //Считаем сколько уже слил
sleep( 2 );
}


fclose($h);
ob_clean();
?>

и кстати!
что саое интересное - у меня и сам скрипт не очень то правильно работает.
Как Вы понимаете, скрипт должен отдавать файл пользователю.
Но он отдает его не одним потоком, а может поддерживать несколько (заголовок Range).
Вроде отдает файл такого же размера, но испорченный. Не пойму почему.
Может кто знает?
...
Рейтинг: 0 / 0
(PHP) register_shutdown_function()? - как заставить работать?
    #33434251
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну что никто не знает как настроить, чтобі єта функция работала???
...
Рейтинг: 0 / 0
(PHP) register_shutdown_function()? - как заставить работать?
    #33434369
Шогал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Открывайте файл в бинарном режиме
...
Рейтинг: 0 / 0
(PHP) register_shutdown_function()? - как заставить работать?
    #33434370
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
twistfireну что никто не знает как настроить, чтобі єта функция работала???Ты забыл сумму указать. Никто не будет разбираться в куче этого неформатированного хлама, большая часть которого к проблеме никакого отношения не имеет.
PHP FAQ: Ничего не работает! Что делать???
...
Рейтинг: 0 / 0
(PHP) register_shutdown_function()? - как заставить работать?
    #33434478
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШогалОткрывайте файл в бинарном режиме
что это значит? А я как открываю?

*
GuestТы забыл сумму указать. Никто не будет разбираться в куче этого неформатированного хлама, большая часть которого к проблеме никакого отношения не имеет.
PHP FAQ: Ничего не работает! Что делать???

да нет, я то как раз понимаю как что работает, у меня алгоритм неверен.
И к вопросу этот код имеет отношение. Так как данные, не логируются, а должны.
Может я и грубо задал вопрос, извиняюсь, но все же не понимаю, почему у меня не работает register_shutdown_function.
Это связано с натсройками безопаности?
...
Рейтинг: 0 / 0
(PHP) register_shutdown_function()? - как заставить работать?
    #33434480
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри Шогал, я немного не в себе...
ты имеешь ввиду открывать с флагом rb? ща проверим..
...
Рейтинг: 0 / 0
(PHP) register_shutdown_function()? - как заставить работать?
    #33434481
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
twistfireМожет я и грубо задал вопрос, извиняюсь, но все же не понимаю, почему у меня не работает register_shutdown_function.Да с чего вы взяли, что ОН у вас не работает?
Код: plaintext
1.
2.
3.
4.
5.
<?php
register_shutdown_function('kill_me');
function kill_me(){
  unlink(__FILE__);
}
?>
...
Рейтинг: 0 / 0
(PHP) register_shutdown_function()? - как заставить работать?
    #33434486
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
флаг rb не помогает.
Тут по-моему ошибка в принципе відачи куска файла, посмотрите если не сложно.
...
Рейтинг: 0 / 0
(PHP) register_shutdown_function()? - как заставить работать?
    #33434520
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
twistfireфлаг rb не помогает.
Тут по-моему ошибка в принципе відачи куска файла, посмотрите если не сложно.При чём тут rb? У тебя приведённый мной код к каким результатам приводит?
...
Рейтинг: 0 / 0
(PHP) register_shutdown_function()? - как заставить работать?
    #33435215
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Warning: unlink(...../kill/kill_me.php): Permission denied in /...../kill/kill_me.php on line 4

Ты прав. извини....
У меня функция пашет. наверно не выполняется connection_aborted
проверил - не работает даже когда пишу так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
function shdn() {
global $g_total;

//if (connection_aborted()) {
$h2=fopen('downloaded_count.txt','a+');
$str2save=$_SERVER['REMOTE_ADDR'].' '.$g_total."\n";
fwrite($h2,$str2save);
fclose($h2);
//}
}
она почему-то просто не хочет работать. не пойму.
...
Рейтинг: 0 / 0
(PHP) register_shutdown_function()? - как заставить работать?
    #33435471
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
twistfireУ меня функция пашет.Вот и разбирайся с функцией
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
function shdn() {
global $g_total;

//if (connection_aborted()) {
$h2=fopen('downloaded_count.txt','a+');
$str2save=$_SERVER['REMOTE_ADDR'].' '.$g_total."\n";
fwrite($h2,$str2save);
fclose($h2);
//}
}
без всяких register_shutdown_function - она к твоей проблеме не имеет никакого отношения.
...
Рейтинг: 0 / 0
(PHP) register_shutdown_function()? - как заставить работать?
    #33436275
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну извини - погорячился с выводом. Но форум для того и нужен чтобы вместе разбираться и решать проблемы :)

Но почему-то я вообще не понимаю сложившейся ситуации. Буду копать :)
...
Рейтинг: 0 / 0
(PHP) register_shutdown_function()? - как заставить работать?
    #33436564
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
twistfireНо форум для того и нужен чтобы вместе разбираться и решать проблемы :)
http://phpclub.ru/faq/WhyForum
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) register_shutdown_function()? - как заставить работать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]