1

我的CasperJS脚本jQuery通过PHP script. 问题是,PHP 脚本需要大约 70 秒才能执行,但不知何故 CasperJS 或 jQuery 在大约 30 秒后取消了请求并抛出错误:Error: NETWORK_ERR: XMLHttpRequest Exception 101.

调用 PHP 脚本的代码:

var result = casper.evaluate(function(){
    $.ajaxSetup({'async':false});
    var result = $.get('http://localhost/full.php', function() {} );
    return result;
});

我尝试了以下解决方案:

// For CasperJS:
pageSettings: {
    timeout: 999999999
}

// For jQuery
$.ajaxSetup({'timeout':999999999});

此外,我确保执行的 PHP 脚本不是错误的原因(我制作了一个包含所有使用函数的测试脚本,只需要几秒钟即可执行。这很好)。

我读到 jQuery 默认情况下没有超时,并且 CasperJS 在发生超时时会引发错误。但不知何故,它一定是超时错误,因为它总是在大约 30 秒后发生。(顺便说一句.. PHP 脚本使用set_time_limit(0);

感谢您的任何建议!

4

1 回答 1

2

此外,我确保执行的 PHP 脚本不是错误的原因(我制作了一个包含所有使用函数的测试脚本,只需要几秒钟即可执行。这很好)。

这可能是问题所在。您是否在编写脚本需要 70 秒时尝试过?Php 还有一个最大执行时间设置,如此所述。默认情况下,它是 30 秒。尝试在相同的场景中进行测试。

Jsut 对于期货引用,默认的 Jquery Ajax Timeout 为 0(技术上它是未定义的,但行为为 0)。这意味着 jQuery 本身没有超时...您可以通过$.ajax ({timeout: XXXX })或指定一个$.ajaxSetup ({timeout: XXXX })。完整的回调包含一个对请求状态进行分类的字符串(“success”、“notmodified”、“error”、“timeout”、“abort”或“parsererror”)。

casperJs 中还有两个超时:timeout 和steptimeout 。当脚本/步骤执行时间超过这些限制时,ontimeout还会执行两个回调。steptimout

于 2013-06-25T08:21:11.430 回答