php信号量和共享内存的概念是什么
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,本文小编为大家详细介绍"php信号量和共享内存的概念是什么",内容详细,步骤清晰,细节处理妥当,希望这篇"php信号量和共享内存的概念是什么"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来
千家信息网最后更新 2025年12月01日php信号量和共享内存的概念是什么
本文小编为大家详细介绍"php信号量和共享内存的概念是什么",内容详细,步骤清晰,细节处理妥当,希望这篇"php信号量和共享内存的概念是什么"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
说明
1、信号量:是系统提供的一种原子操作,一个信号数量,同时只有一个进程能操作。
一个过程获得一个信号,必须被过程释放。
2、共享内存:是系统在存储器中打开的一个公共存储器区域,任何一个过程都可以访问。
在同一时刻,可以有多个过程访问该区域,为了保证数据的一致性,需要对该存储器区域进行锁定或信号。
实例
echo "parent progress pid:{$parentPid}\n";$childList = array(); // 创建共享内存,创建信号量,定义共享key$shm_id = ftok(__FILE__,'m');$sem_id = ftok(__FILE__,'s');$shareMemory = shm_attach($shm_id);$signal = sem_get($sem_id);const SHARE_KEY = 1;// 生产者function producer(){ global $shareMemory; global $signal; $pid = posix_getpid(); $repeatNum = 5; for ( $i = 1; $i <= $repeatNum; $i++) { // 获得信号量 sem_acquire($signal); if (shm_has_var($shareMemory,SHARE_KEY)){ // 有值,加一 $count = shm_get_var($shareMemory,SHARE_KEY); $count ++; shm_put_var($shareMemory,SHARE_KEY,$count); echo "({$pid}) count: {$count}\n"; }else{ // 无值,初始化 shm_put_var($shareMemory,SHARE_KEY,0); echo "({$pid}) count: 0\n"; } // 用完释放 sem_release($signal); $rand = rand(1,3); sleep($rand); }}function createProgress($callback){ $pid = pcntl_fork(); if ( $pid == -1) { // 创建失败 exit("fork progress error!\n"); } else if ($pid == 0) { // 子进程执行程序 $pid = posix_getpid(); $callback(); exit("({$pid})child progress end!\n"); }else{ // 父进程执行程序 return $pid; }}// 3个写进程for ($i = 0; $i < 3; $i ++ ) { $pid = createProgress('producer'); $childList[$pid] = 1; echo "create producer child progress: {$pid} \n";}// 等待所有子进程结束while(!empty($childList)){ $childPid = pcntl_wait($status); if ($childPid > 0){ unset($childList[$childPid]); }}// 释放共享内存与信号量shm_remove($shareMemory);sem_remove($signal);echo "({$parentPid})main progress end!\n";读到这里,这篇"php信号量和共享内存的概念是什么"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
信号
信号量
内存
过程
进程
概念
存储器
文章
存储
内容
区域
程序
系统
妥当
一致
一致性
原子
只有
同时
多个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器的电脑的配置在哪里看
朝阳区品牌软件开发价格信息
网上授课软件开发项目章程
买服务器挂机
前程无忧是叫前锦网络技术吗
域控服务器有本地账户吗
软件工程是计算机网络技术类
rfid软件开发
服务器系统配置和引导管理
2008r数据库如何重启
手游沙巴克传奇清空数据库
天气服务器
sql添加数据库报服务器失败
打造网络安全
让使用者树立网络安全意识
数据库自动化技术前景
微信不小心删除数据库
网络安全学习教程下载
java 对象 数据库
方舟什么服务器能下载
网络安全法六一实施
网络安全为主题作文题目要求
网络安全课程大全
国外服务器免费ip和密码
祖龙服务器怎么进
网络技术推荐书单
魔兽世界正式服服务器人口普查2022
软件开发适不适合初中生
cnki数据库的全文可以在获取
三值化matlab数据库