簡體   English   中英

加速op phpseclib sftp的方法可以下載遠程文件

[英]Ways to speed op phpseclib sftp get to download remote file

所以我使用phpseclib,它在大約45秒內通過sftp下載50MB文件。 與ssh2_scp_recv()相比,這個速度要快90秒,但與我的sftp客戶端(filezilla)相比速度較慢,最長需要10秒。

我的問題是,除了啟用我已經完成的mcrypt,gmp和bcmath擴展之外,我還能做些什么來加速通過sftp下載文件?

我在Windows 7上運行PHP 5.5,並且在使用cli或者瀏覽器/ apache時使用sftp-> get來整體下載文件,或者以各種大小的塊下載文件時得到相同的結果。

資源:

set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
require 'phpseclib/Net/SFTP.php';

$sftp = new Net_SFTP($host, $port, $timeout);
$sftp->login($user, $password);

$sftp->get($remoteFile, $localFile);

使用SFTP協議,客戶端(客戶端庫)反復使用“READ”請求來獲取文件內容塊。

phpseclib使用的一個啞實現發送一個“READ”請求(最多32 kB),等待“DATA”響應,發送另一個“READ”請求,等待,等等,直到它獲得整個文件。

如果往返服務器的往返很長(大延遲),則客戶端(庫)可能在大多數情況下無用地等待。

智能客戶端(庫)通過發送多個“READ”請求,無需等待響應,或使用大的“READ”請求或兩者來克服此問題。

例如,FileZilla發送一系列32 kB“READ”請求,最多可獲得1 MB的數據。

phpseclib不支持這種優化(注意,它適用於上傳)。

您所能做的就是使用Net_SFTP::max_sftp_packet增加“READ”請求的大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM