【问题标题】:How to log PHP file run with jQuery AJAX in browser console?如何在浏览器控制台中记录使用 jQuery AJAX 运行的 PHP 文件?
【发布时间】:2018-02-02 10:50:00
【问题描述】:

我有一个进行数据处理的 PHP 文件。它由$.ajax() 运行,有时处理需要很长时间才能处理的大文件。我需要在浏览器控制台中记录一些关于正在进行的进程的信息,这些信息on the go,而不仅仅是 PHP 文件完成运行时。

从我所做的研究中,我发现有两个困难:

  1. 让 PHP 在完成之前吐出一些东西
  2. 让 jQuery/JS 随时随地显示

为了解决 #1,我已经尝试过:

echo "started"."<br>";

foreach (array("done this", "done that","had a coffee","burp") as $msg) {
    sleep(3);
    echo $msg."<br>";
    flush();
    ob_flush();
}

flush(); ob_flush(); 应该可以完成这项工作,尽管您可以测试 here 它并没有像预期的那样严格显示 3s。有什么建议让它按预期显示吗?

至于如何解决 #2,我已经探索了一个涉及 XMLHttpRequest 的解决方案,但我不熟悉这个主题,所以不知道要寻找什么,也不知道它是否是正确的方向......

这是我要运行的测试代码:

$("#run").click(function(e) {
  $.ajax({
    url: "http://constances-web-dev.vjf.inserm.fr/constances-web/ajax-test.php",
    xhr: function() {
      // get the native XmlHttpRequest object
      var xhr = $.ajaxSettings.xhr();
      xhr.addEventListener('readystatechange', function(e) {
        console.log(e)
      });
      // set the onprogress event handler
      //xhr.onprogress = function(evt){ console.log(evt.target.response) } ;
      // set the onload event handler
      return xhr;
    },
    success: function(msg) {
      console.log(msg);
    },
    error: function(msg) {
      console.log("Erreur: " + msg);
    }
  })
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="run">go</button>

附属问题:是否有一种(简单的)方法可以绕过跨域限制,以使 AJAX 示例在 SO sn-p 中工作?

【问题讨论】:

  • 对于您的附属问题,很遗憾,答案是Here 是 SO 解释。
  • 嘿@freginold 非常感谢您的帮助!想知道为什么由于代码涉及无法运行的 ajax 而推荐使用 snipet?
  • @freginold 也感谢 +1,据我所知,这让我获得了达到 50 所需的 5 声誉。我现在是一个大女孩,可以发表评论!太棒了!
  • 您仍然可以查看是否生成了任何控制台消息或错误,具体取决于示例,它提供了一种更好的方式来组织代码,而不仅仅是代码块。
  • 好的,谢谢

标签: javascript php ajax xmlhttprequest data-processing


【解决方案1】:

作为一种解决方法,我在 write2log 函数中添加了一个日志文件

static function log2File($string, $logFileName) {
        if (substr($string,0,1 ) == "\n")
            exec("echo '".date('Y-m-d_H:i:s')." ".addslashes(substr($string,1))."' >> ".$logFileName,$output,$status);
        else
            exec("echo -n ".addslashes($string)."' >> ".$logFileName,$output,$status);
    }

然后我可以tail -f日志查看事情的进展

但这需要 ssh 访问服务器,所以 我仍然有兴趣弄清楚如何登录到控制台

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 2012-10-19
    • 2020-03-03
    • 1970-01-01
    相关资源
    最近更新 更多