使用linux管道文件实现php与python的进程通信

本人的项目涉及到客户端/服务器的数据交互,客户端将数据发送到web服务器后,需要通过web的php进程调用后台的python进程进行数据处理。处理完毕后python进程需通知php将处理结果返回客户端。

1.创建两个命名管道

mkfifo -m 755 php2py # 保存php进程向python进程传递的数据
mkfifo -m 755 py2php # 保存python进程向php进程传递的数据

2.编写python部分代码

while True:
  fread = open("php2py", "r")
  fwrite = open("py2php", "w")
  str = fread.read(1024)
  fwrite.write(str)
  fwrite.close()
  fread.close()

它的作用是从第一个管道读入数据后写入第二个管道中

3.编写php部分代码

<?php
 
function write($content)
{
 $fwrite = fopen("php2py", "w");
 fwrite($fwrite, $content);
 fclose($fwrite);
}
 
function read()
{
 $fread = fopen("py2php", "r");
 $content = fread($fread, 1024);
 fclose($fread);
 return $content;
}
 
for($i=0; $i<10; $i++)
{
 $num = $i;
 write($num);
 $num_read = read();
 assert($num === $num_read);
 
 echo $num_read, "\n";
}

它完成了10次进程通信,当每次的输出数字与传递的数字相同时,说明进程通信成功。

4.实验方法

这是实验目录。

[root@iZwz9a8g2mt6x5kq9jp6abZ pipeTest]# ls
php2py  PhpTest.php  py2php  PyTest.py

先在一个终端启动python进程。

python PyTest.py

接着在另一个终端启动php进程,观察输出信息。

[root@iZwz9a8g2mt6x5kq9jp6abZ pipeTest]# php PhpTest.php
0
1
2
3
4
5
6
7
8
9

证明实验成功!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值