2011-07-12 15 views
2

PHPアプリケーションで古いCOMオブジェクト/ ActiveXコントロールを使用しています。それはWindows/Apacheで動作します。通常、すべてが正常であるが、時々私はWAMPのPHPランダムCOMオブジェクトの問題

は、COMオブジェクトのTTF161.TTF1 'を作成できませんでした取得:Objektserver wird beendet、wenn DER OLE-Dienst IHN aufruft。

メッセージのドイツの一部は、OLEサービスがそれを呼び出すときのObjectServerが終了ようなものを意味します。

try-catchでオブジェクトの作成を囲みましたが、動作しませんでした。

問題は、全く同じ要求でランダムに発生します。したがって、プログラミングロジックの何にも関係していないので、この古いコンポーネントはちょっとバグがあり、時には失敗すると思います。しかし、私は再びそのような状況を処理するか、ユーザーにより良いエラーメッセージを与えるようにしたいと思います。私はそれがApacheのスレッドやプロセスの数に関係していると想像することもできます。イベントログには何も表示されず、Apacheエラーログも空です。

私はどのように対処することができます/問題をキャッチするか、私はより多くの情報を見つけるかもしれないヒントありがとう。

+0

実行中のPHPバージョンは? – JPW

+1

"OLEサービスに接続するとオブジェクトサーバーが停止しています"、http://finderr.net/search – JPW

+0

を参照してください。JPN:これは興味深い場合、PHP 5.2で発生します。 – ZoolWay

答えて

1
次のコードは、私の作品

(ウィンXP SP3、PHP 5.2.17(CLI)は、(組み込み:2011年1月6日17時37分45秒)):

<?php 
    try 
    { 
    echo "Trying to create object"."\r\n"; 
    $obj = new COM("FailingObject"); 
    echo "Object created"; 
    } 
    catch(com_exception $e) 
    { 
    echo "Caught exception"."\r\n"; 
    $c = $e->getCode(); 
    $m = $e->getMessage(); 
    echo "Error Code: ".dechex($c)."\r\n"; 
    echo $m; 
    } 
?> 

上でPHPを使用して、このスクリプトを実行しますコマンドラインでは、期待される結果が得られます。オブジェクト
キャッチされた例外
エラーコード作成しようとしています

:80080008
は `COMオブジェクトの作成に失敗しましたFailingObject ':オブジェクトサーバーがSTOPPですINGの際
OLEサービスの連絡先、それ

テストオブジェクト "FailingObjectは、" オブジェクトの作成中にエラーをシミュレートする

HRESULT FinalConstruct() 
{ 
    return CO_E_SERVER_STOPPING; 
} 

を使用して、簡単なATL COMオブジェクトです。

あなたのケースでは、オブジェクトの作成によってエラーがスローされるのではなく、別のCOMコールがPHP内のどこかで正しく処理されないという(私は完全に間違っている可能性があります)

通常、このエラーを検出できるはずなので、この動作のバグレポートを提出することを検討することがあります。