0

xml ファイルがありますが、構造が正しく処理されません。なぜこれが起こり続けるのか、私にはわかりません。PHP バージョン 5.1.6 で xml を処理する際に注意すべきことはありますか? (私は、VPN を介したセキュリティ上の問題と、外部からのアクセスがないことを十分に認識しています。今はアップグレードしたくありません。)

xml 構造は次のとおりです。

<XML>
  <actions>
    <action>
      <action_id>1</action_id>
    </action>
   <action>
     <action_id>2</action_id>
   </action>
  </actions>
  <actionreferences>
   <actionreference>
     <action_id>2</action_id>
     <reference>1</reference>
   </actionreference>
  </actionreferences>
</XML>

このスキーマには、より多くのアクションを含めることができるため、より多くの参照を含めることができます。新しいアクションはベースにすることができますが、別のアクションに基づいてはなりません。DTD はありませんが、php コード ロジックは構造に依存しており、安全なガードが配置されています。私にとって最も重要なのは、検出したアクションと参照ごとにきめ細かいコード化されたロギングがあることです。

XML ファイルを受信した後の php スクリプトは、アクションと MySQL DB サーバーへの参照を書き込みます。

問題は、アクション参照が欠落している場合があることです。PHP のログから、サーバーに到達していないように見えます。私の研究室のセットアップではこれを再現できませんでしたが、ライブ システムではトランザクションの 0.4%、約 10 回発生したことを確認しました。

  • 正しく機能するように xml を生成する Win32 アプリケーションを手動でテストしたため、xml が間違って生成された可能性は除外します。
  • エラーがスローされる可能性があるため、転送中にxmlファイルが破損する可能性を除外し、アクション参照領域でxmlを切り取り、再試行しました

他に何が欠けていますか、これらの参照が時々処理されない原因は何ですか?

アップデートの詳細

xml ファイルは、.net 2.0 クライアントを使用する Windows 上の mdb アクセス データベースに基づいて生成されます。次のような xml の生成の問題を除外します。

  • 手動で数回開始/終了し、結果のxmlファイルで差分を作成しましたが、常に予想どおりで、他のシステムで2年間使用されていましたが、問題は発生しませんでした
  • 単純な xml2array 関数を使用した php スクリプト
  • xml ファイルは gzip され、Apache 2 で実行されている php スクリプトに POST されます
  • Apache と php カスタム ログのすべてのログを確認しました。そこには転送エラーはありません。クライアントもログを書き出します。そこにはエラーはありませんが、現在使用しているクライアントは html リターンをログに記録せず、HTTP 200 をログに記録するだけです。わかった
  • PHP xml はhttp://us4.php.net/manual/en/function.xml-parse-into-struct.phpです。
  • MySQL を完全に除外することはできません。Apache エラー ログにいくつかのエラーが見つかりました。php で正しくキャッチできなかった mysql db エラーもあります。
4

1 に答える 1

0

1 つには、XML にエラーがあります。

<reference>1</references>

する必要があります

<reference>1</reference>

(「s」に注意してください)

于 2013-02-10T01:38:15.750 に答える