2017-12-08 1 views
-1

저는 PHP 5.6.3을 실행하고 있습니다.PHP - Zip extractTo() 성능

// ZIP file to extract 
$my_file = "repository.zip"; 

$zip = new ZipArchive; 
if ($zip->open($my_file) === TRUE) 
{ 
    //Unpack all files from zip 
    $zip->extractTo($this->target_directory); 
} 

$zip->close(); 

... 큰 ZIP 파일 (~ 300Mo)에 처리됩니다 내 전문 프로젝트의 하나는 dezip 기능을 포함하고 있습니다.

나는 많은 추출 시간 벤치 마크를 만들었고 extractTo() 함수가 전체 처리 시간의 90 %/95 % (20 초) 이상임을 발견했습니다! 최악의 경우, ZIP 크기는 다음주에 증가 할 것입니다 (아마도 최대 500Mo).

내 스크립트의이 부분을 최적화 할 수있는 방법이 있습니까? 알고있는 것 나는 모든 파일을 ZIP에서 추출하기 위해을 가지고있다.

감사합니다.

+0

누가 zip 파일을 만드나요? "빠른"압축을 사용하면 일반적으로 압축 해제 속도가 빨라집니다. –

+1

벤치 마크 cmd 행/usr/bin/unzip ./repository.zip -d. - 왜 PHP에서 그것을하고 있는지 모르겠다. –

+0

@SalmanA ZIP 파일은 다른 Symfony 응용 프로그램 "$ this-> zipArchive-> open ("repository.zip ", \ ZipArchive :: CREATE)"+ "$ this-> zipArchive-> addFile()"에 의해 생성됩니다. – Paolito75

답변

1

내 스크립트의이 부분을 최적화 할 수있는 방법이 있습니까?

아니요 - 해당 코드는 한 번 호출됩니다. 그것을 최적화 할 방법이 없다는 것이 분명해야합니다.

파일을 압축 해제 된 sonner로 가져올 수 있다면 정말로 알고 싶은 것 같습니다. 매우 다른 질문입니다.

extractTo() 함수는 90 % 이상/95 % (20 초). 총 처리 시간의 경과 시간

이다? CPU 시간? PHP 실행 시간?

결과를 빨리 얻을 수있는 범위가있을 수 있지만 올바른 질문을하지는 않습니다. 여기서 해결 방법을 얻지는 못할 것입니다. 시스템을 통해 문제를 해결할 수있는 권한이 없습니다.

OS와 하드웨어에 관해 우리에게 말하지 않았으므로, 우리는 우리가 줄 수있는 조언에 더욱 제약이 있습니다. 더 빠른 CPU로 이동하는 것이 도움이 될 수 있습니다. 그러나 제공 한 정보를 기반으로 여기서 CPU 또는 스토리지 I/O가 병목 현상인지 여부를 알 수 없습니다. 전체 시스템을 빠르게 만드는 방법은 큰 책을 채울 것입니다 (나는 알고 있습니다, 나는 그것을 작성했습니다).

PHP 외부에서 압축을 풀면 도움이 될 수 있습니다.

다른 압축 알고리즘을 사용하면 도움이 될 수 있습니다.

여러 파일을 만들고 병렬로 압축을 풀면 도움이 될 것입니다.

....하지만 여기에도 제약 조건에 대해 언급하지 않았습니다.

+0

Hello @symcbean은 sysadmin이 아니기 때문에 개발자이기 때문에 서버/인프라에 대한 지식과 기술이 없습니다.아마도 ZipArchive 네이티브 PHP 클래스가 특정 경우에 최적화 할 수있는 매개 변수 나 메서드를 가질 수 있기를 바랬습니다. 20 초 -> PHP 실행 시간 extractTo() 함수 전후에 microtime()이 있습니다. – Paolito75