太阳集团tyc5997|官网【中国】有限公司

php使用shmop函数创建共享内存来减少负载
  • 作者:admin
  • 发表时间:2021-01-04 07:53
  • 来源:未知

本文主要介绍php使用shmop函数来创建共享内存以减少负载。本文给你非常详细的介绍,对你的学习或者工作有一定的参考价值,有需要的朋友可以参考一下。

PHP有两套内存共享的接口。一个是shm,实际上是变量共享,将对象变量序列化后存储。使用起来还是挺方便的,但是序列化存储对于效率优先的内存访问操作是没有意义的。另一个是shmop,是Linux和Windows通用的,但是功能比shm弱。在Linux上,这些功能是通过调用shm*系列函数直接实现的,而Winodows也是通过封装系统函数实现同样的调用。

要创建共享内存段,您需要使用函数shmop,因此需要打开扩展。

Shmop主要功能

Shmop_open、shmop_write、shmop_read、shmop_size、shmop_close和shmop_delete

Shmop_open(创建内存段)

这个函数首先出现的是系统ID参数。这是一个标识系统中共享内存段的数字。第二个参数是访问模式,非常类似于fopen函数的访问模式。您可以通过四种不同的模式访问内存段:

模式“A”允许您访问只读内存段,模式“C”创建一个新的内存段,或者如果内存段已经存在,尝试打开它进行读写

模式“n”,它创建一个新的内存段,如果相同的密钥已经存在,创建将失败,这是为了安全使用共享内存。

第三个参数是内存段的权限。您必须在此提供一个八进制值。

第四个参数提供以字节为单位的内存段大小。因为使用的共享内存片段是固定长度的,所以在存储和读取时需要计算数据的长度,否则可能无法写入或读取空值。

请注意,该函数返回一个标识号,其他函数可以使用该标识号来操作共享内存段。该标识是共享内存访问标识。与系统标识不同,它是作为参数传递的。请注意不要混淆这两者。如果失败,shmop_open将返回FALSE。创建内存块时,建议关键参数使用常量而不是变量,否则可能会导致内存泄漏。

Shmop_write(将数据写入内存段)

这个函数类似于fwrite函数,它有两个参数:open stream资源(由fopen返回)和您想要写入的数据。shmop_write函数也执行这个任务。

第一个参数是shmop_open返回的ID唐山企业网站,标识你操作的共享内存块。第二个参数是您要存储的数据,最后第三个参数是您要开始写入的位置。默认情况下,我们总是使用0来指示从哪里开始写入。请注意,该函数在失败时返回FALSE,在成功时返回写入的字节数。

Shmop_read(从内存段读取数据)

从共享内存段读取数据很简单。你需要的只是一个开放的内存段和shmop_read函数。这个函数接受一些参数,像fread一样工作。

请注意这里的参数。函数shmop_read会接受shmop_open返回的ID,这个我们已经知道,但是它也接受另外两个参数。第二个参数是您要从内存段读取的位置,第三个参数是您要读取的字节数。第二个参数可以始终为0,表示数据的开始,但是第三个参数可能有问题,因为我们不知道要读取多少字节。

Baidu
sogou