(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创建的共享内存
共享内存不会因为进程退出而丢失,会一直存在系统中,除非删除它
//参数1 文件名 参数2 缩放比例 function _thumb($_filename,$_percent){ ob_clean();...
前面的文章对于高并发下单商品导致商品库存为负值的问题请先阅读再阅读本篇文章一定对您有帮助,建议亲手测试较好。加上文件锁后的下单处理代码:【一】.阻塞模式:(如果其他进程已经加锁文件,当前进程会一直等其他进程解锁文件后继续执行)<?php //连接数据库 $con=mysqli_connect(...
先在centos安装openssl,然后开始://生成私钥openssl genrsa -out rsa_private_key.pem 1024//生成公钥openssl rsa -in rsa_private_key.pem&...
php官方的超全局变量$_SERVER['PHP_SELF']也能直接获取,只不过如果url参数太多也会获取。下面提供一个方法获取/* * 获取当前PHP文件名称 */ if (!function_exists('phpself...
如果想在windows中执行php,并且让php脚本在后台运行,可以用下面的cmd命令start /b php D:\wwwroot\default\demo1\run.php例如上面的命令意思后台运行run.php,如果想用php编写异步代码: ...
php官方已经提供了Iterator(迭代器)接口,通过网上资料的学习,目前看适合超大集合或者数组提取使用。学习一个函数的实现对比内存占用差距.使用迭代器和普通循环实现range()函数。(1).普通循环实现range()函数。function newrange($low, $h...