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

phpsoapclient参数,序列化–序列化PHPSOAPClient对象

我正在编写一个PHP应用程序,它使用许多SOAPWeb服务来收集数据.我在实例化所有这些对象时会遇到很大的开销:在某些情况下,单行代码$objectnewSoapCl

我正在编写一个PHP应用程序,它使用许多SOAP Web服务来收集数据.

我在实例化所有这些对象时会遇到很大的开销:在某些情况下,单行代码$object = new SoapClient($wsdl);可能需要三秒钟.显然,只有少数几个使网页感觉非常慢.

为了加快速度,我想我会将对象序列化并将它们存储在会话中(或类似的地方),所以我编写了以下函数:

function soap_client($name,$wsdl) {

if (!isset($_SESSION['soapobjects'][$name])) {

$client = new SoapClient($wsdl, array('trace' => 1));

$_SESSION['soapobjects'][$name]=serialize($client);

} else {

$client = unserialize($_SESSION['soapobjects'][$name]);

}

return $client;

}

……然后像这样称呼它……

$client = soap_client('servicename',$wsdl);

$client->MethodName($parameters);

但是,它似乎不起作用.

第一次运行它时,它可以工作(即创建对象并生成序列化副本,并且方法调用正常).但是,第二次运行它时,它会失败.

该对象似乎正确序列化和反序列化,但是当您尝试对反序列化对象执行SOAP调用时,它会引发以下错误:

Fatal error: Uncaught SoapFault exception: [Client] Error finding "uri" property

显然,反序列化对象与原始对象不同,这与对象序列化应该如何工作不一致.

谁能解释为什么我收到这个错误?你能建议一种让它运作的方法,或者我可以追求的另一种策略吗?

谢谢.

ps – 我试图解决这个问题,但没有快乐.

我已经尝试在options参数中指定URI(如PHP SOAP Client manual中所指定的),但它没有任何区别.但是无论如何它都不是必需的,因为我正在使用WSDL.

我也试过简单地将对象复制到$_SESSION,而不使用serialize()和deserialize(),但这具有完全相同的效果.

解决方法:

内置的SOAP扩展是一个不可判坏的二进制blob.很可能它并没有考虑到序列化.例如,它可能包含一个内部文件句柄,它不会在序列化/反序列化过程中存活.我建议你使用其他一些SOAP客户端,例如:

> Zend_Soap,Zend Framework的一部分.您不需要在代码的任何其他区域使用Framework,并且可能删除大多数其他组件.但是,它似乎在封面下使用现有的SOAP扩展,因此它可能不适合序列化.

> PEAR’s SOAP经常被引用,虽然它有点旧.

> NuSOAP最近已经从死里复活,尽管所有在线文档似乎已经消失在zip文件中.

如果这些都不合适,请考虑在本地缓存WSDL文件,因为我不知何故预计延迟就在哪里.来源:https://www.icode9.com/content-1-255701.html



推荐阅读
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
  • 本文介绍了关于smarty自定义缓存名的解决思路,通过放弃生成缓存,直接生成html的静态页面来提高速度。同时提供了一个参考链接供参考。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 移动端常用单位——rem的使用方法和注意事项
    本文介绍了移动端常用的单位rem的使用方法和注意事项,包括px、%、em、vw、vh等其他常用单位的比较。同时还介绍了如何通过JS获取视口宽度并动态调整rem的值,以适应不同设备的屏幕大小。此外,还提到了rem目前在移动端的主流地位。 ... [详细]
  • 突破MIUI14限制,自定义胶囊图标、大图标样式,支持任意APP
    本文介绍了如何突破MIUI14的限制,实现自定义胶囊图标和大图标样式,并支持任意APP。需要一定的动手能力和主题设计师账号权限或者会主题pojie。详细步骤包括应用包名获取、素材制作和封包获取等。 ... [详细]
author-avatar
wjyyd1129
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有