#
# require --enable-sysvmsg configure option
#
# see phpinfo() to find how to check
#
msg_get_queue
(PHP 4 >= 4.3.0, PHP 5)
msg_get_queue — Message Queue anlegen oder an existierende Queue anbinden
Beschreibung
$key
[, int $perms = 0666
] )
msg_get_queue() gibt eine ID zurück die für den
Zugriff auf die mit dem gegbenen key bezeichnete
System V Message Queue genutzt werden kann. Existiert die Message Queue
noch nicht so wird sie mit den im optionalen Parameter perms
angegebenen Rechten angelegt.
Ein weiterer Aufruf von msg_get_queue() mit dem gleichen
key liefert eine andere ID, beide IDs greifen aber
intern auf die gleiche Message Queue zu.
Parameter-Liste
-
key -
Numerische ID der Message Queue.
-
perms -
Zugriffsrechte der Queue. Vorgabewert ist 0666. Existiert die Message Queue bereits so wird dieser Parameter ignoriert.
Rückgabewerte
Liefert ein Resourcehandle für den Zugriff auf eine System V Message Queue.
Siehe auch
- msg_remove_queue() - Entfernt eine Message Queue
- msg_receive() - Receive a message from a message queue
- msg_send() - Send a message to a message queue
- msg_stat_queue() - Liefert Informationen zu einer Message Queue
- msg_set_queue() - Setzt Metadaten in derMessage Queue Datenstruktur
msg_get_queue
16-Dec-2004 06:55
02-May-2003 09:10
// Here is an example of working with message queues.
// if you have forked processes, this could be a great way of passing
// out work to them
// create the message queue
// pick a file..
$key_t = msg_get_queue(ftok("/tmp/php_msgqueue.stat", 'R'),0666 | IPC_CREAT);
// place two messages on the queue
if (!msg_send ($key_t, 1, 'This is message #1', true, true, $msg_err))
echo "Msg not sent because $msg_err\n";
if (!msg_send ($key_t, 1, 'This is message #2 ', true, true, $msg_err))
echo "Msg not sent because $msg_err\n";
// lets look at the queue structure 'msg_qnum' is really what we want to see
// it should be '2'
print_r(msg_stat_queue($key_t));
// pull off the stack
if (msg_receive ($key_t, 1, $msg_type, 16384, $msg, true, 0, $msg_error)) {
if ($msg == 'Quit');
echo "$msg\n"; // prints 'This is message #1'
} else {
echo "Received $msg_error fetching message\n";
}
// look at the structure again, ms_qnum should be '1'
print_r(msg_stat_queue($key_t));
if (msg_receive ($key_t, 1, $msg_type, 16384, $msg, true, 0, $msg_error)) {
if ($msg == 'Quit');
echo "$msg\n"; // prints 'This is message #2'
} else {
echo "Received $msg_error fetching message\n";
}
// look at the structure again, ms_qnum should be '0', no more messages on the queue
print_r(msg_stat_queue($key_t));
// get rid of the queue we created
msg_remove_queue ($key_t);