从XML

时间:2015-04-30 06:00:54

标签: php xml key unique

起点

我有一个小应用程序,用于存储网络中所有计算机的硬件数据。 powershell脚本获取数据并从中生成XML。 然后通过HTTP请求将此XML发送到我的PHP脚本。

在我的PHP脚本上,我将数据映射到存储在数据库中的几个对象(理性)。

问题

大多数情况下,我总是收到相同的XML,因为硬件并不经常更改。

我不想将XML拆分为对象(即使有可用的库),从数据库中抓取对象然后进行比较。

期望的解决方案

我创建了一个代表XML的唯一键(XML不是很大,最多80行)。这个密钥存储在数据库中,每次我只需要比较这个密钥。如果相同,我不需要进行任何更新。

我很感激每个提案。

1 个答案:

答案 0 :(得分:1)

要检查对象之间的区别(按对象我的意思是文本文件,歌曲,XML文件,任何字节流),您可以使用哈希函数。

哈希函数的目标是计算一个"唯一的"标识内容的数据,不存储内容。它通常远远短于内容(例如128字节)。最知名的是md5。它将计算md5哈希值(一个16字节的字符串,您可以将数据存储在数据库中。

这里有一个关于如何做的基本伪代码:

// Compute the md5 hash of the data you have just received
$hash = md5($data);
// Check if the hash is the same as the one stored into your database
sql_query(<select last hash for your machine>)
// Different data, update into database
if ($last_hash != $hash) {
     // Store the new hash in database & your new content
     sql_query(<update your document with $data and $hash>)
 } else {
      // $hash == $last_hash, content has not changed, do nothing
 }

计算md5哈希值所需的PHP函数是md5