使用$ .post和$ .get寄存器打开的文件作为linux服务器上的打开文件?

时间:2013-12-15 01:26:26

标签: php ajax unix setinterval

我最近使用ajax调用更新了我的网站,以改善最终用户体验。一些调用被设置为反复轮询数据库,其他调用被调用以在用户交互时改变数据库,即。完成任务或取消购物车项目。

现在我因服务器打开文件限制而收到服务器错误。

以下是我正在使用的代码类型的一个示例:(信用转到谷歌上发现的每个教程......)

function checkForNewData() {   
   $.get('checkForNewData.php',false,function(data){      
      if(data.length){      
          $('#newData').html(data);
        } 
   }); 
}

$(function(){  
   checkForNewData();  
     setInterval('checkForNewData()',10000); 
});

我意识到通过使用“setInterval('checkForNewData()',10000);”这意味着对于打开此页面的每个用户,每10000毫秒加载一次文件。

以下是关于我对ajax无知的问题:

  1. unix服务器是否将每个ajax调用(此庄园)记录为页面加载或打开文件?
  2. 如果页面在幕后加载,我是否必须将其关闭?
  3. 有没有比重复轮询我的数据库更好的方法来保持网站最新。
  4. 感谢您的时间和助手。

1 个答案:

答案 0 :(得分:0)

unix服务器是否将每个ajax调用(此庄园)记录为页面加载或打开文件?

每次运行php文件时都会记录。执行任何方式的PHP记录。这就是为什么如果在AJAX调用期间出现任何问题,您可以在错误日志中看到错误。

如果页面在幕后加载,我是否必须将其关闭?

哪个页面? “checkForNewData.php”?不,你没有。 AJAX调用等待脚本执行&完成而不是获得响应。

是否有更好的方法让网站保持最新状态,而不是重复轮询我的数据库?

是的,有。我会:

在服务器上

  • 使用缓存(可能是APC缓存)
  • 仅每分钟/两分钟/五分钟运行一次数据库检查
  • 将结果存储/更新为XML文件

在客户端

  • 获取客户端页面加载的最新更新的时间戳
  • 获取AJAX以检查上次更新的时间戳(存储在XML中)
  • 如果AJAX响应的时间戳与首次加载时间戳不同,请从XML文件中获取新的HTML

使用AJAX标头或AJAX后期数据来请求特定功能(比如要求时间戳更新与获取HTML数据)。

请记住为json_encode使用正确的标志。

print_r(json_encode($html,JSON_HEX_QUOT|JSON_HEX_TAG|JSON_HEX_AMP|JSON_HEX_APOS));

还要记住压缩数据。

ob_start('ob_gzhandler');

最佳做法是尽量减少数据库调用。