文件获取内容或用于读取数MB数据的fopenphp://input?

文件获取内容或用于读取数MB数据的fopenphp://input?,php,performance,fopen,file-get-contents,Php,Performance,Fopen,File Get Contents,这似乎是一个重复的问题,但不是:我通过php:/input(1-500mb)接收数兆字节的数据,我必须保存在一个文件中。在性能方面(服务器负载、速度)更高,使用: 或 还有一个较短的版本: PHP已经在内部实现了代码的功能。(不确定这是否会产生可测量的差异)。尽管我不确定为什么要先创建一个临时文件 如果输入文件的大小高达500 MB,那么文件获取内容方法无论如何都无法工作,因为它必须将所有数据保存在字符串/内存中。是的dd bs=1000000计数=500php://stdin“,”/dev/n

这似乎是一个重复的问题,但不是:我通过php:/input(1-500mb)接收数兆字节的数据,我必须保存在一个文件中。在性能方面(服务器负载、速度)更高,使用:


还有一个较短的版本:

PHP已经在内部实现了代码的功能。(不确定这是否会产生可测量的差异)。尽管我不确定为什么要先创建一个临时文件


如果输入文件的大小高达500 MB,那么
文件获取内容
方法无论如何都无法工作,因为它必须将所有数据保存在字符串/内存中。

是的<代码>dd bs=1000000计数=500php://stdin“,”/dev/null“;”具有
1,3 GB/s
--哈,好的。不过,这并不是对您的案例进行的相关性能检查。如果您按照我认为的那样做,那么真正的约束可能是
php.ini中的
post\u max\u size
file_put_contents($filename, file_get_contents('php://input'))
$input = fopen("php://input", "r");
$temp = tmpfile();
$realSize = stream_copy_to_stream($input, $temp);
fclose($input);

$target = fopen($filename, "w");
fseek($temp, 0, SEEK_SET);
stream_copy_to_stream($temp, $target);
fclose($target);
  copy("php://input", $filename);