0
我在將CGI與網頁同步時遇到問題。我有一個用C語言編寫的CGI,負責創建XML文件並不斷更新它。我的網頁讀取該XML並在頁面上顯示內容。兩者(CGI和網頁)都在不斷運行。有時候,當我的CGI將數據寫入xml文件時,網頁會嘗試同時讀取它,並且用java腳本編寫的函數無法讀取數據。有什麼辦法來同步這個嗎? (就像在Linux中我們使用互斥體)類似的東西。無法同步Java腳本和CGI
我的一些代碼卡里面我是用讀取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;
部分我的CGI創建XML
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腳本):
"document.getElementById("to").innerHTML= xmlDoc.getElementsByTagName("to") [0].childNodes[0].nodeValue;"
在開始寫入文件之前鎖定文件。當你完成寫作時解鎖它。在讀取之前檢查是否存在鎖定,如果存在,則等待鎖定消失後再繼續。 – Quentin
感謝您的回覆....將嘗試.... –