热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

shmop_open函数找不到,怎么办,刚装的PHP5

版本:php-5.2.0-Win32页面代码:<?php$wordsarray(aaa,bbb,ccc,ddd);申请共享内存空间$shm_idshmop
版本:php-5.2.0-Win32
页面代码:

$words=array('aaa','bbb','ccc','ddd');
//申请共享内存空间
$shm_id = shmop_open(0xff3, "c", 0644, 10485760);


//序列化
$value = serialize($words);

//写入共享内存空间
shmop_write($shm_id, $value, 0);

//获取共享内存空间中的内容
$my_string = shmop_read($shm_id, 0, strlen($value));
shmop_close($shm_id);
?>

错误信息:

Fatal error: Call to undefined function shmop_open() in D:\wwwroot\php5_test\index.php on line 4


php.ini中已经取消了php_shmop.dll前面的分号,并重启了windows2000

5 个解决方案

#1


shmop_open   
  (PHP   4   >=   4.0.4)   
    
  shmop_open   --   Create   or   open   shared   memory   block   
  Description   
  int   shmop_open   (   int   key,   string   flags,   int   mode,   int   size)   
    
    
  shmop_open()   can   create   or   open   a   shared   memory   block.     
    
  shmop_open()   takes   4   parameters:   key,   which   is   the   system's   id   for   the   shared   memory   block,   this   parameter   can   be   passed   as   a   decimal   or   hex.   The   second   parameter   are   the   flags   that   you   can   use:     
    
    
  "a"   for   access   (sets   SHM_RDONLY   for   shmat)   use   this   flag   when   you   need   to   open   an   existing   shared   memory   segment   for   read   only     
    
  "c"   for   create   (sets   IPC_CREATE)   use   this   flag   when   you   need   to   create   a   new   shared   memory   segment   or   if   a   segment   with   the   same   key   exists,   try   to   open   it   for   read   and   write     
    
  "w"   for   read   &   write   access   use   this   flag   when   you   need   to   read   and   write   to   a   shared   memory   segment,   use   this   flag   in   most   cases.     
    
  "n"   create   a   new   memory   segment   (sets   IPC_CREATE|IPC_EXCL)   use   this   flag   when   you   want   to   create   a   new   shared   memory   segment   but   if   one   already   exists   with   the   same   flag,   fail.   This   is   useful   for   security   purposes,   using   this   you   can   prevent   race   condition   exploits.     
    
  The   third   parameter   is   the   mode,   which   are   the   permissions   that   you   wish   to   assign   to   your   memory   segment,   those   are   the   same   as   permission   for   a   file.   Permissions   need   to   be   passed   in   octal   form   ex.   0644.   The   last   parameter   is   size   of   the   shared   memory   block   you   wish   to   create   in   bytes.     
  Note:   Note:   the   3rd   and   4th   should   be   entered   as   0   if   you   are   opening   an   existing   memory   segment.   On   success   shmop_open()   will   return   an   id   that   you   can   use   to   access   the   shared   memory   segment   you've   created.     
    
    
  Example   1.   Create   a   new   shared   memory   block   
    
    $shm_id   =   shmop_open(0x0fff,   "c",   0644,   100);   
  ?>   
      
      
    
    
  This   example   opened   a   shared   memory   block   with   a   system   id   of   0x0fff.     
    
  User   Contributed   Notes   
  shmop_open         
  macmaster@pobox.com   
  30-Mar-2001   12:15     
      
  the   key   is   a   LONG   variable   type,   meaning   that   the   key   can   only   be   eight   (8)   
  bytes   long,   which   can   be   too   short   if   you're   using   any   form   of   automagic   
  key   generation   (like   a   parsed   filename)   
    
      
      
  Mitchell_Shnier@ieee.orgZ   
  07-Nov-2001   05:51     
      
  To   check   whether   a   particular   shared   memory   segment   is   already   created,   you   
  need   to   concatenate   the   "a"   and   "c"   flags.   For   example   
  (where   $SystemKey   is   the   Unix   key   used   by   the   other   process(es)   with   which   
  you   want   to   share   this   memory   segment)...   
  $shm_id   =   shmop_open($SystemKey,   "ac",   0,   0);   
  if   ($shm_id)   {   
        #it   is   already   created   
  }   else   {   
        #you   need   to   create   it   with   shmop_open   using   "c"   only   
  }   
  Using   only   "a"   does   not   work   (just   as   using   only   IPC_EXCL   in   the   
  Unix   shmget()   call   is   meaningless).   Also,   use   the   ipcs   shell   command   to   
  see   your   shared   memory   segments.   
    
      
      
  hackie@prohost.org   
  20-Jan-2002   05:04     
      
  All   of   the   problems   have   been   addressed   in   the   CVS,   in   addition   the   a   mode   
  now   indeed   DOES   attach   to   the   segment   in   readonly   mode   (i.e.   SHM_RDONLY),   
  so   using   shm_write   on   it   would   fail   with   a   warning.   It   has   2   new   flags   w   
  (read/write)   and   n   (new   segment   IPC_CREAT|IPC_EXCL).     
  And   a   number   of   segfaults   fixed   :)   
  这是php.net提供的函数和一些网友使用心得   
    
  我的看法是   
    $shm_id=shmop_open("login","c",0644,2);----注意权限是0644也就是   
      6                     4                               4   
  写,执行       执行                       执行   
  而你在第二个页面用$login=shmop_read($shm_id1,0,1)来”读“所以提示说   
  unable   to   attach   or   create   shm   segment   on   line   2   
  浅妄薄见,望与斟酌   

#2


楼上的兄弟请看帖再回帖

#3


重新装

#4


重新装?我是手工安装的,说白了,就是直接把iis中的isapi加上

#5


重新装了个安装版的php5.2.4解决了

推荐阅读
  • 本文详细介绍了C++标准模板库(STL)中各容器的功能特性,并深入探讨了不同容器操作函数的异常安全性。 ... [详细]
  • Kafka 示例项目中 Log4j 的配置与调试
    本文详细介绍了如何在 Kafka 源码中的示例项目配置 Log4j,以确保能够正确记录日志信息,帮助开发者更好地理解和调试代码。 ... [详细]
  • Node.js中子进程的创建与管理详解
    本文深入探讨了Node.js中如何使用child_process模块来创建和管理子进程,包括exec、spawn和fork三种方法的具体应用及其实现细节。 ... [详细]
  • 本文详细记录了《PHP与MySQL Web开发》第一章的学习心得,特别关注了PHP的基本构成元素、标记风格、编程注意事项及表单处理技巧等内容。 ... [详细]
  • 本文介绍了如何在三台CentOS 7.5虚拟机上通过Docker部署RabbitMQ集群,包括环境准备、容器创建、集群配置及故障处理等内容。 ... [详细]
  • 本文详细介绍了在Hive中创建表的基本语法,包括临时表、外部表的创建方法,以及如何设置表的各种属性和约束条件。 ... [详细]
  • 本文介绍如何利用Python中的Epoll机制构建一个高效的Web服务器,该服务器能够处理多个并发连接,并向每个连接的客户端返回预定义的响应文本。通过使用Epoll,服务器可以实现高性能的I/O多路复用。 ... [详细]
  • 一、数据更新操作DML语法中主要包括两个内容:查询与更新,更新主要包括:增加数据、修改数据、删除数据。其中这些操作是离不开查询的。1、增加数据语法:INSERTINTO表名称[(字 ... [详细]
  • Django框架的使用教程mysql数据库[三]
    Django的数据库1.在Django_test下的view.py里面model定义模型fromdjango.dbimportmodels#Createyourmodelshere ... [详细]
  • HTML中用于创建表单的标签是什么
    本文将详细介绍HTML中用于创建表单的标签及其基本用法,包括表单的主要特性和常用的属性设置。如果您正在学习HTML或需要了解如何在网页中添加表单,这将是一个很好的起点。 ... [详细]
  • SQL注入实验:SqliLabs第38至45关解析
    本文深入探讨了SqliLabs项目中的第38至45关,重点讲解了堆叠注入(Stacked Queries)的应用技巧及防御策略。通过实际案例分析,帮助读者理解如何利用和防范此类SQL注入攻击。 ... [详细]
  • 本文探讨了使用Lighttpd与FastCGI实现分布式部署的方法。通过在中心服务器上配置Lighttpd负责请求转发,同时在多个远程服务器上运行FastCGI进程来处理实际业务逻辑,从而提高系统的负载能力和响应速度。 ... [详细]
  • IhavethefollowingarrayArray([6]>mobile)whileiprintingmyarraywithprint_rfunct ... [详细]
  • 本文详细探讨了在Windows Server 2003环境下遇到MySQL连接失败(错误代码10061)的解决方案,包括通过卸载特定的Windows更新和调整系统注册表设置的方法。 ... [详细]
  • Kafka组件详解及工作原理
    本文介绍了Apache Kafka的核心组件及其工作方式,包括生产者(Producer)、消费者(Consumer)、主题(Topic)、代理(Broker)、分区(Partition)、消费者组(Consumer Group)和偏移量(Offset),并探讨了这些组件之间的交互机制。 ... [详细]
author-avatar
韩韩韩韩韩海
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有