从远程NFS共享复制时,PHP复制函数的速度比linux cp命令慢
我一直在尝试从另一台服务器上的从远程NFS共享复制时,PHP复制函数的速度比linux cp命令慢,php,linux,cp,Php,Linux,Cp,我一直在尝试从另一台服务器上的nfs共享复制音频文件。当我使用PHP复制一个8 MB的音频文件时,需要5.5秒。但是,在shell中使用cp命令需要0.845秒 有人知道问题是什么以及如何解决吗 <?php $result = copy('/remote/dir/remoteFile.wav’,’12345.wav'); var_dump($returnVar); ?> 此外,您可以确定PHP副本的速度会比linux cp慢,因为一个使用本机操作系统级别的调用,另一个是应用
nfs共享
复制音频文件。当我使用PHP
复制一个8 MB的音频文件时,需要5.5秒。但是,在shell中使用cp命令需要0.845秒
有人知道问题是什么以及如何解决吗
<?php
$result = copy('/remote/dir/remoteFile.wav’,’12345.wav');
var_dump($returnVar);
?>
此外,您可以确定PHP副本的速度会比linux cp慢,因为一个使用本机操作系统级别的调用,另一个是应用层,通过web服务器等调用相同的调用。需要经过的层太多,需要处理的通知,需要遵守的协议等等。。我不认为这是完全可以解决的
您可以尝试使用
exec('cp..')
命令来代替copy()
,该命令将直接尝试从php运行linux cp命令。可能没有shell中的cp速度快,但可能比php中的copy()快一点。试一试..在PHP中使用cp
命令之后,您是否尝试过使用该命令?如果是这样,文件很可能在磁盘缓存中,测试时会得到不同的结果。@HonkyTonk可能是真的,但5秒内8MB的速度约为12.5 Mb/s,通过本地网络的开销将非常缓慢。此文件是通过LAN还是internet复制的(别忘了考虑VPN等)?这是否可能是由于网络噪音造成的?这种时间上的巨大差异是否可以反复重现?我很想知道,如果你尝试运行cp
,使用PHPexec(“cp file newLocation”)
或类似的工具,你会得到什么样的结果;然而,复制又花了20毫秒。我在远程服务器上用不同的文件名制作了很多副本。那么,我什么时候更改源文件名和目标文件名呢?这与cp
命令的工作方式大不相同。感谢我尝试了exec('cp..')
,但是复制又花了20毫秒。(我知道20ms不是很多)shell\u exec
快一点