这里有新鲜出炉的 PHP 面向对象编程,程序狗速度看过来!
PHP(外文名: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,入门门槛较低,易于学习,使用广泛,主要适用于 web 开发领域。PHP 的文件后缀名为 php。
这篇文章主要介绍了 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 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0805/341352.html