2010-02-23 2 views
1

코드를 게시하거나 HTTP를 통해 원격 서버에있는 알려진 zip 파일을 열고 해당 zip 파일의 내용을 호출 스크립트와 동일한 서버의 폴더로 추출하는 PHP 스크립트의 작동 예제를 가리킬 수 있습니까? ? 간단한 코드? PHP 스크립트는 중앙 서버에서 update.zip을 가져와 로컬 폴더로 추출합니다!

Server A calls out for zip file located on Server B 
Server B sends the zip file over to server A 
Server A extracts the contents of the Zip to Directory C (pub_html) on Server A 

나는이 작업을하는 방법에 대한 주위 돌고있다 그리고이 예제의 많은 슈퍼 간단해야처럼 정말로 보인다,하지만 난 아무것도 찾을 수 없습니다.

<?php 

    $zip = new ZipArchive; 
    $res = $zip->open('test.zip'); 
    if ($res === TRUE) { 
    echo 'ok'; 
    $zip->extractTo('test'); 
    $zip->close(); 
    } else { 
    echo 'failed, code:' . $res; 
    } 

?> 

당신은, 스크립트 실행 시간 염두하려는 서버가 원격으로 통신 할 수있는 방법 큰 원격 아카이브, 그리고 얼마나 빨리에 따라 수 있습니다 :

답변

1

여기에 가자.

상단의 $ filename 및 $ dest_folder를 적절하게 변경하십시오. $ dest_folder는 현재 현재 폴더 (PHP 스크립트 자체가있는 곳)로 설정됩니다.

<?php 

$filename = 'http://someplace.com/somezipfile.zip'; 
$dest_folder = '.'; 

$out_file = fopen(basename($filename), 'w'); 
$in_file = fopen($filename, 'r'); 
while ($chunk = fgets($in_file)) { 
    fputs($out_file, $chunk); 
} 
fclose($in_file); 
fclose($out_file); 

$zip = new ZipArchive(); 
$result = $zip->open(basename($filename)); 
if ($result) { 
    $zip->extractTo($dest_folder); 
    $zip->close(); 
} 

?> 
+0

달콤한! 나는 그것을 줄 것이다. –

+0

헬기! 완벽하게 작동합니다. 감사!!! 2 일 동안 이걸 크롤링했습니다! dest_folder를 변경하면 zip이 여전히 스크립트 폴더에 기록됩니다. 일단 우리가 그것을 끝내면 그것을 지우고 싶다고 가정합니다. 방법? –

+0

그런 경우 unlink() 명령을 사용하십시오. 대부분의 사람들이 기대하는 이름이 아니기 때문에 많은 사람들이 즉시 그것을 찾지 않습니다. ;) 파일 이름을 바꾸는 것뿐만 아니라 파일을 이동하는데도 사용되는 rename()과 비슷합니다 (동일한 파일 시스템 작업이기 때문에). 결국 : unlink (basename ($ filename)); – Teekin

0

documentation은 간단한 경우를 보여줍니다 섬기는 사람.

+0

감사합니다. Jonathan. 원격 디렉터리를 가리 키도록 open ('test.zip')이 필요합니다. open ('http : // server.com/update.zip'). 그것이 작동한다고 가정하면 압축 해제 된 파일의 대상 디렉토리는 어디서 지정해야합니까? 그것은 "/ test"입니까? –

+0

@ Scott : 네, 틀린 것이 아니라면'/ test'를 사용하면 그 계정의 루트 디렉토리에 즉시 넣을 수 있습니다. – Sampson

0

좋아, 먼저 당신이 zip 파일을 fetsch하고 임시 폴더 또는 다른 곳에 저장하는 컬 기능이나 클래스를 작성하는 것이 좋습니다. zip 파일을 저장 한 후 그 이름을 알고 있다고 가정합니다. 이 추출 zip 파일에 대한 간단하지만 은 그럼 당신은 간단하게이

<?php 
    $zip = new ZipArchive; 
    $zip->open('test.zip'); 
    $zip->extractTo('./'); 
    $zip->close(); 
?> 

을 할 수 있습니다. 그것은 약간의 오류 cathing 필요하지만 그것은 재미를 가지고 일을 :-)

관련 문제