【问题标题】:SimpleXMLElement stops execution codeSimpleXMLElement 停止执行代码
【发布时间】:2016-11-21 09:40:01
【问题描述】:

我有一个循环代码的php函数,

$xml   = new SimpleXMLElement($request_url,null, TRUE);

函数在本地 xampp 中运行,但在将其上传到服务器时 它运行到 SimpleXMLElement,行和停止,而不是运行到函数的末尾

错误信息是,

    Message: SimpleXMLElement::__construct(): I/O warning : failed to load external entity "http:/..."  
failed to open stream: HTTP request failed! HTTP/1.1 503 Service Unavailable

而我本地的php版本是Apache/2.4.23 (Win32) OpenSSL/1.0.2h PHP/5.6.24 而我的服务器版本是PHP版本:5.5.9-1ubuntu4.20 Apache/2.4.7 (Ubuntu)

你知道这是什么原因吗,提前谢谢

【问题讨论】:

    标签: php apache ubuntu runtime-error


    【解决方案1】:

    返回的 503 Http 标头表明您尝试加载的资源所在的服务器不可用。

    此 HTTP 标头 503 Service Unavailable 表示:

    由于服务器临时过载或维护,服务器当前无法处理请求。

    根据 W3 规范:https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

    【讨论】:

    • 会不会是内存容量问题?
    • 不会是php版本问题吧?
    • 这不太可能。不是你的脚本不起作用。这是您尝试从中获取给出错误的 xml 的远程服务器。您的脚本刚刚停止,因为它无法处理 xml。
    【解决方案2】:

    解决了函数停止执行的问题,使用了php sleep() 函数和try-catch 块。现在有了这个流程,它成功执行到最后。

    foreach ($params as $key => $value) {
            ....
            ....
            $request_url = "the url";
        try{  
            sleep(1);
            $xml   = new SimpleXMLElement($request_url,null, TRUE);
    
          }catch(Exception $e){
            echo "Skipped";
          }
      } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-22
      • 1970-01-01
      • 2021-03-12
      • 2021-11-04
      相关资源
      最近更新 更多