Heim Backend-Entwicklung PHP-Tutorial 有没有思忖过用PHP来做多线程操作

有没有思忖过用PHP来做多线程操作

Jun 13, 2016 pm 01:09 PM
file header quot range Seek

有没有考虑过用PHP来做多线程操作~
最近完善下载类中一个远程下载文件 考虑是不是可以分别分段读取文件内容 最后组合。经测试可行哦~ 这是我测试的本地文件~
我想的是咋个可以最简单封装针对任意本地文件 or远程文件 进行操作! 请看:
//PHP分段读取文件 这里我只分了两段 实际上可以通过文件大小 按照预定段大小 进行分段..
$file = dirname(__FILE__).'/bullyframework_zend.7z';

echo filesize($file);

$handle = fopen($file, "rb");

$contents = fread($handle, ceil(filesize($file)/2)); //分两次读取文件组合

$now_tell = ftell($handle); //获取当前指针

$end = fread($handle, filesize($file) - $now_tell); //从当前指针处读取剩余文件

fclose($handle);

file_put_contents('test.7z', $contents.$end); //写入文件 验证文件是否完整

echo "
";

echo filesize('test.7z');
?>

------解决方案--------------------
分块下载需要双方都支持“断点续传”

一般下载工具都支持,所以你需要做的是服务器端。php实现的断点续传服务大致如下

PHP code
    //   Begin writing headers 
    header("Cache-Control:"); 
    header("Cache-Control: public"); 
    header("Content-Type: $ctype"); 

    $filespaces = str_replace("_", " ", $filename); 
    // if your filename contains underscores, replace them with spaces 

    $header='Content-Disposition: attachment; filename='.$filespaces; 
    header($header); 
    header("Accept-Ranges: bytes"); 
     
    $size = filesize($file);    
    //   check if http_range is sent by browser (or download manager)    
    if(isset($_SERVER['HTTP_RANGE'])) { 
        // if yes, download missing part       

        $seek_range = substr($_SERVER['HTTP_RANGE'] , 6); 
        $range = explode( '-', $seek_range); 
         if($range[0] > 0) { $seek_start = intval($range[0]); } 
         if($range[1] > 0) { $seek_end  =  intval($range[1]); } 
             
        header("HTTP/1.1 206 Partial Content"); 
        header("Content-Length: " . ($seek_end - $seek_start + 1)); 
        header("Content-Range: bytes $seek_start-$seek_end/$size"); 
     } else { 
        header("Content-Range: bytes 0-$seek_end/$size"); 
        header("Content-Length: $size"); 
     }    
    //open the file 
    $fp = fopen("$file","rb"); 
     
    //seek to start of missing part    
    fseek($fp,$seek_start); 
    
    //start buffered download 
    $n = 0;
    while(!feof($fp)) {        
        //reset time limit for big files 
        echo fread($fp,1024*$speed); 
     } 
    fclose($fp); 
     exit; <div class="clear">
                 
              
              
        
            </div>
Nach dem Login kopieren
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Verwenden Sie die Funktion File.length() von Java, um die Größe der Datei zu ermitteln Verwenden Sie die Funktion File.length() von Java, um die Größe der Datei zu ermitteln Jul 24, 2023 am 08:36 AM

Verwenden Sie die File.length()-Funktion von Java, um die Größe einer Datei zu ermitteln. Die Dateigröße ist eine sehr häufige Anforderung beim Umgang mit Dateioperationen. Java bietet eine sehr praktische Möglichkeit, die Größe einer Datei zu ermitteln, d. h. mithilfe der Länge(. )-Methode der File-Klasse. In diesem Artikel wird erläutert, wie Sie mit dieser Methode die Größe einer Datei ermitteln und entsprechende Codebeispiele angeben. Zuerst müssen wir ein File-Objekt erstellen, um die Datei darzustellen, deren Größe wir ermitteln möchten. So erstellen Sie ein File-Objekt: Filef

Seek Thermal bringt die Wärmebildkameras Nano 200 und Nano 300 auf den Markt – praktisch, um Kühlprobleme bei übertakteten PCs zu erkennen Seek Thermal bringt die Wärmebildkameras Nano 200 und Nano 300 auf den Markt – praktisch, um Kühlprobleme bei übertakteten PCs zu erkennen Aug 12, 2024 pm 09:50 PM

Seek Thermal hat die verbesserten Wärmebildkameras Nano 200 und Nano 300 für Android- und iOS-Telefone veröffentlicht. Die Infrarotkameras erkennen Hitze und helfen PC-Moddern, Kühl- und Erwärmungsprobleme beim Übertakten von CPUs und GPUs schnell zu erkennen. Eine Tradition

So konvertieren Sie einen PHP-Blob in eine Datei So konvertieren Sie einen PHP-Blob in eine Datei Mar 16, 2023 am 10:47 AM

So konvertieren Sie einen PHP-Blob in eine Datei: 1. Erstellen Sie eine PHP-Beispieldatei; 2. Über „function blobToFile(blob) {return new File([blob], 'screenshot.png', { type: 'image/jpeg' }) } ”-Methode kann zum Konvertieren von Blob in eine Datei verwendet werden.

Hongmeng native Anwendung zufälliger Poesie Hongmeng native Anwendung zufälliger Poesie Feb 19, 2024 pm 01:36 PM

Um mehr über Open Source zu erfahren, besuchen Sie bitte: 51CTO Hongmeng Developer Community https://ost.51cto.com Laufumgebung DAYU200:4.0.10.16SDK: 4.0.10.15IDE: 4.0.600 1. Um eine Anwendung zu erstellen, klicken Sie auf Datei- >newFile->CreateProgect. Vorlage auswählen: [OpenHarmony] EmptyAbility: Geben Sie den Projektnamen, shici, den Namen des Anwendungspakets com.nut.shici und den Speicherort der Anwendung XXX ein (kein Chinesisch, Sonderzeichen oder Leerzeichen). CompileSDK10, Modell: Stage. Gerät

Benennen Sie Dateien mit der Java-Funktion File.renameTo() um Benennen Sie Dateien mit der Java-Funktion File.renameTo() um Jul 25, 2023 pm 03:45 PM

Verwenden Sie die Funktion File.renameTo() von Java, um Dateien umzubenennen. In der Java-Programmierung müssen wir häufig Dateien umbenennen. Java stellt die File-Klasse für die Verarbeitung von Dateioperationen bereit, und die Funktion renameTo() kann Dateien problemlos umbenennen. In diesem Artikel wird die Verwendung der Java-Funktion File.renameTo() zum Umbenennen von Dateien vorgestellt und entsprechende Codebeispiele bereitgestellt. Die Funktion File.renameTo() ist eine Methode der File-Klasse.

Wie übergibt SpringBoot Parameter im Header durch Feign-Aufrufe? Wie übergibt SpringBoot Parameter im Header durch Feign-Aufrufe? May 16, 2023 pm 08:38 PM

[SpringBoot] Übergeben von Parametern im Header durch Feign-Aufrufe So übergeben Sie Header-Parameter durch Feign Problembeschreibung Wenn wir Feign verwenden, um die API-Schnittstelle eines anderen Dienstes in Spring Cloud anzufordern, müssen die Parameter im Header übergeben werden. Wenn nein Wenn eine spezielle Verarbeitung durchgeführt wird, gehen die Parameter im Header verloren. Lösung 1: Übergeben Sie es über @RequestHeader(name="headerName"). Beispiel: Feign ist wie folgt definiert: @FeignClient(name="service-name")pub

Was bedeutet Linux-Header? Was bedeutet Linux-Header? Jul 18, 2023 pm 03:34 PM

Der Header von Linux bezieht sich auf den Anfang einer Datei oder eines Datenstroms, der Metadaten über den Inhalt enthält. Durch korrektes Schreiben und Verwenden der Header-Datei können Entwickler Systemressourcen besser nutzen und die Lesbarkeit und Lesbarkeit des Codes verbessern. Wartbarkeit.

Verwenden Sie die Funktion File.getParent() von Java, um den übergeordneten Pfad der Datei abzurufen Verwenden Sie die Funktion File.getParent() von Java, um den übergeordneten Pfad der Datei abzurufen Jul 24, 2023 pm 01:40 PM

Verwenden Sie die Funktion File.getParent() von Java, um den übergeordneten Pfad einer Datei abzurufen. In der Java-Programmierung müssen wir häufig Dateien und Ordner bearbeiten. Manchmal müssen wir den übergeordneten Pfad einer Datei ermitteln, also den Pfad des Ordners, in dem sich die Datei befindet. Die File-Klasse von Java bietet die Methode getParent(), um den übergeordneten Pfad einer Datei oder eines Ordners abzurufen. Die File-Klasse ist Javas abstrakte Darstellung von Dateien und Ordnern. Sie bietet eine Reihe von Methoden zum Bearbeiten von Dateien und Ordnern. Unter ihnen, bekommen

See all articles