我在将 CGI 与网页同步时遇到问题。我有一个用 C 语言编写的 CGI,负责创建 XML 文件并不断更新它。我的网页读取该 XML 并在页面上显示内容。并且两者(CGI 和网页)都在持续运行。有时,当我的 CGI 将数据写入 xml 文件时,网页会尝试同时读取它,而我用 java 脚本编写的函数无法读取数据。有没有办法同步这个。(就像在linux中我们使用互斥锁一样)类似的东西。
我用来读取 XML 文件的代码的一些快照:
<xml ID="noteXML"
SRC="note.xml"></xml>
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","note.xml?"+ Math.random(),false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
document.getElementById("to").innerHTML=
xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;
我创建 XML 的 CGi 的一部分
void CreateXMLFile()
{
char buffer[300];
sprintf(buffer,"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?> \n <note> \n <to>%d</to> \n <status>%s</status> <upgraded>%d</upgraded> <remaining>%d</remaining> \n </note>",100,"Welcom to XML",10,15);
FILE *xml = fopen("/var/www/html/note.xml","w");
if(xml)
{
fprintf (xml,"%s",buffer);
fclose(xml);
}
在以下行(Java Script)中调试其给出错误时:
"document.getElementById("to").innerHTML= xmlDoc.getElementsByTagName("to") [0].childNodes[0].nodeValue;"