php에서 zip 파일을 처리 할 때 두 가지 함수 zip_entry_open () 및 zip_read () 가 종종 사용됩니다. 그것들은 모두 PHP의 Zip 확장의 일부이며, 주로 압축 패키지의 내용을 읽는 데 사용됩니다. 그러나 많은 개발자들은 통화 순서를 사용할 때의 의심을 가지고 있습니다. 먼저 어떤 기능을 호출해야합니까? 이 기사는이 두 기능의 올바른 사용 순서와 예방 조치를 자세히 설명합니다.
zip_read ()
Zip 파일의 다음 항목을 읽는 데 사용되는데, 이는 압축 패키지에서 파일을 가로 지르는 것과 같습니다.
리턴 값은 리소스 유형의 zip 입력 핸들이며, 끝까지 읽으면 False가 반환됩니다.
zip_entry_open ()
Zip_Read () 가 읽은 Zip 항목을 열면 내용에 액세스 할 수 있습니다.
zip_entry_open () 이 호출 될 때만 zip_entry_read ()를 사용하여 컨텐츠를 얻는 것과 같은 현재 항목을 읽을 수 있습니까?
이 두 기능을 사용하여 zip 파일을 작동하기위한 올바른 순서는 다음과 같습니다.
$zip = zip_open('http://m66.net/path/to/yourfile.zip');
if (is_resource($zip)) {
while ($entry = zip_read($zip)) { // 먼저 전화하십시오 zip_read() 다음 항목을 얻으십시오
if (zip_entry_open($zip, $entry)) { // 다시 사용하십시오 zip_entry_open() 이 항목을 엽니 다
$content = '';
while ($data = zip_entry_read($entry, 1024)) {
$content .= $data; // 항목 내용을 읽으십시오
}
echo "Entry name: " . zip_entry_name($entry) . "\n";
echo "Content length: " . strlen($content) . "\n";
zip_entry_close($entry); // 현재 항목을 닫으십시오
}
}
zip_close($zip); // 폐쇄 ZIP 의지
}
요약 :
먼저 zip_read ()를 호출하여 zip 패키지의 각 파일 항목을 가로 지르십시오.
각 항목에서 zip_entry_open ()을 호출하려면;
항목 내용을 읽으십시오.
항목을 닫으십시오.
모든 항목이 가로 질 때까지.
zip_entry_open ()은 컨텐츠를 읽기 위해 현재 zip 항목을 엽니 다하는 기능이지만 zip_read () 를 통해 얻은 항목 자원 핸들을 먼저 가져와야하는 경우에만 가능합니다.
먼저 zip_entry_open ()을 호출하면 항목 핸들이 없으므로 기능이 실패하여 항목을 열 수 없습니다.
Zip_Read () 의 반환 값이 False 인지 판단하지 않습니다.
이로 인해 후속 zip_entry_open () 오류 가보고됩니다. 순환 구조 검사를 사용해야합니다.
입력 또는 지퍼 자원이 닫히지 않음 <br> 이로 인해 리소스 누출 및 프로그램 성능 저하가 발생할 수 있습니다.
파일 URL을 사용하여 직접 zip을 읽으십시오
PHP 구성에서 URL 양식의 파일을 열 수 있는지 확인하십시오 ( allow_url_fopen을 활성화해야 함).
Zip_Read ()는 압축 패키지에서 다음 파일 항목을 얻는 데 사용되며 Traversal의 시작점입니다.
zip_entry_open ()은 zip_read ()가 반환 한 항목을 열고 파일 내용을 읽을 준비를하는 데 사용됩니다.
그것을 사용할 때는 먼저 zip_read ()를 호출 한 다음 zip_entry_open ()을 호출해야합니다. 둘이 함께 사용될 때만 ZIP 파일의 내용을 올바르게 읽을 수 있습니다.
올바른 통화 순서를 마스터하면 일반적인 실수를 피하기 위해 지퍼 파일을 효율적이고 안정적으로 처리 할 수 있습니다.