代碼:
$data = array();
$p = pcntl_fork();
if ($p === -1) {
exit('创建进程失败!' . PHP_EOL);
} else if ($p === 0) {
// 修改主进程中的数据
$data = array('cxl' , 'ys');
} else {
pcntl_wait($status);
// 子进程返回后,查看数据变动
print_r($data); // 结果 array(),没有发生任何变化!
// 子进程无法修改主进程中的数据。
// 子进程中该如何修改主进程中的数据,实现数据共享??
}
結果:
進程間該如何進行資料交流? ?
子進程創建後,已經與父進程的變量資料脫鉤,如果要實現子進程修改父進程變量,需要透過進程間通訊並自行實現相關程式碼來完成。當然,也可以透過共享記憶體的方式實現變數的共享。
進程間通訊可用的方法多了去了。最常見的,TCP。
剛好在學習pcntl,也想到進程間通訊的事情,搜到的其中一個可用方法-使用訊息佇列,覺得不太複雜,於是在你程式碼上加了幾句,可以試試,互助共勉。