php extension , memcache 와 memcached 의 차이점은 뭐지?

php 에서 memcached 데몬을 사용하기 위해서는 php 확장이 필요하다.

pecl 패키지로 설치하게 되는데, 두가지 버전이 있다.

http://pecl.php.net/package/memcache ( stable : 2.2.6 - 2010/10/03 , beta : 3.0.6 - 2011/04/11)
http://pecl.php.net/package/memcached ( stable : 2.0.1 - 2012/03/03 )


memcache 와 memcached 의 차이점은 뭔가?


memcached 는 memcached 데몬에 딸려오는(?) libmemcached 를 활용한다.

memcache 는 직접 처리하는 것 같다.

그래서,   http://us3.php.net/manual/en/book.memcache.php
보다  http://us3.php.net/manual/en/book.memcached.php

가 기능이 더 많다. libmemcached 의 전체 기능을 쓸 수 있기 때문이다.(memcache 는 직접 구현해야 한다)


php 버전 지원차이는

memcache 는 이전 버전 php 4.3.11 이상
memcached 는 php 5.2 이상

즉, 이전버전 php4 를 쓰면 어쩔 수 없이 memcache 를 써야 한다.
(우리 모두 php5 이상으로 업그레이드 하자. 현실은 ㅜㅜ)




WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret
fsockopen 을 쓰는 API 의 라이브러리를 사용하다가 이런 메세지를 만나게 되었다.

Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of fsockopen(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in ....

php.ini 의 allow_call_time_pass_reference  부분을 고치느냐.
API 라이브러리를 고치느냐.

10초 고민하다가, fsockopen 에서 value 를 받는 방식으로 바꿨다.
(fsockopen 에서 reference 로 받아야 하는 이유가 있나?)

 

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret
php 는 보통 APM 으로 웹프로그래밍에 주로 쓰인다.

그런데, 꼭 웹프로그래밍에만 쓴다는 것은 아니다. php 를 CLI (Command Line Interface) 로 써서 서버관리용으로 쓰기에도 편하다.
보통 shell 프로그래밍이라고도 하는데, perl , python 등도 주로 사용된다.

cron 으로 등록해놓고 사용하는데, ubuntu 에서는 주의할 부분이 있다.
centos 등 다른 배포판은 어떤지 모르겠다.(다를것이다)

우분투는 /etc/php5/apache2 , /etc/php5/cli  라는 다른 디렉토리에 php.ini 을 사용한다.
php.ini 을 수정해서 쓰고, CLI 모드로 사용하는 경우 cli/php.ini 도 수정해 준다.
그렇게 사용하지 않는 다면 프로그램내에 ini_set 함수를 써서 옵션을 변경해서 사용해도 된다.
ini_set("memory_limit", "32M");
이런식으로 사용한다.

php 를 cron 으로 등록해서 메일을 보내는 메일링시스템에 적용중이다.
그런데, 메일을 보낼때 첨부파일이 커지는 경우 memory_limit 에러가 난다.
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 17623691 bytes)
위와 같은 에러가 난다. 진한부분의 값에 맞게 memory_limit 값을 조정한다.


postfix 를 쓰는 경우
postfix/sendmail[26637]: fatal: root(0): message file too big
이런식의 에러가 날 수도 있다. postfix 는 기본으로 10M 이하로 제한하고 있는 듯 하다.
이것을 늘려주려면, /etc/postfix/main.cf 에 다음을 추가해준다.
message_size_limit = 20480000
대략 20M 정도를 잡아줬다.
기본값 "default: 10240000 bytes" 라고 한다.(byte 계산을 저렇게 하는게 아니었던 것 같은데?)


WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret
find 로 원하는 파일을 찾고
grep 으로 해당 파일의 원하는 단어를 찾습니다.

find . -type f -name "*.php" -exec grep -EH -n --color "str_|ereg" {} \;

-H 옵션은 해당 파일 이름을 보여주고
-n 은 찾은 단어의 라인번호를 보여줍니다.

확장자를 여러개 지정해서 사용하고 싶은 경우.

-name "*.php" -o -name "*.jsp" 처럼 -o 로 연결해 줍니다.( -or 를 생각하면 됨. 비슷한 예로 -a/-and 가 있음)



php 5.3.x 버전에서 deprecated 되는 함수들입니다.
http://php.net/manual/en/migration53.deprecated.php

자주쓰는 함수들이 있으면 대체 함수로 바꿔주세요.


WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret
Centos 5 는 사용하기 편한 배포판중 하나다.(개인적으로 우분투가 좋다)
yum 으로 패키지 관리하는 것도 우분투(데비안)의 apt-get  부럽지 않을만큼 편하다.

그런데, centos5 가 나온지 꽤 되어서 인지 버전이 낮은 프로그램이 있다.
그중 하나가 php 인데, 공식지원은 5.1.6 버전이다.

5.2.x 버전을 사용하기 위해서는 비공식 저장소를 이용해야 한다.

http://wiki.centos.org/AdditionalResources/Repositories
를 보면 추가 가능한 저장소들이 있다. 이중 CentOS-Testing 를 이용하자.
# cd /etc/yum.repos.d
# wget http://dev.centos.org/centos/5/CentOS-Testing.repo
테스팅 저장소를 등록한다.

php 업데이트 방법은
# yum --enablerepo=c5-testing update php
혹시 php-mcrypt 같은 추가로 설치한 확장이 같이 업데이트 되지 않으면 별도로 업데이트해준다.
# yum --enablerepo=c5-testing update php-mcrypt


참조 : SRPM 으로 하는 방법
http://echodittolabs.org/blog/2009/05/all-i-want-php-52-centosrhel

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret
php 프레임워크 CI 한국사용자 포럼이 오픈하였습니다.

http://www.codeigniter-kr.org
입니다.

다른 프레임워크도 활발히 사용되었으면 좋겠네요.
php 쪽은 프레임워크의 사용률이 저조한 편입니다.

zend, cakephp 도 화이팅.

CI 로 만든 포럼, 게시판등도 오픈한다고 합니다.
개발자들을 행복하게 만드는 프레임워크가 되길...



WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret
지난 화요일에 한 세미나인데, 이제야 여유가 생겨. 자료를 정리한다.
자세한 사항은 다른분들이 많이 남겨주셨고. 링크하나로 대신한다.
http://lovesera.com/tt/387


강의 슬라이드 : http://talks.php.net/show/korea09

첫세션 (슬라이드 1~22까지)

둘째세션(슬라이드 24부터)

지난번 처럼 이번에도 녹음을 해봤는데, 녹음환경이 좋지 않았다.(일찍가서 스피커앞에 두면 좋았을듯) 뭐 전문적으로 녹음하겠다는 것이 아니었으니, 들을 수 있을 정도면 되겠지.


세미나를 듣고, 고민이 생겼다.
php 와 성능, 퍼포먼스.
그리고 프레임워크. 과연 프레임워크를 쓰지 않는 것이 좋을까?
물론 결론은 프로젝트에 따라 다르겠지.

php 언어의 특성상. 프레임워크가 맞지 않은 측면이 많은 것 같다.
이 논란은 한동안 계속될 듯 싶다.


ps. 슬라이드 보면서 다시 들어봐야겠다.
  녹음상태가 안좋아서 그렇지, 영어라서 못 알아듣는 것이 아니야(정말?) =3=3=3


WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret
php 의 libcurl 을 이용해서 aspx 사이트 로그인 부분을 테스트 중인데.
뭐가 빠졌는지 잘 안되는구나.

로그인시 얻은 cookie 를 넘겨도 인증이 안되는지, 접근이 안된다.

aspx 사이트에서는 따로 뭔가 처리를 하나?
(viewstate 설정도 꺼져 있는 것 같은데, 새 버전은 다른 방식을 쓰나?)

다른 aspx 사이트도 테스트해봐야 겠다.
유독 그 사이트만 그런지. aspx 사이트 모두가 그런지.

쿠키중에 header 로 (set-cookie) 넘어오지 않는 값이 있다.
__utma
__utmb
__utmc
__utmz
인데, 이 것 때문일까?


WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  1 , 댓글  0개가 달렸습니다.
secret
어! 저런 것이 가능하군.
http://phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=63126

.php 만 실행되어야 하는데, .php.en, .php.1, .php.2  등이 실행이 되버리면 어쩌란 말인가?

상식적으로 저게 되는 이유를 모르겠다.
버그가 아니라도, 저런 위험성을 내포하고 있다는 것은 꽤 큰 보안이슈임에 틀림없다.

정확하지는 않지만, apache 의 php , perl, python 등 Server Side Script 를 처리하는 방법의 문제가 아닐까 생각이 든다. 외국 사례를 찾아보다 보니 꽤 오래전에 언급이 되었나보다.
http://seclists.org/vulnwatch/2006/q3/0002.html

근데, 저 이슈가 왜 잠잠(?)했었지?
다들 별로 대수롭지 않게 생각했나?

옵션으로 처리가능한지 모르겠지만, 우분투, Centos 등의 기본설정으로도 저게 가능하다면 문제가 좀 심각해 보인다.
오래전부터 가능했던 문제인듯 싶은데, 검색능력이 딸려서 어떻게 해결되었는지 모르겠다.
apache 쪽에 분명 관련 내용이 있을 법 한데. 못찾겠다.
직접 문의를 해볼까?



WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret


오! 한국에서도 PHP fest 도 하는군요.
참 많이 쓰이는 언어임에도 저런 행사는 거의 없었죠.

자세한 사항은 이곳에서.
http://www.phpkorea.org/PHPFest/2008

앞으로 PHP 쪽의 이런 행사가 많았으면 좋겠네요.

특히 eclipse 와 php 의 개발환경에 관심을 가지고 있는데, 좋은 행사가 되겠네요.
cakephp 프레임웍에 대한 이야기도 Good.


WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret
http://www.ibm.com/developerworks/kr/library/os-php-future/
읽어보면 좋은 내용.

현재는 php5 가 나와있는 상태. php6 는 개발버전.
그런데, 여전히 웹호스팅에서는 php4 버전을 주로 사용한다.
php5 로의 이전은 그리 큰 문제가 발생하지 않음에도, php4 에서 업그레이드하길 꺼려하는 것 같다.

php6 는 더 험난(?)할 듯.
보안상 문제시 되는 것들은 아예 없애는 방법을 썼다. 환영! 환영!

개발버전을 써 봐야 겠다.


WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret