<?php
//创建信号量
$seg_id = ftok(__FILE__, 's');
$signal = sem_get($seg_id);
//创建共享内存
$shm_key = ftok(__FILE__, 'c');
$shm_id = shm_attach($shm_key);
//将值写入共享内存
$va = 0;
shm_put_var($shm_id, $shm_key, $va);
for ($i = 0; $i < 5; $i++) {
$fd = pcntl_fork();
if ($fd == -1) {
exit("fork fail");
} elseif ($fd == 0) {
sem_acquire($signal);
$data = shm_get_var($shm_id, $shm_key);
$data++;
echo 'this var count is =' .$data .PHP_EOL;
shm_put_var($shm_id, $shm_key, $data);
sem_release($signal);
exit;//保证进程不会线性增长
} else {
// echo $va.PHP_EOL;
// exit;
}
}