2017-12-09 4 views
0

私はfsockopen、fgets、fputsを使って他のマシンとの通信プロトコルを実装しています。 NetBeansは、fsockopen, fputs, fgetsなどの前にすべての '@'に警告を出します。リモートデバイスの切断後には解決策は動作しますが、 '@'を除いて警告(エラーではありません)が行われます。エラー報告を無効にすることなく、fputs、fsockopenなどの警告を抑制する方法は?

私はerror_reportingを使用したくありません。なぜなら、よりコーシャーな解決策ではないからです。さらに多くのコード、より長い実行時間...

もっと良い解決法はありますか?

BTW。宛先マシンが接続を切断する場合に警告が表示されます。デバイスが過負荷状態になっている可能性があります。

[email protected]($socket, $negotiatedMaxLength); 

BTW。この解決策はini_set - サーバでブロックされていない場合と、error_reporting()がない場合に有効です。それを行うには明白な方法である代わりに@

+0

代わりに['file_get_contents()'](http://php.net/manual/en/function.file-get-contents.php)を使用できますか? – Tigger

+0

TCP/IP接続で動作しますか?すべての関数fgets、fputs、fsockopenは、他のものに置き換えることができますが...それはファイルではなくTCP/IPです。 – 18C

+0

多くのことについて、はい。 [あなたのコードを見ることなく](https://stackoverflow.com/help/how-to-ask)しかし、それは伝えることは不可能です。 – Tigger

答えて

1

一つの方法は、これはErrorExceptionクラスにあなたのパイプのエラーをすることができ、その後、あなたの代わりにエラーの例外を持ってset_error_handler

https://www.w3schools.com/php/func_error_set_error_handler.asp

を使用することです。これにより、エラーのためにtry/catchブロックを使用できます。

set_error_handler(function($severity, $message, $file = 'Unknown', $line = 'Unknown'){ 
    //typically I set a constant for PHP_ERRORS for the exception code. 
    if (error_reporting() != -1 && !(error_reporting() & $severity)) { 
     //we'll let this error go to the next error handler 
     return; //return null 
    }else{ 
      //convert the error into an exception 
     throw new ErrorExcption($message, 0, $severity, $file, $line); 
     //we don't have to return anything because the exception throwing kicks us out of the error handler. 
    } 
}); 

try{ 
    $answer=fgets($socket, $negotiatedMaxLength); 
}catch(ErrorException $e){ 

} 

&単一のアンパサンドは、重大度レベル-vs-エラー報告レベルをチェックするために意図的であることに注意してください、あなたはまたbitwise And

$file$lineはオプションでないので、我々は彼らのためにデフォルト値を設定します。

+0

日曜日か土曜日に試してみます。それが良いパフォーマンスで正常に動作する場合、私は+1と推測します。 BTW。新しい例外は必要ありません。無回答とは、エラーを意味し、処理されます。 – 18C

+0

私もtry ... catchを試しましたが、過去にはfputsでこの警告を受け取りませんでした。 – 18C

+0

警告ですが、エラーハンドラからErrorExceptionを呼び出すことで例外にすることができます。それは全体のポイントのようなものです。 – ArtisticPhoenix

関連する問題