gpt4 book ai didi

php - readfile() 和 fopen() 之间的区别

转载 作者:行者123 更新时间:2023-12-02 16:48:17 25 4
gpt4 key购买 nike

这两个代码在读取文件时做同样的事情,那么主要区别是什么?

1-第一个代码:

$handle = fopen($file, 'r');
$data = fread($handle, filesize($file));

2 秒代码:

readfile($file);

最佳答案

fread()readfile() 之间存在显着差异。

首先,readfile() 做了很多fread() 没有做的事情。 readfile() 打开文件进行读取,读取它,然后将它打印到输出缓冲区,一气呵成。 fread() 只做其中一件事情:它从给定的文件句柄中读取字节

此外,readfile() 有一些 fread() 没有的好处。例如,它可以利用 memory-mapped I/O在可用的地方而不是较慢的磁盘读取。这显着提高了读取文件的性能,因为它将进程从 PHP 本身委托(delegate)给操作系统调用。

勘误表

I previously noted that readfile() could run without PHP (this is corrected below).

对于真正的大文件(想想像媒体文件或大型存档备份这样的几个演出),你可能需要考虑将文件的读取完全从 PHP 委托(delegate)给你的网络服务器 X-Sendfile相反(这样您就不会因为可能需要数小时的上传时间而让您的 PHP 工作人员束手无策)。

所以你可以做这样的事情而不是 readfile():

<?php
/* process some things in php here */
header("X-Sendfile: /path/to/file");
exit; // don't need to keep PHP busy for this

关于php - readfile() 和 fopen() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59669748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com