<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Ce n'est pas lié au contenu de l'article PHP Exemple de code</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Initialiser l'environnement...\n"</span></span><span>;
</span><span><span class="hljs-variable">$init_time</span></span><span> = </span><span><span class="hljs-title function_ invoke__">microtime</span></span><span>(</span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-variable">$log_file</span></span><span> = </span><span><span class="hljs-string">"init.log"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">file_put_contents</span></span><span>(</span><span><span class="hljs-variable">$log_file</span></span><span>, </span><span><span class="hljs-string">"L'initialisation est terminée: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">"Y-m-d H:i:s"</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>, FILE_APPEND);
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
<h1>Comment combiner PHP set_file_buffer et fopen fonction,Réaliser des opérations de fichiers plus efficaces?</h1>
<p>exister PHP Lors du traitement des fichiers volumineux,文件的读取et写入性能往往会成为瓶颈。Afin d'améliorer l'efficacité du fonctionnement des fichiers,Nous pouvons combiner <code>fopenLa fonction set_file_buffer est utilisée pour définir la taille du tampon de l'opération de fichier. Par défaut, PHP possède des mécanismes de tampon intégrés pour les opérations de fichiers, mais l'ajustement manuellement de la taille du tampon peut considérablement améliorer les performances lors de la gestion des fichiers volumineux ou de la lecture et de l'écriture fréquentes.
</span><span><span class="hljs-title function_ invoke__">stream_set_write_buffer</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>, </span><span><span class="hljs-number">8192</span></span><span>); </span><span><span class="hljs-comment">// Réglez le tampon sur 8KB</span></span><span>
En définissant rationnellement la taille du tampon, le nombre d'appels système peut être réduit, la surcharge des E / S peut être réduite et l'efficacité du fonctionnement des fichiers peut être améliorée.
Voici un exemple complet montrant comment ouvrir un fichier à l'aide de fopen et définir le tampon pour écrire efficacement via set_file_buffer :
</span><span><span class="hljs-comment">// Ouvrir le fichier pour écrire</span></span><span>
</span><span><span class="hljs-variable">$handle</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">"large_file.txt"</span></span><span>, </span><span><span class="hljs-string">"w"</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$handle</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Impossible d'ouvrir le fichier"</span></span><span>);
}
</span><span><span class="hljs-comment">// Réglez la taille du tampon sur 16KB</span></span><span>
</span><span><span class="hljs-title function_ invoke__">stream_set_write_buffer</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>, </span><span><span class="hljs-number">16</span></span><span> * </span><span><span class="hljs-number">1024</span></span><span>);
</span><span><span class="hljs-keyword">for</span></span><span> (</span><span><span class="hljs-variable">$i</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span> < </span><span><span class="hljs-number">100000</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span>++) {
</span><span><span class="hljs-title function_ invoke__">fwrite</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>, </span><span><span class="hljs-string">"C'est le premier <span class="hljs-subst">$i</span></span></span><span> Données de ligne\n");
}
</span><span><span class="hljs-comment">// Fermez la poignée du fichier</span></span><span>
</span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>);
Dans l'exemple ci-dessus, en définissant le tampon sur 16 Ko, PHP n'effectue pas les écritures de disque réelles chaque fois que FWrite est appelée, mais cache d'abord les données en mémoire, puis l'écrit sur le disque lorsque la limite supérieure du tampon est atteinte, ce qui peut réduire considérablement le nombre d'opérations d'E / S disque.
La combinaison de fopen et set_file_buffer peut considérablement améliorer l'efficacité des opérations de fichiers PHP. En définissant raisonnablement la taille du tampon et en réduisant le nombre d'appels système, vous pouvez réaliser des améliorations de performances significatives lors de la gestion des fichiers volumineux ou de la lecture et de l'écriture à haute fréquence. Après avoir maîtrisé ces techniques, vos capacités de traitement de fichiers PHP seront plus efficaces et stables.
Étiquettes associées:
fopen