#221 2011.09.09 22:36

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6588
Карма: 107
Профиль Веб-сайт

Re: Общие вопросы по PHP

я чето не догоняю.
$fp = fopen('info.txt', 'a'); // открыли только для записи
while (!feof($this->fp)) { // тут проверка на конец файла, но модификатор "a" как раз помещает указатель на конец файла, так что внутрь while мы не должны попасть

Неактивен

#222 2011.09.09 22:37

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Общие вопросы по PHP

Ты не понял Есть $fp а есть $this->fp который открыт выше
в $this->fp открыт вайл со стороннего хоста.

Отредактировано TLENS (2011.09.09 22:38)

Неактивен

#223 2011.09.09 22:38

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6588
Карма: 107
Профиль Веб-сайт

Re: Общие вопросы по PHP

а епт)
дай весь код. запущу на своей фряхе.

Неактивен

#224 2011.09.09 22:40

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Общие вопросы по PHP

Я его запускал на других работает как надо. скорее ip

Код:

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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php
error_reporting(0);
ini_set('zlib.output_compression''Off');
ini_set('output_handler''');
ini_set('max_execution_time'999);
//var_dump($GLOBALS["HTTP_SERVER_VARS"]);
 
class Parser {
    public $host;
    public $path;
    public $name;
    public $url;
    public $header;
    public $fp;
    public $err;
    public $accept_headers;
    public function __construct($url$name '') {
        if (!$name) {
            $this->name basename($url);
        } else {
            $this->name $name;
        }
        
        $url parse_url($url);
        $this->host $url['host'];
        $this->path $url['path'];
        $this->accept_headers $this->get_accept_headers();
    }
    
    //--------- Подготовка принятых заголовков для передачи ------//
    private function get_accept_headers () {
        foreach($_SERVER as $k => $v) {
            $http substr($k05);
            if($http == 'HTTP_') {
                $h substr($k5);
                if($h == 'HOST')
                    $headers .= 'Host: ' $this->host "\r\n";
                    
                elseif($h == 'REFERER')
                        $headers .= 'Referer: http://' $this->host "\r\n";
                
                else $headers .= $h ': ' $v "\r\n";
            }
        }
        return $headers;
    }
    //----- Соеденение и передача заголовков ------//
    public function connect () {
        $this->fp = @fsockopen($this->host80$errno$errstr10);
        if (!$this->fp) {
            $this->err '<h1>' $errno '</h1>' "\n" '<p>' $errstr '</p>';
            return false;
        } else {
            fputs ($this->fp"GET " $this->path " HTTP/1.0\r\n" $this->accept_headers "\r\n");
            return true;
        }
    }
    //----------- Получаю заголовки -------//
    public function get_headers () {
        $headers = array();
        while (!feof($this->fp)) {
            $b trim(fgets($this->fp));
            if(!$b) break;
            if(substr($b ,05) == 'HTTP/') {
                $headers['HTTP'] = $b;
            } else {
                $buf explode(': '$b);
                $headers[$buf[0]] = $buf[1];
            }
        }
        return $headers;
    }
    //--- Выдача файла --//
    public function readfile () {
        //fpassthru($this->fp);
        $starttime microtime(1);
        $fp fopen('info.txt''a');
        while (!feof($this->fp)) {
            $f fread($this->fp1024);
            $len strlen($f);
            $stt microtime(1);
            fputs($fp$len ' - ' . ($stt $starttime) . "\n");
            if ($len 1024) {
                fputs($fp$f "\n\n\n");
            }
            $starttime $stt;
        }
    }
}
set_time_limit(999);
 
$file = new Parser ('http://ds.sasisa.ru/fc/upload_files/1199739600/wap_sasisa_ru_homevideo_tanya_xxx.3gp');
if (!$file->connect()) exit($file->err);
$headers $file->get_headers();
//var_dump($headers); exit;
 
 
//header($headers['HTTP']);
//header('Keep-Alive: timeout=10, max=60');
//header('Connection: Keep-Alive, close');
//header ("Cache-Control: None");
//header('Content-Encoding: binary');
//header('Content-Disposition: attachment; filename="' . $file->name . '"');
 
//if($headers['Content-Range'])
    //header('Content-Range: '  . $headers['Content-Range']);
    
//if($headers['Accept-Ranges'])
    //header('Accept-Ranges: '  . $headers['Accept-Ranges']);
    
//header('Content-Length: ' . $headers['Content-Length']);
    
//header('Content-Type: ' . $headers['Content-Type']);
 
$file->readfile();

Добавлено спустя   4 минуты  54 секунды:
Ну что там?

Неактивен

#225 2011.09.09 22:57

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6588
Карма: 107
Профиль Веб-сайт

Re: Общие вопросы по PHP

последние строчки:

1024 - 1,5020370483398E-5
1024 - 1,5020370483398E-5
348 - 60,271856069565

а дальше пидарасня какая-то. такое ощущение, что сам файл пишется. щас код повнимательнее посмотрю.

Неактивен

#226 2011.09.09 22:59

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Общие вопросы по PHP

А та не парся то я решил глянуть что там 83 строка
Добавлено спустя   6 минут  41 секунду:
Я конечно люблю загадки но не до такой степени.
Выполнил

Код:

1
2
3
4
<?php
$starttime microtime(1);
copy('http://ds.sasisa.ru/fc/upload_files/1199739600/wap_sasisa_ru_homevideo_tanya_xxx.3gp''test.file');
echo round(microtime(1) - $starttime4);

Результат 0.6344
Все таки проблема в коде.
Паша вся надежда на тебя. Сейчас попробую отправляемые заголовки перевести в нижний регистр. Но мало верится что поможет я уже не знаю что делать.

Неактивен

#227 2011.09.09 23:15

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Общие вопросы по PHP

Подожди дак у тебя тоже вис, это статы с твоего сервера?
1024 - 1,5020370483398E-5
1024 - 1,5020370483398E-5
348 - 60,271856069565

Неактивен

#228 2011.09.09 23:16

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6588
Карма: 107
Профиль Веб-сайт

Re: Общие вопросы по PHP

да.
смотрю в чем дело.

Неактивен

#229 2011.09.09 23:45

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6588
Карма: 107
Профиль Веб-сайт

Re: Общие вопросы по PHP

smile)
вобщем так)
Добавлено спустя    20 секунд:

Код:

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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<?php
//error_reporting(0);
 
ini_set('zlib.output_compression''Off');
ini_set('output_handler''');
ini_set('max_execution_time'999);
//var_dump($GLOBALS["HTTP_SERVER_VARS"]);
 
class Parser
{
    public $host;
    public $path;
    public $name;
    public $url;
    public $header;
    public $fp;
    public $err;
    public $accept_headers;
 
 
    public function __construct($url$name '')
    {
        if (!$name) {
            $this->name basename($url);
        } else {
            $this->name $name;
        }
 
        $url parse_url($url);
        $this->host $url['host'];
        $this->path $url['path'];
        $this->accept_headers $this->get_accept_headers();
    }
 
 
    public function __destruct()
    {
        is_resource($this->fp) ? fclose($this->fp) : null;
    }
 
 
    /**
     * Подготовка принятых заголовков для передачи
     * 
     * @return string
     */
    private function get_accept_headers ()
    {
        $headers '';
        foreach ($_SERVER as $k => $v) {
            $http substr($k05);
            if ($http == 'HTTP_') {
                $h substr($k5);
                if ($h == 'HOST') {
                    $headers .= 'Host: ' $this->host "\r\n";
                } else if ($h == 'REFERER') {
                    $headers .= 'Referer: http://' $this->host "\r\n";
                } else if ($h == 'CONNECTION') {
                    $headers .= "Connection: close\r\n";
                } else if ($h == 'ACCEPT_ENCODING' || $h == 'TE') {
                    // пропускаем
                } else {
                    $headers .= str_replace('_''-'ucwords(strtolower($h))) . ': ' $v "\r\n";
                }
            }
        }
        return $headers;
    }
 
 
    /**
     * Соеденение и передача заголовков
     * 
     * @return bool
     */
    public function connect ()
    {
        $this->fp = @fsockopen($this->host80$errno$errstr10);
        if (!$this->fp) {
            $this->err '<h1>' $errno '</h1>' "\n" '<p>' $errstr '</p>';
            return false;
        } else {
            fputs ($this->fp"GET " $this->path " HTTP/1.0\r\n" $this->accept_headers "\r\n");
            return true;
        }
    }
 
 
    /**
     * Получаю заголовки
     * 
     * @return array
     */
    public function get_headers ()
    {
        $headers = array();
        while (($b fgets($this->fp)) !== false) {
            $b trim($b);
            if ($b === '') break;
 
            if (substr($b05) == 'HTTP/') {
                $headers['HTTP'] = $b;
            } else {
                $buf explode(': '$b);
                $headers[$buf[0]] = $buf[1];
            }
        }
        return $headers;
    }
 
 
    /**
     * Запись файла
     */
    public function readfile ()
    {
        $starttime microtime(1);
        $fp fopen('info.txt''a');
        fputs($fp$this->accept_headers "\n\n\n\n");
 
        while (($f fgets($this->fp)) !== false) {
            $len strlen($f);
            $stt microtime(1);
            fputs($fp$len ' - ' . ($stt $starttime) . "\n");
            $starttime $stt;
        }
    }
}
set_time_limit(999);
 
$file = new Parser ('http://ds.sasisa.ru/fc/upload_files/1199739600/wap_sasisa_ru_homevideo_tanya_xxx.3gp');
if (!$file->connect()) exit($file->err);
$headers $file->get_headers();
//var_dump($headers); exit;
 
 
//header($headers['HTTP']);
//header('Keep-Alive: timeout=10, max=60');
//header('Connection: Keep-Alive, close');
//header ("Cache-Control: None");
//header('Content-Encoding: binary');
//header('Content-Disposition: attachment; filename="' . $file->name . '"');
 
//if($headers['Content-Range'])
    //header('Content-Range: '  . $headers['Content-Range']);
    
//if($headers['Accept-Ranges'])
    //header('Accept-Ranges: '  . $headers['Accept-Ranges']);
    
//header('Content-Length: ' . $headers['Content-Length']);
    
//header('Content-Type: ' . $headers['Content-Type']);
 
$file->readfile();

Неактивен

#230 2011.09.09 23:45

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Общие вопросы по PHP

Слушаю

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.029 s