2013-03-03 2 views
0

내 서버에서 xml 파일이 실행 중입니다. 내 localserver에서 모든 것이 잘 작동하지만 내 서버에 업로드 할 때, 그리고 많은 사람들이 그것을 사용할 때 xml 파일에 오류가 발생합니다.xml 파일에 잘못된 요소가 추가되었습니다.

저는 PHP에서 simplexml을 사용하여 데이터를 읽고 업데이트합니다. 그것은 몇 시간 동안 완벽하게 작동하지만, 잠시 후, 일부 요소가 내 xml 파일에 추가 얻을 예를 들어

, 내가 가진 내 XML의 다음과 같은 구조는

<?xml version="1.0"?> 
<db> 
<uid></uid> 
<score></score> 
</db> 

파일. 예를 들어,

<db> 
<uid></uid> 
<score></score> 
</db>/score</db> 

또는

<db> 
<uid></uid> 
<score><//score> 
</db> 

또는

<db> 
<uid></uid> 
<core></score> 
</db> 

다음 내가 구문 분석 에러를 얻을. 그것은 많은 사람들이 동시에 내 XML 파일에 쓰고 있기 때문입니까? 그게 문제

안된다 그래서 나는 - 그것을

$data= new SimpleXMLElement($file, null, true); 

을 개방하고 어떻게 이것은 LOCK_EX을 사용하고 그리고 이것은 내가 IT-에게

file_put_contents($file, $data->asXML(), LOCK_EX); 

을 폐쇄하고 그리고 그것이 작동하는 방법이다 내 localserver에서 완벽하게 괜찮아. 그리고 그것은 그것을 온라인으로 업로드하지만 갑자기 이상한 일들이 내 xml 파일에 발생할 때도 정상적으로 작동합니다. 뭐가 문제 야?

편집 :

내 업데이트

<?php 
include('functions.php'); 
$winid= $_GET['wid']; 
$loseid=$_GET['lid']; 
$winid=intval($winid); 
$loseid=intval($loseid); 
$file="data.xml"; 
$data= new SimpleXMLElement($file, null, true); 
$winner=intval($data->score[$winid]); 
$loser=intval($data->score[$loseid]); 
$exp_winner=expected($loser,$winner); 
$new_win=win($winner,$exp_winner); 
$exp_loser=expected($winner,$loser); 
$new_lose=loss($loser,$exp_loser); 
$data->score[$winid]=$new_win; 
$data->score[$loseid]==$new_lose; 
file_put_contents($file, $data->asXML(), LOCK_EX); 
header("Location: index.php"); 
?> 
+1

5.1에 LOCK_EX이 (가) 추가되었습니다. 호스트 서버에서이 버전 이상을 사용하고 있습니까? 'phpinfo()'를 시도해보십시오. – leftclickben

+0

PHP 버전을 확인했습니다. PHP 버전 5.3.14 –

+0

다음 질문. 당신의 로컬 서버에서 어떻게 작동하는지 어떻게 알 수 있습니까? 호스팅 된 서버 에서처럼 많은 사용자가 동시에 서버를 사용 했습니까? 그렇지 않은 경우 로컬로 작동하는지 실제로 확인하지 않았습니다. 문제를 직접 해결하는 데는 도움이되지 않지만 최소한 로컬로 재현 할 수 있다면 디버깅을 할 때 고통을 줄일 수 있습니다. – leftclickben

답변

0

$data->score->string$data->score['string']의 모든 항목을 변경해보십시오 코드 -. 도움이되는지 확인하십시오!

예 : $winner=intval($data->score[$winid]); 또한

$winner=intval($data->score->$winid);에 변경, 당신은 실수로이 라인 $data->score[$loseid]==$new_lose;에 두 개의 등호를 썼다!

+0

나는 이것을 시도했다. 작동하지 않습니다. 사실 내가 원하지 않는 여분의 점수 태그를 만듭니다. –

관련 문제