php信号量和共享内存的概念是什么
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,本文小编为大家详细介绍"php信号量和共享内存的概念是什么",内容详细,步骤清晰,细节处理妥当,希望这篇"php信号量和共享内存的概念是什么"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来
千家信息网最后更新 2025年02月03日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安全错误
数据库的锁怎样保障安全
中国知网外文数据库
春节放假网络安全注意通知
高中网络技术应用 ppt
金华奇讯网络技术有限公司
海淀区电子软件开发介绍
马鞍山宁创软件开发有限责任公司
软件开发业务税收
如何查看软件服务器端口
怎么做好数据库安全管理
吉林学校卫星授时服务器虚拟主机
美国工业互联网科技园区
信息网络安全责任书
唐朝网络安全法
服务器商哪家好
网络安全不应该引起重视
老旧空调维修数据库
网络安全线上课程培训
网络安全事故定性
数据库 整理
湖北网络安全培训机构免费试学
北交所 软件开发
数据库表命名规范td
株洲网络安全案例
软件开发嵌入数据库
深圳市哈希网络技术有限公司
语言资源有声数据库
物联网与数据库技术的关联
系统服务器故障处理工作
服务器网络安全防护措施
武汉慧炎时代网络技术