Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中作为脚本例程导入大量数据时,XML是最好的数据交换格式吗?_Php_Xml_Import_Magento - Fatal编程技术网

在PHP中作为脚本例程导入大量数据时,XML是最好的数据交换格式吗?

在PHP中作为脚本例程导入大量数据时,XML是最好的数据交换格式吗?,php,xml,import,magento,Php,Xml,Import,Magento,如果我有50000-100000个产品SKU以及需要定期(至少每天一次)更新的附带信息(包括规格和说明),XML是作为数据交换格式的最佳方式吗?该应用程序是用PHP编写的,我考虑将SimpleXML转换为PHP的本机MySQL调用(而不是使用应用程序挂钩将数据转储到数据库中的适当位置)。服务器将基于Linux,我将拥有完全的根访问权限。我知道这是一个相当普遍的问题,这就是为什么我把它作为社区维基——我正在寻找一种被认为是最佳实践的总体方法。如果重要的话,应用程序是Magento。XML唯一真正的

如果我有50000-100000个产品SKU以及需要定期(至少每天一次)更新的附带信息(包括规格和说明),XML是作为数据交换格式的最佳方式吗?该应用程序是用PHP编写的,我考虑将SimpleXML转换为PHP的本机MySQL调用(而不是使用应用程序挂钩将数据转储到数据库中的适当位置)。服务器将基于Linux,我将拥有完全的根访问权限。我知道这是一个相当普遍的问题,这就是为什么我把它作为社区维基——我正在寻找一种被认为是最佳实践的总体方法。如果重要的话,应用程序是Magento。

XML唯一真正的缺点是它非常冗长。与其他格式相比,XML文件通常非常大。好处是它相对容易阅读(对于人)和解析(对于软件)。由于只有10万条记录(不知道每条记录的大小),我想我应该使用XML。

我目前在电子商务项目中使用XML作为导入格式。它目前拥有10000多个产品、属性和描述,并将非常快速地对数据进行迭代。不过,在这件事上我别无选择


使用SOAP将是仅接收原始XML的可行替代方案(尽管,我认为这会增加性能成本,因为SOAP使用XML作为其消息传递格式),但是,您可以将数据作为本机PHP类型获取,例如可以直接传递给DAL以插入数据库的数组,跳过构造SimpleXML对象的需要

您必须为给定场景定义“最佳”参数

XML是冗长的,这意味着两件事

  • 您可以提供大量关于数据的详细信息,包括元数据
  • 文件大小将会很大
使用XML获得的另一个优势是使用XPath等工具进行更高级的“开箱即用”解析/选择

但是你可以选择很多其他格式,每种格式都有各自的优缺点

还有其他几个


我的观点是,您需要找出什么对您的系统很重要(速度?字符集支持?人类可读性?),并选择一种双方都兼容的格式。

JSON比XML占用的空间小得多,尽管XML压缩得很好。XML还具有许多成熟库和工具的优势

如果您与第三方源交换数据,您可能希望使用模式验证这些XML。对于JSON,您没有这样的功能


就我个人而言,我大部分时间都在使用XML。如果空间是个问题,我会对XML数据应用gzip压缩

当你说“作为原生PHP类型”,你是什么意思?如果服务器A(具有原始数据)调用服务器B(具有应用程序实例),它将发送什么?好的,SOAP服务器(在它的WSDL中(如果使用),可以将“type”指定为“type=”xsd:struct“,这意味着您的PHP SOAP客户端应该将来自SOAP函数调用的响应解释为数组。不需要创建SimpleXML对象,因为您的客户端已经为您返回了一个数组。二进制文件不需要完全解析,因此可以非常快速地映射到内存中。然而,在交换数据时,这可能会变得棘手,因此在这里,XML可能是合适的。