For A While

검색 :
RSS 구독 : 글 / 댓글 / 트랙백 / 글+트랙백

간단하게 캐시를 구현 할 수 있는 캐시 클래스 cacher.class.php

2010/07/02 05:28, 글쓴이 While

보통 웹 작업시에 아주 복잡한 연산이 있거나 서버에 부담을 주는 페이지는 "캐시"방식으로 부담을 최소화 시켜주는 방법을 씁니다.

평소에 이 캐시 방식을 쓸때 매번 코드를 길게 적어줘야했었는데 너무 귀찮아서 라이브러리를 찾아보다가 아래에 아주 편하게 누군가가 만들어둔걸 발견했습니다.

Cacher

다운받아서 보면 아주 쉽게 사용할 수 있도록 되어 있습니다.

임시 캐시파일의 기본 디렉토리는 /tmp/ 폴더로 되어 있습니다.

2010/07/02 05:28 2010/07/02 05:28

맨 위로

irc 봇 socket_select 함수 문제 해결

2010/02/11 05:51, 글쓴이 While
function process()
{
while (1)
{
$botSocketArray = $this->getIrcSocketList();
// print_r($botSocketArray);
if ($bufSockSelect=@socket_select($botSocketArray['socket'], $write, $except = NULL, 1))
{
foreach ($botSocketArray['class'] as $class)
{
if (!@socket_recv($class->socket,$buf,512,MSG_PEEK)) continue;
if ($class->socktype == "irc")
{ // irc소켓일 경우

이런식으로 애매하게 쓰고 있던 socket_select 함수를,

function process()
{
while (1)
{
$botSocketArray = $this->getIrcSocketList();
if (!$botSocketArray) return error("어떤 봇도 실행중이지 않습니다.");
foreach ($botSocketArray['class'] as $class)
{
$fd = array( $class->socket );
if (!$bufSockSelect=@socket_select($fd, $write, $except = NULL, 0)) continue;
if (!@socket_recv($class->socket,$buf,512,MSG_PEEK)) continue;
if ($class->socktype == "irc")
{ // irc소켓일 경우

이런식으로 좀더 확실하게 바꿔주었더니, 잘 동작 합니다.


처음의 소스를 썼을때 socket_select 의 리턴이 2이면 Connnection Refused 가 나야하는데, 왜 자꾸 정상 접속인가 했더니 함수를 잘못 쓴거였네요.
2010/02/11 05:51 2010/02/11 05:51

맨 위로

PHP - SMS봇

2009/09/11 20:43, 글쓴이 While
사용자 삽입 이미지


문자를 보내면 마치 irc등에서 봇에게 명령을 보낸것 처럼 문자로 답변을 해줍니다.

원래, 버스 도착시간 확인용으로 만든거였는데 이 기능 정말 유용합니다. (도착정보는 businfo.go.kr 에서 가져옵니다.)


사용자 삽입 이미지



사용자 삽입 이미지

모듈(?) 부분 소스입니다.
2009/09/11 20:43 2009/09/11 20:43

맨 위로

php FILES 관련

2009/07/19 02:11, 글쓴이 While

파일 업로드 관련소스를 보면 대부분 복잡합니다.
고로 귀찮아서 책안보시고 공부하는분들은 접근하기가 어렵는데, 사실 한번 해보면 쉽습니다.

아래는 기본적인 업로드에 관련된 소스입니다. 폼입니다.




이렇게 보내면 이렇게 변수를 받습니다.



아주 간단하게는 이렇게 하면 끝납니다.


move_uploaded_file 함수 말고 cp라는 함수도 있는데, 이 함수가 더 낫다고 하네요.
이 코드는 서버의 임시 폴더로 들어간 파일을 현재 php파일이 존재하는 곳의 img 폴더에 업로드한 파일명으로 파일을 옮기는 과정입니다. 간단하게 이렇게 하면 업로드가 끝납니다.

확장자 제한, 오류발생시 무시등은 여러분의 몫입니다.

2009/07/19 02:11 2009/07/19 02:11

맨 위로

[php] 아주 편하고도 유용한 함수 implode()

2009/04/28 23:44, 글쓴이 While
어떤 변수에 s1 s2 s3 s4 s5 s6 s7라는 글이 들어가있는 변수나 어떤 배열의 구성 요소를,
모두 나눠서 다시 s1, s3, s4, s5, s6 등으로 재결합 해주는 작업.
전 여태까지 implode() 함수의 존재를 몰라서 위와 같은 코드를 구현할 때 다음과 같이 했습니다.
상당히 비효율적인 코드입니다. 저 글을 나눠주고, 들어갈 글이 있는 $c 변수를 나중에 다른것과 겹치지 않도록 초기화해주고, for문을 이용해 루프를 돌리며 $c에 글을 추가해주면서, 다음에 돌 변수가 존재하는가 안하는가 여부 판단후 꼬리를 붙여주는 형태입니다.
그러나 implode() 함수를 쓰면 단 한방에 끝낼 수 있습니다.
implode() 함수가 어떤 구조인지는 모르겠지만, 적어도 직접 함수 하나를 만들어 쓰는 것 보다는 더 효율적일겁니다. 상당히 유용한 함수.
2009/04/28 23:44 2009/04/28 23:44

맨 위로

[php] if문의 새로운(?) 문법.

2009/04/28 23:34, 글쓴이 While
난 항상 if문을 코딩할 땐,

if ($a == "a") echo "test";
else echo "test2";


라던가,

if ($a == "a")
{
    echo "test";
}
else
{
    echo "test2";
}


로 쓰곤 했다.

그러나 얼마전, 한줄로 여러 명령을 쓰고 싶은데 { } 를 안쓰고 어떻게 방법이 없을까 하고 찾아보다가, 이렇게 새로운 문법을 발견했다.

if ($a == "a"):
    echo "test";
    exit;
else:
    echo "test2";
    echo "test3";
endif;
echo "EOF";


이렇게 { } 가 없이 간단한 if문을 작성할땐 이런 문법이 쓰일 수 있다.
{}이 없고 : 과 endif; 가 생겼다.

이 문법은 이럴때 편하게 쓰일 수 있다.

if ($a == "a")
{
    echo "test";
    myfunc($a);
    exit;
}
이와같이 별 내용도 없는 주제에 괜히 몇줄이나 잡아 먹고 있는놈을,

if ($a == "a"): echo "test"; myfunc($a); exit; endif;
이렇게 간단하게 바꿔줄 수 있다.
2009/04/28 23:34 2009/04/28 23:34

맨 위로

나눔고딕코딩

2009/03/15 00:58, 글쓴이 While
사용자 삽입 이미지


네이버에서 무료로 배포하는 오픈소스글꼴인 나눔고딕 코딩이다.
코딩용이면서 벡터체인 글꼴을 처음써보는데 꽤 좋다.
계속 쓸듯..
2009/03/15 00:58 2009/03/15 00:58

맨 위로