PHP多进程之间的通信
了解 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等
- 共享内存通信,映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。
请登录后再评论