Semaphore msg_receive
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
msg_receive — 메시지 대기열에서 메시지 수신
설명
msg_receive( SysvMessageQueue $queue, int $desired_message_type, int &$received_message_type, int $max_message_size, mixed &$message, bool $unserialize = true, int $flags = 0, int &$error_code = null ): bool
msg_receive()는 desired_message_type
에 의해 지정된 유형의 지정된 queue
에서 첫 번째 메시지를 수신합니다.
매개변수
queue
- 메시지 큐.
desired_message_type
desired_message_type
이 0이면 큐의 맨 앞의 메시지가 반환됩니다.desired_message_type
이 0보다 크면 해당 유형의 첫 번째 메시지가 반환됩니다.desired_message_type
이 0보다 작은 경우,desired_message_type
의 절대값보다 작거나 같은 유형의 큐에서 첫 번째 메시지를 읽습니다. 기준과 일치하는 메시지가 없으면 스크립트는 적절한 메시지가 대기열에 도착할 때까지 기다립니다.flags
매개변수에MSG_IPC_NOWAIT
를 지정하여 스크립트가 차단되는 것을 방지할 수 있습니다.received_message_type
- 수신된 메시지 유형은 이 매개변수에 저장됩니다.
max_message_size
- 수락할 메시지의 최대 크기는
max_message_size
에 의해 지정됩니다. 대기열의 메시지가 이 크기보다 크면 함수가 실패합니다(아래에 설명된 대로flags
를 설정하지 않는 한). message
- 수신된 메시지는 메시지 수신 오류가 없는 한
message
에 저장됩니다. unserialize
true
로 설정하면 메시지가 세션 모듈과 동일한 메커니즘을 사용하여 직렬화된 것처럼 처리됩니다. 메시지는 직렬화 해제된 다음 스크립트로 반환됩니다. 이를 통해 다른 PHP 스크립트에서 또는 WDDX 직렬 변환기를 사용하는 경우 WDDX 호환 소스에서 배열 또는 복잡한 개체 구조를 쉽게 수신할 수 있습니다.unserialize
가false
이면 메시지는 바이너리 안전 문자열로 반환됩니다.flags
- 선택적
flags
를 사용하면 하위 수준 msgrcv 시스템 호출에 플래그를 전달할 수 있습니다. 기본값은 0이지만 다음 값 중 하나 이상을 지정할 수 있습니다(함께 추가하거나 OR하여).Flag values for msg_receive
MSG_IPC_NOWAIT
desired_message_type
의 메시지가 없으면 즉시 반환하고 기다리지 마십시오. 함수는 실패하고MSG_ENOMSG
에 해당하는 정수 값을 반환합니다.MSG_EXCEPT
이 플래그를 0보다 큰 desired_message_type
과 함께 사용하면 함수가desired_message_type
과 같지 않은 첫 번째 메시지를 수신하게 됩니다.MSG_NOERROR
메시지가 max_message_size
보다 길면 이 플래그를 설정하면 메시지가max_message_size
로 잘리고 오류가 발생하지 않습니다. error_code
- 함수가 실패하면 선택적
error_code
가 시스템 errno 변수의 값으로 설정됩니다.
반환 값
성공하면 true
를, 실패하면 false
를 반환합니다.
성공적으로 완료되면 메시지 큐 데이터 구조가 다음과 같이 업데이트됩니다. msg_lrpid는 호출 프로세스의 프로세스 ID로 설정되고 msg_qnum은 1만큼 감소하고 msg_rtime은 현재 시간으로 설정됩니다.
변경 로그
버전 | 설명 |
---|---|
8.0.0 | queue 는 이제 SysvMessageQueue 인스턴스를 예상합니다. 이전에는 리소스가 필요했습니다. |
기타
- msg_remove_queue() - 메시지 큐 파괴
- msg_send() - 메시지 대기열에 메시지 보내기
- msg_stat_queue() - 메시지 큐 데이터 구조에서 정보를 반환합니다.
- msg_set_queue() - 메시지 큐 데이터 구조의 정보 설정