공유 메모리 shmop_open

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

shmop_open — 공유 메모리 블록 생성 또는 열기


설명

shmop_open(
    int $key,
    string $mode,
    int $permissions,
    int $size
): Shmop|false
                

shmop_open()은 공유 메모리 블록을 생성하거나 열 수 있습니다.


매개변수

key
공유 메모리 블록의 시스템 ID입니다. 10진수 또는 16진수로 전달할 수 있습니다.
mode
사용할 수 있는 플래그:
  • 액세스용 "a"(shmat용 SHM_RDONLY 설정)는 읽기 전용으로 기존 공유 메모리 세그먼트를 열어야 할 때 이 플래그를 사용합니다.
  • 생성(IPC_CREATE 설정)을 위한 "c"는 새로운 공유 메모리 세그먼트를 생성해야 할 때 이 플래그를 사용하거나 동일한 키를 가진 세그먼트가 존재하는 경우 읽기 및 쓰기를 위해 열려고 시도합니다.
  • 읽기 및 쓰기 액세스를 위한 "w"는 공유 메모리 세그먼트를 읽고 쓸 필요가 있을 때 이 플래그를 사용합니다. 대부분의 경우 이 플래그를 사용합니다.
  • "n"은 새 메모리 세그먼트를 생성합니다(IPC_CREATE|IPC_EXCL 설정). 새로운 공유 메모리 세그먼트를 생성하고자 할 때 이 플래그를 사용하지만 동일한 플래그를 가진 세그먼트가 이미 존재하는 경우 실패합니다. 이것은 보안 목적에 유용하며 이를 사용하여 경쟁 조건 악용을 방지할 수 있습니다.
permissions
메모리 세그먼트에 할당하려는 권한은 파일에 대한 권한과 동일합니다. 권한은 0644와 같이 8진수 형식으로 전달되어야 합니다.
size
생성하려는 공유 메모리 블록의 크기(바이트)

메모: 참고: 기존 메모리 세그먼트를 여는 경우 세 번째와 네 번째는 0으로 입력해야 합니다.


반환 값

성공하면 shmop_open()은 생성한 공유 메모리 세그먼트에 액세스하는 데 사용할 수 있는 Shmop 인스턴스를 반환합니다. 실패 시 false가 반환됩니다.


변경 로그

버전 설명
8.0.0 성공하면 이 함수는 이제 Shmop 인스턴스를 반환합니다. 이전에는 리소스가 반환되었습니다.

Examples

예제 #1 새로운 공유 메모리 블록 생성

                  
<?php
$shm_key = ftok(__FILE__, 't');
$shm_id = shmop_open($shm_key, "c", 0644, 100);
?>
                  
                

이 예제는 ftok()에 의해 반환된 시스템 ID로 공유 메모리 블록을 열었습니다.


기타