[PHP] 비트연산자(&)를 이용한 플래그 값 비교 방법

비트 연산을 이용해 여러 상태 값을 처리하는 방법을 소개합니다. 비트 연산하면 떠오르는 패턴의 수열이 있습니다. 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 .. 와 같은 공비가 2인 등비수열.. 이제 이 값들을 식재료에 매칭시켜 예를 들어보겠습니다.  

위 코드에서는 아래와 선택했습니다. 파(1) + 김치(16) + 소금(256) + 돼지고기(4096) = 4369 선택된Continue reading “[PHP] 비트연산자(&)를 이용한 플래그 값 비교 방법”

[Nginx] AWS EC2에 Nginx 설치하는 방법 간단 정리

아마존 웹 서비스(AWS)에서 nginx와 mysql, 그리고 php를 구동하기 위한 php-fpm 설치 방법을 소개합니다. yum update

Nginx + PHP FPM 설치

PHP 확장 모듈 설치

PHP APC 설치

문제 : 위 PHP APC를 설치하면 php-fpm 프로세스의 iowait (입출력 대기 부하)가 50~99% 발생하는 문제가 있습니다. 이 과정에서 PHP APC 설치는 권장하지 않습니다. 자료를Continue reading “[Nginx] AWS EC2에 Nginx 설치하는 방법 간단 정리”

[PHP] 시간차 구하는 방법

A라는 게시물이 등록된 시각을 2015-05-12 01:22:20 (2015년 5월 12일 1시 22분 20초)라고 가정하겠습니다. 이때 A게시물이 현재 시각으로 부터 몇 시간이 지났는지를 구하는 방법을 포스팅합니다.

추가 설명을 드리자면 strtotime 함수를 이용해 시간 데이터를 초단위로 변환한 후 값을 연산한 결과를 다시 시간 단위로 만들기 위해 3600(초)를 나눕니다. 이때 발생하는 소수점 이하자리는 제거하여 걸린 시간을 정수로 얻어옵니다.

[PHP] mb_substr 사용 시 문자가 null로 출력되는 경우

한글과 같은 2byte 문자를 자를 경우에는 substr이 아닌 mb_substr을 사용해야 합니다. 그런데 mb_substr 함수를 사용했을때 어떤 경우는 문자열이 잘리지 않고 null로 출력되는 경우가 있습니다. 이런 경우에는 mb_substr 함수의 인자를 확인해보세요.

마지막 인자에 인코딩 타입을 지정해주시면 해결이 됩니다. 너무 간단한 내용이지만 의외의 복병이 될 수도 있습니다. 이 함수 말고도 mb_strlen, mb_strcut 과 같은 함수도 공통으로Continue reading “[PHP] mb_substr 사용 시 문자가 null로 출력되는 경우”

[PHP] 페이지 내용이 출력되지 않거나 소스 그대로 출력되는 문제 해결방법

화면에 아무런 내용이 출력되지 않거나 PHP 소스가 찍혀나오는 경우가 있습니다. 소스 문법상 오류도 없고 아무 이상이 없는데 말이죠. 이런 경우는 PHP 설정을 확인해보시기 바랍니다. php.ini 파일 또는 phpinfo(); 를 통해 php 설정값을 확인가능합니다. 여기서 확인해봐야 할 내용은 short_open_tag 옵션입니다. 만약 이 옵션이 OFF로 되어있다면 이 녀석이 범인입니다. short_open_tag란 PHP코드의 시작과 끝을 <? ~ ?>로 사용할Continue reading “[PHP] 페이지 내용이 출력되지 않거나 소스 그대로 출력되는 문제 해결방법”

[PHP] 영문, 숫자 문자열 검증 간단하게 하는 방법

문자열 검증을 하려면 정규식을 사용하여 체크를 합니다. 도메인, 이메일, 아이디 형식 등등 일정 형식의 문자열을 검증하려면 사용할 수 밖에 없습니다. 하지만 간단한 영문과 숫자만을 검증하는 경우 정규식을 사용하지 않고도 간단하게 체크 가능합니다. 아래 예제를 참고하세요.

이처럼 ctype_alnum 함수로 간단하게 체크 가능합니다.

[PHP] htmlspecialchars과 htmlspecialchars_decode

html의 구문들을 그대로 유지해서 화면에 보여주기 위해 htmlspecialchars를 사용합니다. html 태그를 브라우저가 해석할 수 없도록 구분자들을 대체문자로 치환시킵니다.  그리고 그렇게 치환된 결과물은 사용자가 볼때 html 구문 그대로 보여지게 됩니다. 이렇게 htmlspecialchars 치환된 내용을 다시 브라우저에서 읽어들일 수 있도록 변경하는 방법도 있습니다. 물론 str_replace 로 치환된 문자를 다시 변경 할 수 있겠지만 항상 그렇듯 예외 상황이 발생할Continue reading “[PHP] htmlspecialchars과 htmlspecialchars_decode”

저사양 서버 성능 최적화 하기 (#4 APC 설정)

이제 저사양 VPS 서버 성능 최적화 하기의 마지막 포스팅입니다. APC를 설치만 하고 기본 설정대로 쓰셔도 어느정도 효과는 보시겠지만 좀 더 세부적인 설정을 하고 싶으신 분들은 참고해보시기 바랍니다. 검색을 해봐도 번역 자료도 엉망이고 여기저기 있다보니 어려움이 많았습니다. 나름대로 정리는 했지만 만족스러운 내용이 될지는 모르겠습니다. APC의 설정파일의 경로는 이전 포스팅 #3 APC 설치에서 나와있듯이 /etc/php.d/apc.ini 입니다. viContinue reading “저사양 서버 성능 최적화 하기 (#4 APC 설정)”

저사양 서버 성능 최적화 하기 (#3 APC 설치)

APC (Alternative PHP Cache) 에 대한 설치 방법을 소개합니다. APC란 PHP 페이지를 호출할때마다 해석하지 않고 미리 HTML 문서로 저장해두었다가 사용자에게 별다른 처리과정 없이 보여주는 캐싱 모듈입니다. 이를테면 WP-Super Cache와 비슷한 원리이죠. 하지만 WP-SuperCache와는 다른 퍼포먼스 경험을 하실 수 있습니다. 설치방법은 몹시 간단합니다. 그런데 국내 블로그에는 제대로 된 정보가 없어서 아쉽더군요. yum 패키지 설치 기준으로 설명드리겠습니다.Continue reading “저사양 서버 성능 최적화 하기 (#3 APC 설치)”

[PHP] ereg() is deprecated (or eregi) 오류 발생시 해결 방법

문자열을 정규화 패턴으로 검색 하는 경우 많이 사용하는 ereg/eregi 함수입니다. 하지만 PHP 5.3 이후 버전에서는 deprecated 라는 에러 레벨이 추가되면서 ereg 함수 사용시 “ereg() is deprecated” 라는 오류를 발생시키게 됩니다. 엄밀하게 따진다면 이는 오류가 아닌 경고성 메세지이며 PHP 6에서는 사라지는 함수이니 주의하라는 의미입니다. 이미 PHP 5.x 버전으로 복잡하게 구현된 경우는 php.ini의 error_reporting에서 deprecated 레벨에 대해Continue reading “[PHP] ereg() is deprecated (or eregi) 오류 발생시 해결 방법”