我有一个小应用程序,用于存储网络中所有计算机的硬件数据。 powershell脚本获取数据并从中生成XML。 然后通过HTTP请求将此XML发送到我的PHP脚本。
在我的PHP脚本上,我将数据映射到存储在数据库中的几个对象(理性)。
大多数情况下,我总是收到相同的XML,因为硬件并不经常更改。
我不想将XML拆分为对象(即使有可用的库),从数据库中抓取对象然后进行比较。
我创建了一个代表XML的唯一键(XML不是很大,最多80行)。这个密钥存储在数据库中,每次我只需要比较这个密钥。如果相同,我不需要进行任何更新。
我很感激每个提案。
答案 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。