Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在同一文件上写入多个ajax请求。_Javascript_Php_Ajax_Xml - Fatal编程技术网

Javascript 在同一文件上写入多个ajax请求。

Javascript 在同一文件上写入多个ajax请求。,javascript,php,ajax,xml,Javascript,Php,Ajax,Xml,在我的应用程序中,我使用多个ajax请求来写入XML文件。Ajax请求是在某些事件上触发的(比如div的offsettop等于某个值),因此无法准确预测它们的时间。也有可能两个请求同时触发。我的问题是,如果它们同时启动并试图写入同一个XML文件,您是否认为这会导致冲突,从而导致文件不能由两个请求打开。因为,在我的情况下,我得到一个错误,说: (!)警告:simplexmlement::asXML(withbabu.xml)[simplexmlement.asXML]:打开流失败:参数无效 我知道

在我的应用程序中,我使用多个ajax请求来写入XML文件。Ajax请求是在某些事件上触发的(比如div的offsettop等于某个值),因此无法准确预测它们的时间。也有可能两个请求同时触发。我的问题是,如果它们同时启动并试图写入同一个XML文件,您是否认为这会导致冲突,从而导致文件不能由两个请求打开。因为,在我的情况下,我得到一个错误,说:

(!)警告:simplexmlement::asXML(withbabu.xml)[simplexmlement.asXML]:打开流失败:参数无效

我知道当文件名错误或文件不存在时会出现此错误,但在我的例子中,相同的请求能够多次运行相同的代码行,并且只在某些时候返回此错误。因此,我确信幕后正在发生一些事情。由于我正在使用多个ajax请求写入同一个文件,所以我认为,这可能是导致此错误的原因。请提供你的答案,如果你知道什么可以解决这个问题

错误出现在这一行:

$filename = "with".$SESSION['user'];
$xml->asXML($filename.'.xml');       // error shows its line number here. 
作为一个介绍,这类似于一个游戏应用程序,基于特定事件触发多个ajax请求

非常感谢您抽出时间回顾我的问题


干杯

在使用
asXML
之前,您需要装箱一个xml对象。这样做:

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

当然,访问同一个文件应该是同步的!但是,在php脚本中使用会话(session_start())会序列化每个会话的并发请求;所以应该已经为您执行了此同步。在出现错误的情况下,您是否检查了结果文件名?可能是无效文件名(由于用户名中有特殊字符?)文件名始终相同,并且取决于当前登录的用户会话。它在大多数情况下都有效。比方说,相同的代码工作100次,失败一次。在ajax请求期间。。。我不知道为什么。亲爱的,我只是简单地展示了代码。我在文件的开头创建了..$xml=new simplexmlement($filename.'.xml',null,true);$lastid=$xml->xpath(“/game/otherchars/lastid”);$lastid=(int)$lastid[0];$otherchars=$xml->xpath(“/game/otherchars/char”);$limit=0;for($i=0;$iname;$total=(int)$otherchars[$i]->total;$gone=(int)$otherchars[$i]->gone;$looptill=$total-$gone;for($j=0;$jgone=(int)$otherchars[$i]->gone+1;$xml->asXML($filename..xml');echo“setanim('$lastid');“;$lastid=$lastid=$lastid+1;$ocref=$xml->$ocref[0]->lastid=$lastid;$xml->asXML($filename.'.xml');//print\r($otherchars[$i]);$limit=$limit+1;}}$curruser=$\u SESSION['user'];$filename=“with”。$curruser;这就是$filename的初始化方式。