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 호환 소스에서 배열 또는 복잡한 개체 구조를 쉽게 수신할 수 있습니다.

unserializefalse이면 메시지는 바이너리 안전 문자열로 반환됩니다.

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 인스턴스를 예상합니다. 이전에는 리소스가 필요했습니다.

기타