티스토리 뷰

xe를 공부하면서 많이 배우는것 같다.


xe 마이그레이션 툴은 정보를 xml로 만들어서 xe에서 xml을 읽어들이는 방식이다.


여기서 의문이 들었던게 xe 마이그레이션 툴을 사용하다가 제목,내용,글쓴이등 텍스트는 이전이 되는게 이해 되는데 첨부파일은 binary 일텐데 어떻게 마이그레이션이 되지?


하는 의문이였다.


그래서 소스를 까보니 binary를 php 의 base64_encode 함수를 이용해 만들고 그것을 읽어들이는 방식이였다.


이러면 어떠한 정보로 되어 있다 하더라도 xe로 마이그레이션이 가능하리라 생각되었다.


일단 첨부파일 binary를 base64_encode를 만드는 방법은


zMigration.class.php 파일에서 printBinary 함수를 보면 된다.


function printBinary($filename) {

            $filesize = filesize($filename);

            if($filesize<1) return;


            $fp = fopen($filename,"r");

            if($fp) {

                while(!feof($fp)) {

                    $buff .= fgets($fp, 1024);

                    if(strlen($buff)>1024*512) {

                        print "\r\n<buff>"; print base64_encode($buff); print "</buff>";

                        $buff = null;

                    }

                }

                if($buff) print "\r\n<buff>"; print base64_encode($buff); print "</buff>\r\n";

                fclose($fp);

            }

            return null;

        }


순서를 살펴보면

1. export.php 에서 db select 해서 각 항목들을 $obj에 값을 담는다. 

예)

$obj->attaches = $files; 

$obj->content = str_replace($m, '"'.$filename.'"', $obj->content);

$obj->extra_vars = $extra_vars;


2. zMigration.class.php 파일에 있는 printPostItem 함수를 이용해 print 한다.

$oMigration->printPostItem($document_info->document_srl, $obj, $exclude_attach);


3. zMigration.class.php 파일에서는 각 항목에 담긴 $obj에서 값을 빼서 스트링은 $this->printString() 함수를 이용해 출력하고 binary는 $this->printBinary() 함수를 이용해 출력한다.


그럼 결과물은 xml 형태로 만들어진다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함