이 기사의 예에서는 PHP 메시지 대기열의 사용법을 설명합니다. 참고하실 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.
이 메시지 큐는 Linux에서 프로세스 통신에 사용됩니다.
#根据路径和后缀创建一个id $key = ftok(__DIR__, 'R'); #获取队列中的消息 $q = msg_get_queue($key); #删除队列 msg_remove_queue($q); #获取队列的状态信息 $status = msg_stat_queue($q); print_r($status); echo "\n"; for($i=0;$i<100;$i++) { /** * 向队列里添加消息 * resource $queue , int $msgtype , mixed $message [, bool $serialize = true [, bool $blocking = true [, int &$errorcode ]]] * $msgtype :消息的类型 * $message : 具体的数据 * $serialize:是否要序列化 * $blocking: 是否阻塞 , 当队列中满时,会进行阻塞,设为非阻塞会产生一个 MSG_EAGAIN 的 错误消息 */ $flag = msg_send($q, 111, array('a'=>1), true, false , $errorcode); var_dump($errorcode); } /** 接收消息 resource $queue , int $desiredmsgtype , int &$msgtype , int $maxsize , mixed &$message [, bool $unserialize = true [, int $flags = 0 [, int &$errorcode ]]] $desiredmsgtype:0表示从队列最前面开始返回数据, bigger 0:具体的某个队列 $maxsize:数据最大值,获取的消息如果》此值则出错 $msgtype:消息的具体类型, 因为$desiredmsgtype可以不指定类型,即指定为0 $flags:MSG_IPC_NOWAIT 如果队列为空直接返回(不阻塞), MSG_EXCEPT MSG_NOERROR 参见手册 */ $data = msg_receive($q, 0, $type, 200, $msg); var_dump($data); echo "\n"; var_dump($type); echo "\n"; var_dump($msg); echo "\n";
큐 상태 정보: 특정 참조 매뉴얼
Array ( [msg_perm.uid] => 1015 [msg_perm.gid] => 100 [msg_perm.mode] => 438 [msg_stime] => 0 [msg_rtime] => 0 [msg_ctime] => 1411830331 [msg_qnum] => 0 [msg_qbytes] => 65536 [msg_lspid] => 0 [msg_lrpid] => 0 )
Linux에서 보려면 ipc 명령어를 사용하고, 삭제하려면 ipcrm 명령어를 사용하세요.
더 많은 PHP 관련 콘텐츠에 관심이 있는 독자는 이 사이트의 특별 주제인 "PHP 기본 구문 튜토리얼 소개", "PHP 오류 및 예외 처리 방법 요약"을 확인할 수 있습니다. ", " php 프로그래밍 알고리즘 요약" 및 "php 객체 지향 프로그래밍 입문 튜토리얼"
이 기사가 PHP 프로그래밍에 종사하는 모든 사람에게 도움이 되기를 바랍니다.