当前位置:首页 > PHP > 正文内容

php共享内存,php共享内存的使用

高老师5年前 (2021-05-18)PHP963

(1).基本的写入(a.php)

//(1.1).创建一个IPC通信专用的KEY
$shm_key = ftok(__FILE__, 't');

//(1.2).创建或者打开共享内存块,创建1KB
$shmop = shmop_open($shm_key, 'c', '0644', 1024);
if (!$shmop) {
    throw new Exception('创建共享内存失败');
}

//(1.3).向内存写入数据
$text = 'A:大家好,我是A进程,我创建的内存空间啊,欢迎大家一起来耍啊';
if (!shmop_write($shmop, $text, 0)) {
    throw new Exception('共享内存写入数据失败');
}

//(1.4).用完关闭资源(并不会清除内存数据,只关闭资源句柄)
shmop_close($shmop);

//(1.5).输出共享内存块的系统ID,我的是1948581891,php打印的是int值,底层用的16进制
echo dechex($shm_key) . PHP_EOL;

(2).基本的读取(b.php)

//(2.1).打开A进程创建的共享内存
$shm_key = 0x74250004;
$shmop = shmop_open($shm_key, 'c', '0644', 1024);
if (!$shmop) {
    throw new Exception('打开共享内存失败');
}

//(2.2).从内存读取数据
$data = shmop_read($shmop, 0, 1024);
file_put_contents('1.txt', $data);
echo "b进程读取到的消息为:" . $data . PHP_EOL;

//(2.3).删除共享内存.不需要close.直接删除
shmop_delete($shmop);

(3).注意事项

通过ipcs -m 命令可以查看已经创建的共享内存

通过ipcrm -M key 命令可以删除通过shm_key创建的共享内存

共享内存不会因为进程退出而丢失,会一直存在系统中,除非删除它

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/199.html

分享给朋友:

“php共享内存,php共享内存的使用” 的相关文章

php 开启错误提示,php 关闭错误提示

php 开启错误提示,php 关闭错误提示

开启错误提示代码:ini_set("display_errors", "On"); error_reporting(E_ALL | E_STRICT);关闭错误提示代码:error_reporting(E_ALL ^&n...

php使用swoole扩展推送消息

php使用swoole扩展推送消息

通过http推送消息给socket,socket服务再向客户端推送<?php /*  * Socket推送  * 请用守护进程方式启动php msgservice.php &   (socket只...

php soap 捕获异常,使用try catch 捕获Soap 异常

php soap 捕获异常,使用try catch 捕获Soap 异常

项目中使用服务来执行webservice,由于对方系统api不稳定,经常导致服务崩溃,只能重启,一个月差不多要重启一次。初期的解决办法是捕获异常,然后continue掉。<?php try {     $url = 'http...

php arrayaccess的应用场景:配置管理器

php arrayaccess的应用场景:配置管理器

上篇文章已经讲解arrayacces的原理,现在来讲解下arrayaccess的实际应用。一个大型的互联网项目中必然会存在各种配置信息,例如多种数据库信息:mysql,tidb,mongodb,redis,某个业务模块单独的配置信息如比例,额度等等,那么该如何治理配置信息?PHP项目中大部分的框架都...

全方位认识PHP的SESSION

全方位认识PHP的SESSION

【一】.介绍session由于HTTP是无状态的请求,创建一个会话需要保持必须需要身份标识。当用户第一次访问,PHP会为用户创建一个唯一的sessionid,并将sessionid通过cookie发送给浏览器,并在服务器的临时文件创建一个以sessionid为名的文件用来保存这个sessionid保...

composer自动加载类库(非psr4规范的文件)

composer自动加载类库(非psr4规范的文件)

在项目下的composer配置文件修改(PaySdk是我这里一个支付sdk的目录,包含各种各样的支付sdk,这样写的意思让composer自动把PaySdk下的所有文件自动加载):"autoload": {      &...