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

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

Код: 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
13.12.2005, 20:05
    #33434251
twistfire
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) register_shutdown_function()? - как заставить работать?
ну что никто не знает как настроить, чтобі єта функция работала???
...
Рейтинг: 0 / 0
13.12.2005, 21:47
    #33434369
Шогал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) register_shutdown_function()? - как заставить работать?
Открывайте файл в бинарном режиме
...
Рейтинг: 0 / 0
13.12.2005, 21:47
    #33434370
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) register_shutdown_function()? - как заставить работать?
twistfireну что никто не знает как настроить, чтобі єта функция работала???Ты забыл сумму указать. Никто не будет разбираться в куче этого неформатированного хлама, большая часть которого к проблеме никакого отношения не имеет.
PHP FAQ: Ничего не работает! Что делать???
...
Рейтинг: 0 / 0
13.12.2005, 23:33
    #33434478
twistfire
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) register_shutdown_function()? - как заставить работать?
ШогалОткрывайте файл в бинарном режиме
что это значит? А я как открываю?

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

да нет, я то как раз понимаю как что работает, у меня алгоритм неверен.
И к вопросу этот код имеет отношение. Так как данные, не логируются, а должны.
Может я и грубо задал вопрос, извиняюсь, но все же не понимаю, почему у меня не работает register_shutdown_function.
Это связано с натсройками безопаности?
...
Рейтинг: 0 / 0
13.12.2005, 23:35
    #33434480
twistfire
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) register_shutdown_function()? - как заставить работать?
Сорри Шогал, я немного не в себе...
ты имеешь ввиду открывать с флагом rb? ща проверим..
...
Рейтинг: 0 / 0
13.12.2005, 23:39
    #33434481
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) register_shutdown_function()? - как заставить работать?
twistfireМожет я и грубо задал вопрос, извиняюсь, но все же не понимаю, почему у меня не работает register_shutdown_function.Да с чего вы взяли, что ОН у вас не работает?
Код: plaintext
1.
2.
3.
4.
5.
<?php
register_shutdown_function('kill_me');
function kill_me(){
  unlink(__FILE__);
}
?>
...
Рейтинг: 0 / 0
13.12.2005, 23:44
    #33434486
twistfire
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) register_shutdown_function()? - как заставить работать?
флаг rb не помогает.
Тут по-моему ошибка в принципе відачи куска файла, посмотрите если не сложно.
...
Рейтинг: 0 / 0
14.12.2005, 00:49
    #33434520
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) register_shutdown_function()? - как заставить работать?
twistfireфлаг rb не помогает.
Тут по-моему ошибка в принципе відачи куска файла, посмотрите если не сложно.При чём тут rb? У тебя приведённый мной код к каким результатам приводит?
...
Рейтинг: 0 / 0
14.12.2005, 11:55
    #33435215
twistfire
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) register_shutdown_function()? - как заставить работать?
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
14.12.2005, 13:14
    #33435471
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) register_shutdown_function()? - как заставить работать?
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
14.12.2005, 17:01
    #33436275
twistfire
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) register_shutdown_function()? - как заставить работать?
ну извини - погорячился с выводом. Но форум для того и нужен чтобы вместе разбираться и решать проблемы :)

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


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