'php' 카테고리의 다른 글
php ftp 함수 (0) | 2012.10.14 |
---|---|
php.ini설정 - display_errors(php 에러 출력 설정) (0) | 2012.10.11 |
서버 분배(로드밸런싱... ) (0) | 2012.10.09 |
[알고리즘] PHP의 FTP 함수를 이용한 다른 서버로의 파일 전송 (0) | 2012.10.08 |
php 썸네일 이미지 만들기 (0) | 2012.09.29 |
php ftp 함수 (0) | 2012.10.14 |
---|---|
php.ini설정 - display_errors(php 에러 출력 설정) (0) | 2012.10.11 |
서버 분배(로드밸런싱... ) (0) | 2012.10.09 |
[알고리즘] PHP의 FTP 함수를 이용한 다른 서버로의 파일 전송 (0) | 2012.10.08 |
php 썸네일 이미지 만들기 (0) | 2012.09.29 |
FTP함수의 종류와 사용법
(1) ftp_connect : FTP서버에 연결한다.
-----------------------------------------------
int ftp_connect (string host [, int port])
$ftp=ftp_connect("서버주소 또는 도메인명",21);
-----------------------------------------------
(2) ftp_login : 계정과 패스워드로 서버에 접근한다.
-----------------------------------------------
int ftp_login (int ftp_stream, string username, string password)
$ftplogin = ftp_login($ftp, "$ftp_user_name", "$ftp_user_pass");
-----------------------------------------------
(3) ftp_pwd : 현재 디렉토리 값을 리턴한다.
-----------------------------------------------
int ftp_pwd (int ftp_stream)
$ftp_dir = $ftp_pwd($ftp);
-----------------------------------------------
(4) ftp_cdup : 가장 상위 디렉토리로 이동
-----------------------------------------------
int ftp_cdup (int ftp_stream)
$ftp_dir = $ftp_cdup($ftp);
-----------------------------------------------
(5) ftp_chdir : FTP 디렉토리의 변경
-----------------------------------------------
int ftp_chdir (int ftp_stream, string directory)
$chdir=ftp_chdir ($ftp, $ftp_dir);
-----------------------------------------------
(6) ftp_mkdir : 디렉토리를 만들고 만든 디렉토리명을 반환한다.
-----------------------------------------------
string ftp_mkdir (int ftp_stream, string directory)
$mkdir = ($ftp,"만들 디렉토리명");
-----------------------------------------------
(7) ftp_rmdir : 디렉토리를 삭제한다.
-----------------------------------------------
int ftp_rmdir (int ftp_stream, string directory)
$mkdir = ($ftp,"삭제할 디렉토리명");
-----------------------------------------------
(8) ftp_nlist : 디렉토리의 파일이름을 배열로 반환한다.
-----------------------------------------------
int ftp_nlist (int ftp_stream, string directory)
$contents = ftp_nlist( $ftp, "디렉토리명");
-----------------------------------------------
(9) ftp_rawlist : 디렉토리의 파일이름과 읽고 쓰고 실행할 권한을 파일 당 한 줄의 배열로 반환한다.
-----------------------------------------------
int ftp_rawlist (int ftp_stream, string directory)
$contents = ftp_nlist( $ftp, "디렉토리명");
-----------------------------------------------
(10) ftp_systype : FTP서버의 타입을 리턴하는데 리눅스는 UNIX로 표시해준다.
-----------------------------------------------
int ftp_systype (int ftp_stream)
echo ftp_systype($ftp);
-----------------------------------------------
(11) ftp_get : FTP로부터 파일을 다운로드 받는다.
-----------------------------------------------
int ftp_get (int ftp_stream, string local_file, string remote_file, int mode)
$download = ftp_get($ftp, "저장할 파일명", "다운받을 파일명","FTP_ASCII or FTP_BINARY");
-----------------------------------------------
.pl 또는 .cgi 같은 Perl CGI인 경우에는 FTP_ASCII로 다운 받고 다른 파일은 FTP_BINARY로 다운 받아야 한다.
(12) ftp_fget : FTP로부터 파일 포인터를 다운받는다.
-----------------------------------------------
int ftp_fget (int ftp_stream, int fp, string remote_file, int mode)
$download = ftp_fget($ftp, "저장할 파일명", "다운받을 파일명","FTP_ASCII or FTP_BINARY");
-----------------------------------------------
(13) ftp_put : FTP서버에 파일을 업로드 한다.
-----------------------------------------------
int ftp_put (int ftp_stream, string remote_file, string local_file, int mode)
$upload = ftp_put($ftp, "업로드할 파일명", "업로드될 파일명","FTP_ASCII or FTP_BINARY");
-----------------------------------------------
(14) ftp_fput : FTP서버에 파일 포인터를 업로드한다.
-----------------------------------------------
int ftp_fput (int ftp_stream, string remote_file, string local_file, int mode)
$upload = ftp_fput($ftp, "업로드할 파일명", "업로드될 파일명","FTP_ASCII or FTP_BINARY");
-----------------------------------------------
(15) ftp_size : 파일의 사이즈를 구한다.
-----------------------------------------------
int ftp_size (int ftp_stream, string remote_file)
$filesize = ftp_size( $ftp, $contents[$i] );
-----------------------------------------------
ftp_nlist 나 ftp_rawlist에 의해 구한 파일명에 대한 배열값인 $contents[$i]에는 각 파일명과 속성이 저장되어지는데 이 파일명을 사이즈로 구하면 파일이면 사이즈가 리턴되고 디렉토리이면 -1이 리턴된다.
(16) ftp_mdtm : 파일의 마지막 수정시간을 timestamp 값으로 리턴한다.
-----------------------------------------------
int ftp_mdtm (int ftp_stream, string remote_file)
$filemdth = ftp_size( $ftp, "파읾명");
-----------------------------------------------
(17) ftp_rename : 파일명을 변경한다.
-----------------------------------------------
int ftp_rename (int ftp_stream, string from, string to)
$rename = ftp_rename( $ftp, "바꿀 파일명", "바뀐 후 파일명");
-----------------------------------------------
(18) ftp_delete : 해당 파일을 삭제한다.
-----------------------------------------------
int ftp_delete (int ftp_stream, string path)
$delfile = ftp_delete($ftp, "지울 파일명");
-----------------------------------------------
(19) ftp_quit : 연결된 FTP의 접속을 끊는다.
-----------------------------------------------
int ftp_quit (int ftp_stream)
ftp_quit ($ftp);
-----------------------------------------------
SNS식 현재로부터 얼마 지났는지 표시해주는 함수 (0) | 2012.10.17 |
---|---|
php.ini설정 - display_errors(php 에러 출력 설정) (0) | 2012.10.11 |
서버 분배(로드밸런싱... ) (0) | 2012.10.09 |
[알고리즘] PHP의 FTP 함수를 이용한 다른 서버로의 파일 전송 (0) | 2012.10.08 |
php 썸네일 이미지 만들기 (0) | 2012.09.29 |
우분투로 APM을 설치하면...php 설정중 오류가 발생하면 에러 내용이 출력되지 않는다.
php.ini 설정 중에 출력할 지 여부를 설정 할 수 있다.(우부투 보통 /etc/php5/apache2/php.ini)
display_errors = On
으로 해주면 에러가 출력된다.
혹시나 Notice가 같이 출력된다면,
error_reporting = E_ALL & ~E_NOTIC
으로 설정해주면...에러 리포팅이 모든 오류(E_ALL) 와(&) NOTIC을 제외한(~E_NOTIC)으로 정해주면 된다.
php.ini 의 자세한 설정은 아래 사이트에서 ^^
http://www.php.net/manual/kr/errorfunc.configuration.php
설정후!
아파치를 재시작 해주면 된다!
SNS식 현재로부터 얼마 지났는지 표시해주는 함수 (0) | 2012.10.17 |
---|---|
php ftp 함수 (0) | 2012.10.14 |
서버 분배(로드밸런싱... ) (0) | 2012.10.09 |
[알고리즘] PHP의 FTP 함수를 이용한 다른 서버로의 파일 전송 (0) | 2012.10.08 |
php 썸네일 이미지 만들기 (0) | 2012.09.29 |
[출처] 서버 분배(로드밸런싱... )|작성자 한결아빠
php ftp 함수 (0) | 2012.10.14 |
---|---|
php.ini설정 - display_errors(php 에러 출력 설정) (0) | 2012.10.11 |
[알고리즘] PHP의 FTP 함수를 이용한 다른 서버로의 파일 전송 (0) | 2012.10.08 |
php 썸네일 이미지 만들기 (0) | 2012.09.29 |
코드이그나이터 한국 포럼 (0) | 2012.09.24 |
서버를 분리하면서 알게된 방법입니다.
디비 서버를 분리하는 것은 별문제가 아니지만
웹서버와 이미지 서버를 분리할 때는 그리 간단하지 않을 것이라 생각하는데요.
웹서버가 첨부파일을 받아서 이미지 서버로 전송해 주어야하는데
PHP의 FTP 관련 함수로 실시간으로 전송하는 방법으로 구현했습니다.
자료를 찾아보니 PHP 4.xx 버젼에서는 속도가 느리다는 지적이 있었는데요
실제로 PHP 4.4xx 버전에서 테스트 해보니 접속 속도가 조금 떨어지더군요
그래도 어느정도 쓸만하다고 생각됐구요.
PHP 5.1.4 버젼에서 해보니 실시간으로 로컬에서 저장하는 것처럼
속도의 문제가 없어 권해드립니다.
아래는 제가 사용하는 전송 프로그램입니다.
여러개 파일을 한꺼번에 전송할 수 있도록 했습니다.
img 라는 디렉토리에 a.jpg b.jpg c.jpg 파일을 전송한다면
파일은 , 로 구분하고 서브 디렉토리 생성이 필요할 경우 thum/e.jpg 식으로 하시면
디렉토리가 생성되도록 했습니다.
$ftp_host = "";
$ftp_user = "";
$ftp_pass = "";
내용을 설정하시구요.
// $files = "a.jpg,thum/b.jpg,orig/c.jpg"; // 서브 디렉토리의 형식도 가능
$files = "a.jpg,b.jpg,c.jpg"; // 전송할 파일들
$source_dir = "img"; // 파일 저장 디렉토리
$target_dir = "img"; // FTP 서버로 전송할 디렉토리
ftp_upload($files,$source_dir,$target_dir);
이런식으로 사용하시면 됩니다.
참고로 100개 파일씩 루프로 전송을 해보았는데
전혀 문제가 없었습니다.
function ftp_upload($files,$source_dir,$target_dir){ // files 에서 (,)로 구분
$ftp_host = "";
$ftp_user = "";
$ftp_pass = "";
$result = 0;
$conn_id = ftp_connect($ftp_host); // FTP 서버 연결
$login_result = ftp_login($conn_id, $ftp_user, $ftp_pass); // 접속
if(!$conn_id || !$login_result) return; // 접속실패시 결과 반환
$dir = ftp_chdir($conn_id, $target_dir); // 해당 디렉토리로 이동
$files = explode(',',$files); // 파일구분
foreach($files as $file){
$file = trim($file);
$d = explode('/',$file); // 서브 디렉토리
if(count($d)>1){
$dir_sub = "";
for($i=0;$i<count($d)-1;$i++){
if($dir_sub){ $dir_sub .= "/".$d[$i]; }
else{ $dir_sub = $d[$i]; }
@ftp_mkdir($conn_id, $dir_sub); // 서브 디렉토리가 없을 경우 생성
}
}
$up = ftp_put($conn_id, $file, $source_dir."/".$file, FTP_BINARY); // 파일 전송
//echo "$up = $source_dir/$file -> $target_dir/$file<br>\n";
if($up){ $result++; }
}
ftp_close($conn_id); //연결 끊기
return $result;
}
PS 서버를 분리하는데 좋은 팁있으며 부탁드립니다.
php.ini설정 - display_errors(php 에러 출력 설정) (0) | 2012.10.11 |
---|---|
서버 분배(로드밸런싱... ) (0) | 2012.10.09 |
php 썸네일 이미지 만들기 (0) | 2012.09.29 |
코드이그나이터 한국 포럼 (0) | 2012.09.24 |
파일 존재 여부 함수 (0) | 2012.09.10 |
업로드한 파일이나 이미 저장된 파일을 축소해서 썸네일을 생성하는 방법을 요약하면
1. 원본이미지를 불러온다
2. 새로이 생성될 이미지가 들어갈 집을 만든다
3. 만들어진 집에 원본이미지를 축소하여 붙여 넣는다
4. 저장한다.
예를들어 400*200 인 origin.gif 를 200*100 의 copy.gif 로 만드는 과정을 보자
// 원본 이미지 load
$path = "/images/origin.gif";
$o_img = imagecreatefromgif($path);
// 썸네일 이미지가 들어갈 집 만들기
$n_img = imagecreatetruecolor(200,100);
// 생성한 집에 원본이미지를 축소해서 넣기
imagecopyresampled($n_img,$o_img,0,0,0,0,200,100,400,200);
// 이미지 저장하기
$n_path = "/images/copy.gif";
imagegif($n_img, $n_path);
// 썸네일 생성
imagecopyresampled($n_img, $o_img, 0,0,$offsetX,$offsetY,$w,$h,$cropW,$cropH);
각각의 파라미터들은 썸네일이 될 이미지, 원본 이미지, x좌표 기준점, y좌표 기준점, x좌표, y좌표, 축소할 길이, 축소할 세로길이,
원본에서 잘라낼 가로길이, 원본에서 잘라낼 세로길이..
참 많다..
[출처] php 썸네일 이미지 만들기|작성자 즐거운일과 사람들
서버 분배(로드밸런싱... ) (0) | 2012.10.09 |
---|---|
[알고리즘] PHP의 FTP 함수를 이용한 다른 서버로의 파일 전송 (0) | 2012.10.08 |
코드이그나이터 한국 포럼 (0) | 2012.09.24 |
파일 존재 여부 함수 (0) | 2012.09.10 |
페이징 처리 (0) | 2012.07.31 |
http://codeigniter-kr.org
코드이그나이터 한국 포럼
[알고리즘] PHP의 FTP 함수를 이용한 다른 서버로의 파일 전송 (0) | 2012.10.08 |
---|---|
php 썸네일 이미지 만들기 (0) | 2012.09.29 |
파일 존재 여부 함수 (0) | 2012.09.10 |
페이징 처리 (0) | 2012.07.31 |
[PHP] 정규표현식 - preg_replace, preg_match, str_replace (0) | 2012.07.26 |
php 썸네일 이미지 만들기 (0) | 2012.09.29 |
---|---|
코드이그나이터 한국 포럼 (0) | 2012.09.24 |
페이징 처리 (0) | 2012.07.31 |
[PHP] 정규표현식 - preg_replace, preg_match, str_replace (0) | 2012.07.26 |
사이트 긁어오기 (0) | 2012.07.25 |
$page_line=20; // 페이지당 line 수
$page_block=10; // 블록당 page 수
코드이그나이터 한국 포럼 (0) | 2012.09.24 |
---|---|
파일 존재 여부 함수 (0) | 2012.09.10 |
[PHP] 정규표현식 - preg_replace, preg_match, str_replace (0) | 2012.07.26 |
사이트 긁어오기 (0) | 2012.07.25 |
snoopy class를 이용한 youtube 이미지 저장 (php) (0) | 2012.07.25 |
//iframe 제거 $STRING = preg_replace("!<iframe(.*?)<\/iframe>!is","",$STRING); //script 제거 $STRING = preg_replace("!<script(.*?)<\/script>!is","",$STRING); //meta 제거 $STRING = preg_replace("!<meta(.*?)>!is","",$STRING); //style 태그 제거 $STRING = preg_replace("!<style(.*?)<\/style>!is","",$STRING); // 를 공백으로 변환 $STRING = str_replace(" "," ",$STRING); //연속된 공백 1개로 $STRING = preg_replace("/\s{2,}/"," ",$STRING); //태그안에 style= 속성 제거 $STRING = preg_replace("/ style=([^\"\']+) /"," ",$STRING); // style=border:0... 따옴표가 없을때 //태그안의 width=, height= 속성 제거 $STRING = preg_replace("/ width=(\"|\')?\d+(\"|\')?/","",$STRING); //img 태그 추출 src 추출 preg_match("/<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i",$STRING,$RESULT);
$STRING = preg_replace("/ style=(\"|\')?([^\"\']+)(\"|\')?/","",$STRING); // style="border:0..." 따옴표 있을때
$STRING = preg_replace("/ height=(\"|\')?\d+(\"|\')?/","",$STRING);
preg_match_all("/<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i",$STRING,$RESULT);
파일 존재 여부 함수 (0) | 2012.09.10 |
---|---|
페이징 처리 (0) | 2012.07.31 |
사이트 긁어오기 (0) | 2012.07.25 |
snoopy class를 이용한 youtube 이미지 저장 (php) (0) | 2012.07.25 |
PHP5: Screen scraping with DOM and XPath (0) | 2012.07.24 |