文件获取内容或用于读取数MB数据的fopenphp://input?
这似乎是一个重复的问题,但不是:我通过php:/input(1-500mb)接收数兆字节的数据,我必须保存在一个文件中。在性能方面(服务器负载、速度)更高,使用: 或文件获取内容或用于读取数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已经在内部实现了代码的功能。(不确定这是否会产生可测量的差异)。尽管我不确定为什么要先创建一个临时文件
如果输入文件的大小高达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);