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

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

/**

* 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程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值