PHP进程通信-信号量和共享内存

信号量与共享内存。共享内存是最快是进程间通信方式,因为n个进程之间并不需要数据复制,而是直接操控同一份数据。实际上信号量和共享内存是分不开的,要用也是搭配着用。*NIX的一些书籍中甚至不建议新手轻易使用这种进程间通信的方式,因为这是一种极易产生死锁的解决方案。共享内存顾名思义,就是一坨内存中的区域,可以让多个进程进行读写。这里最大的问题就在于数据同步的问题,比如一个在更改数据的时候,另一个进程不可以读,不然就会产生问题。所以为了解决这个问题才引入了信号量,信号量是一个计数器,是配合共享内存使用的.

 0 ) {
        $child_pid[] = $pid;
    }
}
while( !empty( $child_pid ) ){
    foreach( $child_pid as $pid_key => $pid_item ){
        pcntl_waitpid( $pid_item, $status, WNOHANG );
        unset( $child_pid[ $pid_key ] );
    }
}
sleep( 2 );
echo '最终结果'.shm_get_var( $shm_id, SHM_VAR ).PHP_EOL;
// 删除共享内存数据,删除共享内存是有顺序的,先remove后detach
shm_remove( $shm_id );
shm_detach( $shm_id );

你可能感兴趣的:(PHP进程通信-信号量和共享内存)