从 XML 创建唯一密钥
Create a unique key from XML
起点
我有一个小应用程序,用于存储网络中所有计算机的硬件数据。 powershell 脚本获取数据并从中生成 XML。
这个 XML 然后通过 HTTP 请求发送到我的 PHP 脚本。
在我的 PHP 脚本中,我将数据映射到存储在数据库中的几个对象(理性)。
问题
大多数时候我收到的总是一样的XML,因为硬件不经常变化。
我不想将 XML 拆分为对象(即使有库),从数据库中获取对象然后进行比较。
所需的解决方案
我创建了一个代表 XML 的唯一键(XML 不是很大,最多 80 行)。这个密钥存储在数据库中,每次我只需要比较这个密钥。如果一样,我就不用更新了。
感谢每一个建议。
要检查对象之间的差异(我所说的对象是指文本文件、歌曲、XML 文件,任何字节流),您可以使用哈希函数。
哈希函数的目标是计算 "unique" 标识内容的数据,而不存储内容。它通常比内容短得多(例如 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。
起点
我有一个小应用程序,用于存储网络中所有计算机的硬件数据。 powershell 脚本获取数据并从中生成 XML。 这个 XML 然后通过 HTTP 请求发送到我的 PHP 脚本。
在我的 PHP 脚本中,我将数据映射到存储在数据库中的几个对象(理性)。
问题
大多数时候我收到的总是一样的XML,因为硬件不经常变化。
我不想将 XML 拆分为对象(即使有库),从数据库中获取对象然后进行比较。
所需的解决方案
我创建了一个代表 XML 的唯一键(XML 不是很大,最多 80 行)。这个密钥存储在数据库中,每次我只需要比较这个密钥。如果一样,我就不用更新了。
感谢每一个建议。
要检查对象之间的差异(我所说的对象是指文本文件、歌曲、XML 文件,任何字节流),您可以使用哈希函数。
哈希函数的目标是计算 "unique" 标识内容的数据,而不存储内容。它通常比内容短得多(例如 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。