imap ライブラリを使用していくつかのメールを取得しようとする機能があります。接続できない場合は、関数が他に何もせずに戻るようにしたいと思います。
$imap = imap_open($mailboxPath, $username, $password);
if (!$imap)
return 0;
これは機能しますが、タイムアウトにより接続試行が失敗したという PHP 警告メッセージが表示されます。この警告が表示されないようにすることはできますか?
set_error_handler()関数を使用して、さまざまな種類の PHP エラーを処理する独自の関数を定義できます。警告の処理方法を変更したい場合、コードは次のようになります。
set_error_handler("warning_handler", E_WARNING);
$imap = imap_open($mailboxPath, $username, $password);
if (!$imap)
return 0;
function warning_handler($errno, $errstr) {
// don't display the message, maybe write it to log file
}
警告を非表示にするだけの場合は、空の無名関数を set_error_handler() に渡すことができます。
set_error_handler("warning_handler", function() {});
ただし、この場合、スクリプトで発生する可能性のある警告の痕跡が失われます。
PHP で警告を明示的に抑制するには、呼び出している関数の前に@
. ただし、これをできるだけ少なくするようにしてください。