首页 > 开发 > PHP > 正文

PHP的消息通信机制测试实例

2024-05-04 22:51:18
字体:
来源:转载
供稿:网友

本文实例讲述了PHP的消息通信机制。分享给大家供大家参考,具体如下:

<?php error_reporting(E_ALL&~E_WARNING&~E_NOTICE);/** * Example for sending and receiving Messages via the System V Message Queue * * To try this script run it synchron/asynchron twice times. One time with ?type=send and one time with ?type=receive * * @author     Thomas Eimers - Mehrkanal GmbH * * This document is distributed in the hope that it will be useful, but without any warranty; * without even the implied warranty of merchantability or fitness for a particular purpose. */ob_implicit_flush(1);header('Content-Type: text/plain; charset=ISO-8859-1');echo "Start.../n";// Create System V Message Queue. Integer value is the number of the Queue//$queue = msg_get_queue(100379);$mesg_key = ftok(__FILE__, 'm');$mesg_id = msg_get_queue($mesg_key, 0666);$queue = $mesg_id;// Sendoptions$serialize_needed=false; // Must the transfer data be serialized ?$block_send=false;    // Block if Message could not be send (Queue full...) (true/false)$msgtype_send=1;     // Any Integer above 0. It signeds every Message. So you could handle multible message             // type in one Queue.// Receiveoptions$msgtype_receive=1;    // Whiche type of Message we want to receive ? (Here, the type is the same as the type we send,             // but if you set this to 0 you receive the next Message in the Queue with any type.$maxsize=100;       // How long is the maximal data you like to receive.$option_receive=MSG_IPC_NOWAIT; // If there are no messages of the wanted type in the Queue continue without wating.             // If is set to NULL wait for a Message.// Send or receive 20 Messagesfor ($i=0;$i<20;$i++) {   sleep(1);  ob_flush();  flush(); $message='Hello, This is Flandy,now is '.date("H:i:s",time());   // Transfering Data // This one sends  if (isset($_GET['type'])&&$_GET['type']=='send') {  if(msg_send($queue,$msgtype_send, $message,$serialize_needed, $block_send,$err)===true) {   echo "The ".$i." Message has been sent, the messge is ".$message."/n";  } else {   var_dump($err);  } // This one received } else {   $queue_status=msg_stat_queue($queue);   echo 'Get Messages in the queue: '.$queue_status['msg_qnum']."/n";   print_r($queue_status);   echo "/n";  if ($queue_status['msg_qnum']>0) {   if (msg_receive($queue,$msgtype_receive ,$msgtype_erhalten,$maxsize,$daten,$serialize_needed, $option_receive, $err)===true) {       echo "Received data:".$daten."/n";   } else {       var_dump($err);   }  } }}?>

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php curl用法总结》、《php socket用法总结》、《PHP网络编程技巧总结》、《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表