PHP 8.4.1 Released!

socket_clear_error

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

socket_clear_errorソケットのエラーまたは直近のエラーコードをクリアする

説明

socket_clear_error(?Socket $socket = null): void

この関数は、指定したソケットまたは直近のグローバルなソケットエラー のエラーコードをクリアします。

この関数により、 ソケットまたは直近のグローバルな拡張エラーコードとなる エラーコードの値を明示的にリセットすることが可能になります。 これは、エラーが発生したかどうかをアプリケーション内で検出する際に有用です。

パラメータ

socket

socket_create() で作成した Socket クラスのインスタンス。

戻り値

値を返しません。

変更履歴

バージョン 説明
8.0.0 socket は、Socket クラスのインスタンスになりました。 これより前のバージョンでは、リソース型でした。
8.0.0 socket は、nullable になりました。

参考

add a note

User Contributed Notes 2 notes

up
0
raphael at engenhosweb dot com dot br
13 years ago
You can do this too, with anonymous function:
<?php
$socket
= @socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or function() {
$errstr = socket_strerror(socket_last_error());
echo (
"Failed to create socket: " . $errstr);
socket_clear_error();
};
?>
up
0
ludvig dot ericson at gmail dot com
18 years ago
If you want to clear your error in a small amount of code, do a similar hack as to what most people do in SQL query checking,
<?php
$result
= mysql_query($sql) or die(/* Whatever code */);
?>

It could look like this:
<?php
if (!($socket = socket_create(/* Whatever code */)) {
echo (
"Failed to create socket: " . socket_strerror(socket_last_error()) and socket_clear_error());
}
?>

As you can see, I use "and" here instead of "or" since the first part will always return true, thus if you use or PHP's lazy boolean checking will not execute the last part, which it will with an and if the first part is true.
To Top