내 서버에서 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");
?>
5.1에 LOCK_EX이 (가) 추가되었습니다. 호스트 서버에서이 버전 이상을 사용하고 있습니까? 'phpinfo()'를 시도해보십시오. – leftclickben
PHP 버전을 확인했습니다. PHP 버전 5.3.14 –
다음 질문. 당신의 로컬 서버에서 어떻게 작동하는지 어떻게 알 수 있습니까? 호스팅 된 서버 에서처럼 많은 사용자가 동시에 서버를 사용 했습니까? 그렇지 않은 경우 로컬로 작동하는지 실제로 확인하지 않았습니다. 문제를 직접 해결하는 데는 도움이되지 않지만 최소한 로컬로 재현 할 수 있다면 디버깅을 할 때 고통을 줄일 수 있습니다. – leftclickben