PHP多进程之间的通信

作者: 温新

分类: 【PHP基础】

阅读: 1971

时间: 2021-04-18 14:00:32

了解 PHP多进程的使用 ,在来看看进程之间的通信。

每个进程的内存空间都是不一致的,每一个变量都存在不同的内存空间。看下面多进程的案例,一个主进程,一个子进程。

<?php

$str = '进程间的通信';

// 创建一个子进程
$pid = pcntl_fork();

if ($pid > 0) {
   $str = '我是主进程,我修改了信息';
   echo $str; // 我是主进程,我修改了信息
} elseif ($pid == 0) {
   echo $str;// 进程间的通信
} else {
   echo '我是主进程,子进程启动失败';
}

通过这个案例可以看到,主进程修改了字符串信息,输出也是修改之后的信息。在子进程中,主进程修改的信息并没有影响到子进程。由此可以知道一个情况,多进程中,每个进程之间是无法通信的。

有些时候是需要进程之间相互通信的,有如下几种方法:

  • 管道通信
  • 消息队列通信(使用linux消息队列)http://www.php20.cn/article/137
  • 进程信息通信。http://www.php20.cn/article/134
  • 套接字通信
  • 第三方通信。使用文件操作,mysql,redis等
  • 共享内存通信,映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。
请登录后再评论