我正在開發一個應用程序,需要列出並從遠程FTP目錄下載一堆文件。爲此,我使用Symfony Finder組件,它構建在像RecursiveDirectoryIterator之類的SPL迭代器之上。使用PHP和Symfony Finder的FTP性能
我的問題是,性能絕對糟糕。例如,下面的代碼:
<?php
$finder = new \Symfony\Component\Finder\Finder();
$finder->files()->in('ftp://user:[email protected]/')->name('*.tif');
foreach ($finder as $file) {
var_dump($file->getPathname());
}
在一些FTP服務上,這給了我每10-30秒一個文件名!
我通過XDebug Profiler運行代碼,大部分時間都花在內部PHP函數中,如php::RecursiveDirectoryIterator->hasChildren
,php::FilterIterator->next
和php::SplFileInfo->isDir
。
我也運行我的腳本與Wireshark啓用,因爲我懷疑PHP可能下載整個文件只是爲了列出它們,但似乎並非如此。
有誰知道爲什麼表現如此糟糕?我該如何解決它?