我一直在試圖複製另一臺服務器上的nfs share
音頻文件。當我使用PHP
進行復制時,需要5.5秒才能複製8 MB音頻文件。但是,當我在shell中使用cp命令時,需要0.845秒。從遠程NFS複製拷貝功能比複製Linux cp命令慢
有沒有人有任何想法是什麼問題,以及如何解決它?
<?php
$result = copy('/remote/dir/remoteFile.wav’,’12345.wav');
var_dump($returnVar);
?>
我一直在試圖複製另一臺服務器上的nfs share
音頻文件。當我使用PHP
進行復制時,需要5.5秒才能複製8 MB音頻文件。但是,當我在shell中使用cp命令時,需要0.845秒。從遠程NFS複製拷貝功能比複製Linux cp命令慢
有沒有人有任何想法是什麼問題,以及如何解決它?
<?php
$result = copy('/remote/dir/remoteFile.wav’,’12345.wav');
var_dump($returnVar);
?>
此外,你可以肯定的PHP的副本將是比Linux CP慢,因爲一個使用本地操作系統級調用,而另一種是通過調用Web服務器等相同的應用層。太多層穿過去,通知來處理,協議要堅持等等等等。我不認爲這是完全可以解決的..
也許不是一個copy()
的你可以嘗試的exec('cp ..')
命令,這將直接嘗試從php運行linux cp命令。可能不會給你提供像cp from shell
那麼多的速度,但可能會使它比copy() from php
更快一些。試試看吧..
您是否嘗試過在PHP中使用'cp'命令?如果是這樣,該文件很可能在磁盤緩存中,在測試時給出不同的結果。 – HonkyTonk 2012-08-14 14:44:46
@HonkyTonk可能是真的,但5秒鐘內的8MB是〜12.5 Mb/s,而在本地網絡上的開銷會非常慢。該文件是通過局域網或互聯網複製的嗎(不要忘記考慮VPN等)?這是否可能是由於嘈雜的網絡?這種重複性差異在時間上是否重現? – DaveRandom 2012-08-14 14:50:07
如果您嘗試通過從PHP exec(「cp file newLocation」)或其他東西中解脫出來運行'cp',我會很感興趣的。 – andrewsi 2012-08-14 14:51:44