(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创建的共享内存
共享内存不会因为进程退出而丢失,会一直存在系统中,除非删除它
<?php function go($str) { echo'I\'m '.$str; } $goto='go'; $goto('gaojiufeng'...
PHP的session文件夹默认保存在同一个文件,随着访客的增多,访问的速度会非常慢,例如部分管理系统后台每天登陆1000次,1个月就创建了30000个session文件,一年后是多少?假设这个系统的用户是上万人呢?方法1:每个网站使用自己的session文件夹,代码如下:<?php $pat...
通过经纬度转换为城市名称,并获得城市的编号,通常在全国类型的商城中比较通用。//经纬度转城市名称(返回城市id,城市名称) //$ak开发密钥,$lat纬度,$lng经度,$type返回数据类型 public function getCityName($ak,$lat,$lng)...
项目需要使用websocket推送最新订单,客户服务器非linux不支持swoole,因此使用原生,直接上代码(1).PHP服务端<?php ini_set('error_reporting', E_ALL ^ E_NOTICE); ini_set...
(1).在PHP中可以查看的环境变量包括: (1.1).电脑环境变量 (2.1).服务器环境变量(2).getenv()函数获取一个环境变量的值.参数1是环境变量的key,参数2值为true的时候仅从你的电脑环境变量中查找,参数2值为false会从两种变量中全部查询//获取我电脑登录的用户名,输出A...
PHP7中,通过生成器委托(yield from),可以将其他生成器、可迭代的对象、数组委托给外层生成器。外层的生成器会先顺序 yield 委托出来的值,然后继续 yield 本身中定义的值。同时yield from也能获取到生成器的返回值...