有人可以解释这种奇怪的行为吗?

时间:2015-09-02 10:04:13

标签: javascript php json

我每隔30秒就调用一次javascript函数:

function getOutput() {
sleep(30000);
setInterval(function(){
 getRequest(
      'prova1.php', // URL for the PHP file
       drawOutput,  // handle successful request
       drawError    // handle error
  );
  return true;
 },30000);

prova1.php文件执行一个命令,打开包含json格式文本的两个页面并将它们保存在本地存储库中,带有json文件的页面大约每20秒由c ++程序更新一次:

<?php

  exec(" wget http://127.0.0.1:8082/Canvases/Fe0_Cbc0_Calibration/root.json -O provami1.json");
   exec(" wget http://127.0.0.1:8082/Canvases/Fe0_Cbc1_Calibration/root.json -O provami2.json");

?>

发生的奇怪事情是,当我在第一时间查看代码的执行时,脚本保存文件provami1.json和provami2.json,大小为x kbyte,但是在第二次provami2.json变为0之后空。如果是最后一次运行,并且c ++程序终止,则两个文件都包含正确的数据。我真的不明白为什么会这样。希望有人可以提供帮助。

2 个答案:

答案 0 :(得分:0)

我认为这里的问题是AJAX是异步的,所以在从请求中得到任何响应之前你会返回true。

尝试以这种方式调试:

function getOutput() {
sleep(30000);
setInterval(function(){
 getRequest(
      'prova1.php', // URL for the PHP file
       drawOutput,  // handle successful request
       drawError    // handle error
      // Also debug here the response from the request.
  );
 console.log('2');
  return true;
 },30000);

答案 1 :(得分:0)

检查用户是否具有写入权限,并尝试使用带有附加选项的wget,即wget -o logfile URL -a。 我认为如果你使用wget来检索数据,那么PHP可以选择这样做,你可以使用CURL或file_get_content来获取数据并写入文件。之后你的c ++编程将完成剩下的工作。希望这会对你有所帮助