1

ユーザーに関するSteamの詳細を取得するために、PHP Steam Condenserライブラリを使用しています。私はこれを正常に実装し、すべてが機能しています。ただし、Steam Condenser からエラーが頻繁にスローされることに気付き始めました。

何が起こっているのかというSteamIdと、パラメータを指定してクラスを呼び出すと、ライブラリが URL を生成し、SimpleXMLElement (ここで見られるように) を使用して URL にリクエストを送信します。現在、ほとんどの場合、URL は XML を返すため、アプリケーションは正常に動作しますが、Steam が頻繁にバックを503 Service Unavailable返し、失敗します。

try {
        return @new SimpleXMLElement($url, 0, true);
    } catch (Exception $e) {
        $errorMessage = "XML could not be parsed: " . $e->getMessage();
        if ((float) phpversion() < 5.3) {
            throw new SteamCondenserException($errorMessage, 0);
        } else {
            throw new SteamCondenserException($errorMessage, 0, $e);
        }
    }

私の原因では、PHP バージョンは正しいため、一番下のカスタム例外がスローされます。

SteamCondenserException
XML could not be parsed: String could not be parsed as XML
/home/user/public_html/acme/vendor/koraktor/steam-condenser/lib/steam/community/XMLData.php (Line 38)

これは技術的には正しい例外ですが、リクエストが単に「使用不可」であり、XML を収集できなかったため、あまり意味がありません。

このコードを編集して、リクエストのステータス コードが 302 または 200 の場合 (リダイレクトされるため) を最初に確認してから、XML の確認に進みます。エラー (Steam コミュニティ API は現在ダウンしています) - または何か。

Googleでお尻をオフにしましたが、何も見えません。Steam は時々少し遅くなることがあるので、理想的にはすべてを同じリクエストで実行したいと思います。

乾杯

4

1 に答える 1

2

HTTP リクエストに使用しないでくださいSimpleXMLElement

を使用curlして (高速であるため)、XML プレーン テキストを取得しSimpleXMLて解析します。

こうすることで、サービスの可用性を伝送エラー (または XML エラー) から分離できます。

于 2014-02-14T15:53:56.657 に答える