PHP的消息通信机制测试实例
更新时间:2016年11月10日 11:13:05 作者:flandycheng
这篇文章主要介绍了PHP的消息通信机制,结合实例形式分析了php消息通信的信息发送与获取相关操作技巧,需要的朋友可以参考下
本文实例讲述了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 Messages for ($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程序设计有所帮助。
相关文章
php以fastCGI的方式运行时文件系统权限问题及解决方法
在IIS7.0上以FastCGI方式配置好PHP运行环境,测试可以正常运行PHP程序后,将PHP程序部署上去,导入程序原来的数据和配置信息。很快就有问题出来啦下面我们就详细记录下。2015-05-05php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
这篇文章主要介绍了php mysql procedure实现获取多个结果集的方法,基于thinkPHP实现针对数据库多个结果集的相关操作技巧,需要的朋友可以参考下2016-11-11linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程
这篇文章主要介绍了linux平台编译安装PHP7并安装Redis扩展与Swoole扩展的方法,结合实例形式详细分析了Linux平台上安装php7并安装Redis扩展与Swoole扩展的具体步骤与操作技巧,需要的朋友可以参考下2016-09-09
最新评论