2014-01-15 67 views
0

在我的應用程序中,我使用了寫入XML文件的多個ajax請求。 Ajax請求在某些事件上被觸發(如div的偏移量等於某個值),所以他們的時間不能被準確預測。這兩個請求也可能同時觸發。我的問題是,如果它們同時觸發並嘗試寫入相同的XML文件,您是否認爲這會產生衝突,導致文件無法通過兩個請求打開。因爲,在我的情況下,我得到一個錯誤說:在同一個文件上寫入多個ajax請求。

警告(!)的SimpleXMLElement :: asXML(withbabu.xml)[simplexmlelement.asxml]:未能打開流:無效的參數

我知道這個錯誤是在文件名錯誤或文件不存在的情況下發生的,但在我的情況下,同樣的請求能夠運行多次相同的代碼行,並且有時只返回這個錯誤。所以,我相信幕後發生了一些事情。由於我正在使用多個Ajax請求寫入同一個文件,所以我想,這可能是導致此錯誤的原因。如果你知道可以解決這個問題的話,請提供你的答案。

錯誤即將在這條線:

$filename = "with".$SESSION['user']; 
$xml->asXML($filename.'.xml');  // error shows its line number here. 

只是作爲一個介紹,這是類似於一個遊戲應用,並在觸發基於某些事件的多個Ajax請求。

非常感謝您抽出時間回顧我的問題。

乾杯。

+1

訪問相同的文件當然應該是同步的!然而,在你的php腳本中使用會話(session_start())會序列化每個會話的併發請求;所以應該已經爲你做這個同步.. – fast

+1

你檢查了錯誤的情況下產生的文件名?也許這是一個無效的文件名(由於用戶名中的特殊字符?) – fast

+0

讓我檢查它 –

回答

0

在使用asXML之前,您需要創建一個xml對象。這樣做:

$filename = "with".$SESSION['user']; 
$xml=new SimpleXMLElement(); 
$xml->asXML($filename.'.xml'); 
+0

親愛的,我簡單地展示了代碼。我在文件開頭創建了這個文件.. –

+1

然後讓我們看看你的完整代碼 – user2936213

+0

這裏是完整的代碼.... –

相關問題