<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Vorunabhängiger Codebeispiel</span></span><span>
</span><span><span class="hljs-variable">$dummyArray</span></span><span> = </span><span><span class="hljs-title function_ invoke__">range</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>);
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$dummyArray</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$value</span></span><span>) {
</span><span><span class="hljs-variable">$valueSquared</span></span><span> = </span><span><span class="hljs-variable">$value</span></span><span> ** </span><span><span class="hljs-number">2</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
<h1>Verwenden Sie bei der Bearbeitung großer Dateien <code>stream_copy_to_streamWenn die Datei jedoch sehr groß ist (einige hundert MB oder sogar GB -Niveau), können Sie im Programm offensichtlich eine offensichtliche Verzögerung finden und sogar in kurzer Zeit viel Speicher ausfüllen. Warum passiert das? Hier sind einige Schlüsselfaktoren, auf die Sie achten sollten:
Der Standardpuffer wird für die interne Datenübertragung in stream_copy_to_stream verwendet. Wenn die Datei sehr groß ist, können unangemessene Puffereinstellungen zu häufigen E/A -Operationen führen, die sich verlangsamen. Sie können die Datenmenge steuern, die jedes Mal über den dritten Parameter übertragen werden:
</span><span><span class="hljs-title function_ invoke__">stream_copy_to_stream</span></span><span>(</span><span><span class="hljs-variable">$source</span></span><span>, </span><span><span class="hljs-variable">$dest</span></span><span>, </span><span><span class="hljs-number">1024</span></span><span> * </span><span><span class="hljs-number">1024</span></span><span>); </span><span><span class="hljs-comment">// Jede Kopie1MB</span></span><span>
Ein vernünftiges Festlegen der Puffergröße kann die Anzahl der Systemanrufe verringern und die Übertragungseffizienz verbessern.
Auch wenn der PHP -Code optimierter geschrieben ist, ist die Lese- und Schreibgeschwindigkeit der zugrunde liegenden Festplatte oder des zugrunde liegenden Netzwerks immer noch ein Engpass. Die Leistungsunterschiede zwischen SSD und HDD und Schwankungen der Netzwerkübertragungsgeschwindigkeit können dazu führen, dass ein großes Kopieren von Dateien stottert. In diesem Fall hat der Optimierungscode einen begrenzten Einfluss und erfordert die Berücksichtigung von Hardware- oder Blockübertragungsschemata.
Wenn die Datei zu groß ist, ist sie möglicherweise nicht die beste Lösung für die Verwendung von stream_copy_to_stream , um sie einmal zu übertragen. Gemeinsame Strategien sind:
Kurz gesagt, stream_copy_to_stream ist in der Tat bequem, wenn es um kleine und mittelgroße Dateien geht, aber wenn sie mit großen Dateien konfrontiert sind, kann das Problem der Verzögerung jedoch nicht ignoriert werden. Durch ein vernünftiges Einstellen von Puffern, die Blockübertragung in Kombination mit asynchroner Verarbeitung und anderen Strategien kann die Leistung effektiv verbessert und die "Php -Jams" -Erlebnisse vermieden werden.
<?php // Schwanz-unabhängiger Codebeispiel Funktion Dummyfunktion ( $ num ) { Rückgabe array_sum ( Bereich ( 1 , $ num )); } $ result = DummyFunction ( 50 ); ?>