웹마스터 팁

공유 메모리 제어에 관한 함수 정리


1) 공유 메모리 생성
   int shm_attach ( int key [, int memsize [, int perm]])
   공유 메모리 세그먼트를 열거나 생성한다.

   ex) shm_attach($chat, 1024, 0777);
   매개변수 설명 (공유메모리의 키 값, 공유메모리의 사이즈(sysvshm.init_mem), 퍼미션 임의값 0666:8진수)

2) 공유 메모리 종료
   int shm_detach ( int shm_identifier)
   공유 메모리 세그먼트 접속을 종료.
   Unix 시스템에서의 공유메모리는 종료 후에도 여전히 존재한다. :(

3) 공유 메모리 삭제
   int shm_remove ( int shm_identifier)
   위에서 말했듯이 Unix 시스템에서는 종료 후에도 여전히 데이타가 남아있다, 삭제.

4) 공유 메모리 블럭 생성
   int shmop_open ( int key, string flags, int mode, int size)
   공유 메모리 블럭을 열거나 생성.

   "a" : 접근 (IPC_EXCL 상수로 설정) 존재하고 있는 공유 메모리 세그먼트를 여는데 이 flag를 사용.

   "c" : 생성 (IPC_CREATE 상수로 설정) 새로운 공유 메모리 세그먼트를 생성하려할 때 이 flag를 사용.

   ex) $shm_open = shmop_open (0x00ff, "c", 0777, 100);
   매개변수 설명 (키값:10진수 또는 16진수로, "세그먼트의 열기, 생성", 퍼미션:8진수, 사이즈);

   주의 : 세번째와 네번째 인자는 존재하고 있는 메모리 세그먼트를 열때는 0 을 지정해야만 한다.

5) 공유 메모리 블럭 읽기
   string shmop_read ( int shmid, int start, int count)
   공유 메모리 블럭으로부터 데이터를 판독.

   ex) $data = shmop_read($shm_open, 0, 50);
   매개변수 설명 (공유메모리 오픈 핸들(블럭아이디), 시작할offset, count:읽어낼바이트);

6) 공유 메모리 블럭의 사이즈
   int shmop_size ( int shmid)
   공유 메모리 블럭으로부터 총 사이즈를 읽어낸다.

   ex) $size = shmop_size($shm_open);
   매개변수 설명은 생략

7) 공유 메모리 블럭에 데이터 기록
   int shmop_write ( int shmid, string data, int offset)
   공유 메모리 블럭에 데이터를 기록한다.

   ex) $shm_write = shmop_write($shm_open, "데이터를 기록한다", 0);
   매개변수 설명 (공유메모리 오픈 핸들(블럭아이디), 기록할 데이타, 시작할offset)

   위 코드는 "데이터를 기록한다"를 공유 메모리 블럭에 기록하고, 기록된 바이트 수를 $shm_write 에 반환한다.

8) 공유 메모리 블럭 삭제
   int shmop_delete ( int shmid)
   공유 메모리 블럭을 삭제한다.

   ex) shmop_delete($shm_id);
   매개변수 설명은 생략

9) 공유 메모리 블럭 닫기
   int shmop_close ( int shmid)
   공유 메모리 블럭을 닫는다.

   ex) shmop_close($shm_id);
   매개변수 설명은 생략


수고하셨어요~