Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php passthru(“cat文件”)的性能_Php_Performance_Passthru - Fatal编程技术网

Php passthru(“cat文件”)的性能

Php passthru(“cat文件”)的性能,php,performance,passthru,Php,Performance,Passthru,我在下载脚本中使用passthru(“cat filepath”)。我担心的是,它可能会占用大量服务器资源 在php中,直接链接公共目录中的文件和使用passthru(“cat filepath”)下载文件有什么区别 不要使用passthru()为此,您正在向CLI注入打开自己的大门,性能非常糟糕。存在就是为了这个 readfile($filepath); 与直接链接相比,通过PHP的开销很小,但我们通常谈论的是毫秒。但是,在使用readfile()时,浏览器将无法请求206部分,除非您对其进

我在下载脚本中使用passthru(“cat filepath”)。我担心的是,它可能会占用大量服务器资源

在php中,直接链接公共目录中的文件和使用passthru(“cat filepath”)下载文件有什么区别

不要使用
passthru()
为此,您正在向CLI注入打开自己的大门,性能非常糟糕。存在就是为了这个

readfile($filepath);
与直接链接相比,通过PHP的开销很小,但我们通常谈论的是毫秒。但是,在使用
readfile()
时,浏览器将无法请求
206部分
,除非您对其进行编码支持或使用类似的方法

编辑:似乎您使用的是
passthru()
,因为
readfile()
显然不能正确处理>2GB的文件(我从未遇到过
readfile()
的问题,事实上我只是用一个7.2GB的文件对它进行了测试,效果很好)。在这种情况下,至少要转义参数

function readfile_ext($filepath) {
  if(!file_exists($filepath))
    return false;

   passthru('cat ' . escapeshellarg($filepath));
   return true;
}
不要使用
passthru()。存在就是为了这个

readfile($filepath);
与直接链接相比,通过PHP的开销很小,但我们通常谈论的是毫秒。但是,在使用
readfile()
时,浏览器将无法请求
206部分
,除非您对其进行编码支持或使用类似的方法

编辑:似乎您使用的是
passthru()
,因为
readfile()
显然不能正确处理>2GB的文件(我从未遇到过
readfile()
的问题,事实上我只是用一个7.2GB的文件对它进行了测试,效果很好)。在这种情况下,至少要转义参数

function readfile_ext($filepath) {
  if(!file_exists($filepath))
    return false;

   passthru('cat ' . escapeshellarg($filepath));
   return true;
}
使用性能更好的PHP本机
readfile('filepath')
,而不是
passthru('cat filepath')

不过,这两种方法都比直接链接到文件要慢,因为PHP有一定的开销。

使用PHP原生的
readfile('filepath')
,而不是
passthru('cat filepath')
,它具有更好的性能

不过,这两种方法都比直接链接到文件要慢,因为PHP有一定的开销

在php中,直接链接公共目录中的文件和使用passthru(“cat filepath”)下载文件有什么区别

不同之处在于,直接链接到文件不会调用PHP,而运行PHP脚本(该脚本反过来运行
cat
)会导致调用PHP和
cat
。这将占用适量的额外内存,但在大多数情况下不会导致服务器负载

我使用的是readfile(),但此函数不能用于大于2gb的文件

在这种情况下,您可能希望找到一个比通过PHP传递所有文件内容更好的解决方案。查看您选择的web服务器软件中的支持

在php中,直接链接公共目录中的文件和使用passthru(“cat filepath”)下载文件有什么区别

不同之处在于,直接链接到文件不会调用PHP,而运行PHP脚本(该脚本反过来运行
cat
)会导致调用PHP和
cat
。这将占用适量的额外内存,但在大多数情况下不会导致服务器负载

我使用的是readfile(),但此函数不能用于大于2gb的文件


在这种情况下,您可能希望找到一个比通过PHP传递所有文件内容更好的解决方案。查看您选择的web服务器软件中的支持。

//我使用的是readfile(),但此函数不能用于大于2GB的文件。通过PHP提供2GB文件一开始就不是很理想。这里需要PHP吗?您的web服务器不能直接处理吗?//文件不能放在公共目录中。我把文件放在一个私有目录中。所以..我不能直接链接它们//我使用的是readfile(),但是这个函数不能用于大于2GB的文件。通过PHP提供2GB的文件一开始就不是很理想。这里需要PHP吗?您的web服务器不能直接处理吗?//文件不能放在公共目录中。我把文件放在一个私有目录中。所以..我不能直接链接它们。@Andrew Moore//请看我在deceze帖子上的评论。@Andrew Moore//谢谢你的建议。我将对变量进行转义。@Moon:请注意,
readfile()
从未出现过2GB的问题。你从哪里读到的限制?你测试过吗?@Andrew Moore//我遇到一个大文件错误。我之前的问题@Andrew Moore//同样,这是fopen function doc.,但它似乎也适用于readfile。@Andrew Moore//请参阅我对deceze帖子的评论。@Andrew Moore//谢谢您的建议。我将对变量进行转义。@Moon:请注意,
readfile()
从未出现过2GB的问题。你从哪里读到的限制?你测试过吗?@Andrew Moore//我遇到一个大文件错误。我前面的问题@Andrew Moore//同样,这是fopen函数文档,但它似乎也适用于readfile//谢谢你的建议。我在这里学到了一个新东西。X-Sendfile!我会找的。//还有……谢谢你的性能建议。我担心passthru会在服务器端造成大量负载//谢谢你的建议。我在这里学到了一个新东西。X-Sendfile!我会找的。//还有……谢谢你的性能建议。我担心passthru会在服务器端造成大量负载。