Position actuelle: Accueil> Derniers articles> Comment combiner des fonctions PHP set_file_buffer et fopen pour réaliser des opérations de fichiers plus efficaces?

Comment combiner des fonctions PHP set_file_buffer et fopen pour réaliser des opérations de fichiers plus efficaces?

gitbox 2025-09-12
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Ce n&#39;est pas lié au contenu de l&#39;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&#39;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&#39;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&#39;améliorer l&#39;efficacité du fonctionnement des fichiers,Nous pouvons combiner <code>fopen

2. Introduction à la fonction set_file_buffer

La 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.

3. Combinaison utilise des exemples

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&#39;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&#39;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.

4. Conseils pratiques
  • La taille du tampon doit être ajustée en fonction de la taille du fichier et de la mémoire du serveur, généralement 8 Ko ~ 64 Ko est une plage raisonnable.
  • Lorsque vous écrivez des fichiers volumineux, essayez d'utiliser un mécanisme tampon pour éviter une écriture de disque fréquente.
  • Pour les opérations de lecture, vous pouvez également utiliser Stream_Set_Read_Buffer pour définir le tampon pour améliorer les performances de lecture.
  • Dans les scénarios d'écriture multi-thread ou simultanés, il est nécessaire de prêter attention à la cohérence des données du tampon.

5. Résumé

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