Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我怎么知道发送了多少字节? 函数Ifurl($subject) { $pattern=“/http:\/\/”; $regex=preg\u match\u all($pattern,$subject,$array); 如果($regex==1) { 返回true;//如果它存在,则返回true } 其他的 { 返回false; } } 函数get\u start\u point($env\u http\u range) { //计算起点 $range=$env\u http\u range;//通常设置为$\u服务器['http\u range'] 如果($range!='') { $p1=strpos($range,“bytes=”); $p2=STRPO($range,“-”); $offset=substr($range,$p1+6,$p2-($p1+6)); }否则{ $offset=0; } 返回$offset; } 函数输出($url、$range、$range2)//无法记录输出8192未满量 { $opts=array('http'=>array('method'=>“GET”,'header'=>“Range:bytes=$Range-$range2”); $context=stream\u context\u create($opts); $fp=fopen($url,'r',false,$context); 而(!feof($fp)&&!连接被中止() { $data_transfer+=1024*8; fpassthru($fp); } $status=(!连接被中止()); 记录此数据(传输的数据); fclose($httphandle); } 函数日志\u此($line) { $filename='download_log.txt'; $handle=fopen($filename,'a'); fwrite($handle,$line.“\n”); } 函数url($url) { $define_url=Ifurl($url);//定义url是否为真! 如果($define_url==1) { $filename=basename($url);//定义文件的文件名 $httphandle=fopen($url,“r”);//打开文件并读取信息 $headers=stream\u get\u meta\u数据($httphandle); $filesize=$headers['wrapper_data'][6];//定义文件内容大小 $filecontent=$headers['wrapper_data'][8];//获取文件内容 $pattern=“/(\d+/”;//获取所有文件大小 preg_match_all($pattern,$filesize,$array); $filesize=$array[0][0];//获取文件大小; $returnarray=array(“文件名”=>$Filename,“文件大小”=>$Filesize,“文件url”=>$url,“文件内容”=>$Filecontent”); return$returnarray; } 其他的 { 返回“无法”;//无法进行请求! } } 函数XD($url) { $graburl=url($url); $filename=$graburl['filename']; $filesize=$graburl['filesize']; $filurl=$graburl['Fileurl']; $filecontent=$graburl['filecontent']; /////////////////////////////////////////// 设置\u魔术\u引号\u运行时(0); ini设置(“输出缓冲”、“关闭”); ob_end_clean(); ini_集('zlib.output_compression','Off'); 忽略用户中止(true); //////////////////////////////////////////// @标头(“缓存控制:”); @标头(“缓存控制:公共”); @标题(“内容类型:应用程序/八位字节流”); @标题(“内容处置:附件;文件名=”.$filename); @标题(“接受范围:字节”); $log=get_start_point($_SERVER['HTTP_RANGE']); 记录此($log); 如果(isset($\u服务器['HTTP\u范围]])) { 列表($a,$range)=分解(“=”,$\u服务器['HTTP\u range']); 列表($range1,$range2)=分解(“-”,$range); 如果($range2==''或$range2=$filesize){ $range2=$filesize-1; }; 如果($range1$range2){ $range1=0; } $new_length=$range2-$range1+1; @标题(“HTTP/1.1 206部分内容”); @标题(“内容范围:字节$range1-$range2/$filesize”); @标题(“内容长度:$new_长度”); 输出($url、$range1、$range2); } 否则{ @标题(“内容长度:.$filesize”); $httphandle=fopen($url,“r”);//打开文件并读取信息 而(!feof($httphandle)&&!连接被中止() { $data_transfer+=1024*8; echo-fread($httphandle,1024*8); 冲洗(); ob_end_flush(); } $status=(!连接被中止()); 记录此数据(传输的数据); fclose($httphandle); } } XD('http://rarlabs.com/rar/wrar393.exe')_Php_Header_Buffer_Filestream_Fread - Fatal编程技术网

Php 我怎么知道发送了多少字节? 函数Ifurl($subject) { $pattern=“/http:\/\/”; $regex=preg\u match\u all($pattern,$subject,$array); 如果($regex==1) { 返回true;//如果它存在,则返回true } 其他的 { 返回false; } } 函数get\u start\u point($env\u http\u range) { //计算起点 $range=$env\u http\u range;//通常设置为$\u服务器['http\u range'] 如果($range!='') { $p1=strpos($range,“bytes=”); $p2=STRPO($range,“-”); $offset=substr($range,$p1+6,$p2-($p1+6)); }否则{ $offset=0; } 返回$offset; } 函数输出($url、$range、$range2)//无法记录输出8192未满量 { $opts=array('http'=>array('method'=>“GET”,'header'=>“Range:bytes=$Range-$range2”); $context=stream\u context\u create($opts); $fp=fopen($url,'r',false,$context); 而(!feof($fp)&&!连接被中止() { $data_transfer+=1024*8; fpassthru($fp); } $status=(!连接被中止()); 记录此数据(传输的数据); fclose($httphandle); } 函数日志\u此($line) { $filename='download_log.txt'; $handle=fopen($filename,'a'); fwrite($handle,$line.“\n”); } 函数url($url) { $define_url=Ifurl($url);//定义url是否为真! 如果($define_url==1) { $filename=basename($url);//定义文件的文件名 $httphandle=fopen($url,“r”);//打开文件并读取信息 $headers=stream\u get\u meta\u数据($httphandle); $filesize=$headers['wrapper_data'][6];//定义文件内容大小 $filecontent=$headers['wrapper_data'][8];//获取文件内容 $pattern=“/(\d+/”;//获取所有文件大小 preg_match_all($pattern,$filesize,$array); $filesize=$array[0][0];//获取文件大小; $returnarray=array(“文件名”=>$Filename,“文件大小”=>$Filesize,“文件url”=>$url,“文件内容”=>$Filecontent”); return$returnarray; } 其他的 { 返回“无法”;//无法进行请求! } } 函数XD($url) { $graburl=url($url); $filename=$graburl['filename']; $filesize=$graburl['filesize']; $filurl=$graburl['Fileurl']; $filecontent=$graburl['filecontent']; /////////////////////////////////////////// 设置\u魔术\u引号\u运行时(0); ini设置(“输出缓冲”、“关闭”); ob_end_clean(); ini_集('zlib.output_compression','Off'); 忽略用户中止(true); //////////////////////////////////////////// @标头(“缓存控制:”); @标头(“缓存控制:公共”); @标题(“内容类型:应用程序/八位字节流”); @标题(“内容处置:附件;文件名=”.$filename); @标题(“接受范围:字节”); $log=get_start_point($_SERVER['HTTP_RANGE']); 记录此($log); 如果(isset($\u服务器['HTTP\u范围]])) { 列表($a,$range)=分解(“=”,$\u服务器['HTTP\u range']); 列表($range1,$range2)=分解(“-”,$range); 如果($range2==''或$range2=$filesize){ $range2=$filesize-1; }; 如果($range1$range2){ $range1=0; } $new_length=$range2-$range1+1; @标题(“HTTP/1.1 206部分内容”); @标题(“内容范围:字节$range1-$range2/$filesize”); @标题(“内容长度:$new_长度”); 输出($url、$range1、$range2); } 否则{ @标题(“内容长度:.$filesize”); $httphandle=fopen($url,“r”);//打开文件并读取信息 而(!feof($httphandle)&&!连接被中止() { $data_transfer+=1024*8; echo-fread($httphandle,1024*8); 冲洗(); ob_end_flush(); } $status=(!连接被中止()); 记录此数据(传输的数据); fclose($httphandle); } } XD('http://rarlabs.com/rar/wrar393.exe')

Php 我怎么知道发送了多少字节? 函数Ifurl($subject) { $pattern=“/http:\/\/”; $regex=preg\u match\u all($pattern,$subject,$array); 如果($regex==1) { 返回true;//如果它存在,则返回true } 其他的 { 返回false; } } 函数get\u start\u point($env\u http\u range) { //计算起点 $range=$env\u http\u range;//通常设置为$\u服务器['http\u range'] 如果($range!='') { $p1=strpos($range,“bytes=”); $p2=STRPO($range,“-”); $offset=substr($range,$p1+6,$p2-($p1+6)); }否则{ $offset=0; } 返回$offset; } 函数输出($url、$range、$range2)//无法记录输出8192未满量 { $opts=array('http'=>array('method'=>“GET”,'header'=>“Range:bytes=$Range-$range2”); $context=stream\u context\u create($opts); $fp=fopen($url,'r',false,$context); 而(!feof($fp)&&!连接被中止() { $data_transfer+=1024*8; fpassthru($fp); } $status=(!连接被中止()); 记录此数据(传输的数据); fclose($httphandle); } 函数日志\u此($line) { $filename='download_log.txt'; $handle=fopen($filename,'a'); fwrite($handle,$line.“\n”); } 函数url($url) { $define_url=Ifurl($url);//定义url是否为真! 如果($define_url==1) { $filename=basename($url);//定义文件的文件名 $httphandle=fopen($url,“r”);//打开文件并读取信息 $headers=stream\u get\u meta\u数据($httphandle); $filesize=$headers['wrapper_data'][6];//定义文件内容大小 $filecontent=$headers['wrapper_data'][8];//获取文件内容 $pattern=“/(\d+/”;//获取所有文件大小 preg_match_all($pattern,$filesize,$array); $filesize=$array[0][0];//获取文件大小; $returnarray=array(“文件名”=>$Filename,“文件大小”=>$Filesize,“文件url”=>$url,“文件内容”=>$Filecontent”); return$returnarray; } 其他的 { 返回“无法”;//无法进行请求! } } 函数XD($url) { $graburl=url($url); $filename=$graburl['filename']; $filesize=$graburl['filesize']; $filurl=$graburl['Fileurl']; $filecontent=$graburl['filecontent']; /////////////////////////////////////////// 设置\u魔术\u引号\u运行时(0); ini设置(“输出缓冲”、“关闭”); ob_end_clean(); ini_集('zlib.output_compression','Off'); 忽略用户中止(true); //////////////////////////////////////////// @标头(“缓存控制:”); @标头(“缓存控制:公共”); @标题(“内容类型:应用程序/八位字节流”); @标题(“内容处置:附件;文件名=”.$filename); @标题(“接受范围:字节”); $log=get_start_point($_SERVER['HTTP_RANGE']); 记录此($log); 如果(isset($\u服务器['HTTP\u范围]])) { 列表($a,$range)=分解(“=”,$\u服务器['HTTP\u range']); 列表($range1,$range2)=分解(“-”,$range); 如果($range2==''或$range2=$filesize){ $range2=$filesize-1; }; 如果($range1$range2){ $range1=0; } $new_length=$range2-$range1+1; @标题(“HTTP/1.1 206部分内容”); @标题(“内容范围:字节$range1-$range2/$filesize”); @标题(“内容长度:$new_长度”); 输出($url、$range1、$range2); } 否则{ @标题(“内容长度:.$filesize”); $httphandle=fopen($url,“r”);//打开文件并读取信息 而(!feof($httphandle)&&!连接被中止() { $data_transfer+=1024*8; echo-fread($httphandle,1024*8); 冲洗(); ob_end_flush(); } $status=(!连接被中止()); 记录此数据(传输的数据); fclose($httphandle); } } XD('http://rarlabs.com/rar/wrar393.exe'),php,header,buffer,filestream,fread,Php,Header,Buffer,Filestream,Fread,我试图恢复下载,并记录已下载的字节使用缓冲区的代码工程伟大!但我无法记录从用户下载的全部字节数,函数输出会与服务器对话,以发送用户留下的字节。我用文本文件记录它,作为测试,当用户下载时,它会记录用户下载的字节,并将其保存到文本文件中。然而,唯一的问题是,当用户调用函数输出时,日志不会记录我尝试使用fread时的字节数,但代码会进入choas。如何记录用户下载的字节总数?尝试在中签出此函数文件: 你看过卷曲延伸部分了吗?我建议你使用句号。我不明白这个问题。这是什么意思“当用户调用函数时?”?函数输

我试图恢复下载,并记录已下载的字节使用缓冲区的代码工程伟大!但我无法记录从用户下载的全部字节数,函数输出会与服务器对话,以发送用户留下的字节。我用文本文件记录它,作为测试,当用户下载时,它会记录用户下载的字节,并将其保存到文本文件中。然而,唯一的问题是,当用户调用函数输出时,日志不会记录我尝试使用fread时的字节数,但代码会进入choas。如何记录用户下载的字节总数?

尝试在中签出此函数文件:


你看过卷曲延伸部分了吗?

我建议你使用句号。我不明白这个问题。这是什么意思“当用户调用函数时?”?函数输出($url,$range,$range2)curl我想知道如何记录用户下载的字节数我很确定curl可以跟踪传输的字节数。请阅读文档。我确实看过。您是否可以解释一下,当用户下载文件时,如何跟踪字节?您想知道服务器到服务器的方式使用了多少字节,或者用户到您的服务器使用了多少字节?对于后者,PHP可能是错误的工具。您需要Web服务器级别的内容。
  function Ifurl($subject)
     {
    $pattern = "/http:\/\//";
    $regex = preg_match_all($pattern, $subject, $array);
    if ($regex == 1)
    {
        return true; //true that it exist
    }
    else
    {
        return false;
    }
}

    function get_start_point($env_http_range)
{
    //Calculate start point
    $range = $env_http_range; // usually set to $_SERVER['HTTP_RANGE']
    if ($range != '')
    {
        $p1 = strpos($range, "bytes=");
        $p2 = strpos($range, "-");
        $offset = substr($range, $p1+6, $p2-($p1+6));
    } else {
        $offset = 0;
    }


    return $offset;
}


   function Output($url,$range,$range2) //cant record output 8192 not full amount 

   {
   $opts    = array('http'=>array('method'=>"GET",'header'=>"Range: bytes=$range-$range2"));

   $context = stream_context_create($opts);
   $fp      = fopen($url, 'r', false, $context);
   while(!feof($fp) && !connection_aborted())
   {
   $data_transferred += 1024 * 8;
   fpassthru($fp);
   }
   $status = (!connection_aborted());
   log_this($data_transferred);
   fclose($httphandle);
    }

    function log_this($line)
{
    $filename = 'download_log.txt';
    $handle = fopen($filename, 'a');
    fwrite($handle, $line . "\n");
}


function url($url)
{
    $define_url = Ifurl($url); //define if the url is true!
    if ($define_url == 1)
    {
        $filename    = basename($url); //define the filename of the file
        $httphandle  = fopen($url, "r"); //open the file and read the information
        $headers     = stream_get_meta_data($httphandle);
        $filesize    = $headers['wrapper_data'][6]; //define the file conent size
        $filecontent = $headers['wrapper_data'][8]; //get the file content
        $pattern     = "/(\d+)/"; //get all filesize dg
        preg_match_all($pattern, $filesize, $array);
        $filesize    = $array[0][0]; //get the filesize;
        $returnarray  = array("Filename" => $filename,"Filesize" => $filesize, "Fileurl" => $url,"Filecontent" => $filecontent);
        return $returnarray;
    }
    else
    {

        return "Unable"; //unable to make request!
    }

}



function XD($url)
{

$graburl     = url($url);
$filename    = $graburl['Filename'];
$filesize    = $graburl['Filesize'];
$filurl      = $graburl['Fileurl'];
$filecontent = $graburl['Filecontent'];

///////////////////////////////////////////
set_magic_quotes_runtime(0);
ini_set('output_buffering', 'Off');
ob_end_clean();
ini_set('zlib.output_compression', 'Off');
ignore_user_abort(true);


//////////////////////////////////////////// 


@header("Cache-Control:");
@header("Cache-Control: public");
@header("Content-Type: application/octet-stream");
@header("Content-Disposition: attachment; filename=".$filename);
@header("Accept-Ranges: bytes");


  $log  = get_start_point($_SERVER['HTTP_RANGE']);
    log_this($log);

  if(isset($_SERVER['HTTP_RANGE'])) 
  {
    list($a, $range)=explode("=",$_SERVER['HTTP_RANGE']);
    list($range1,$range2) = explode("-", $range);
    if ($range2 == '' or $range2 < 0 or $range2 >= $filesize) {
        $range2 = $filesize -1;
    };
    if ($range1 < 0 or $range1 > $range2) {
        $range1 = 0;
    }
    $new_length = $range2 - $range1 + 1;

    @header("HTTP/1.1 206 Partial Content");
    @header("Content-Range: bytes $range1-$range2/$filesize");
    @header("Content-Length: $new_length");


    Output($url,$range1,$range2);

}
 else {
    @header("Content-Length: ".$filesize);

       $httphandle  = fopen($url, "r"); //open the file and read the information
       while (!feof($httphandle) && !connection_aborted())
       {
       $data_transferred += 1024 * 8;
       echo fread($httphandle, 1024 * 8);
          flush();
       ob_end_flush();
      }
      $status = (!connection_aborted());
      log_this($data_transferred);
      fclose($httphandle);
}

  }


XD('http://rarlabs.com/rar/wrar393.exe')