4

ソケット接続を開くコードがあります。fgetsが false を返すことがあります。なぜそれが起こるのかを知りたいです。の最後のエラーに関する詳細を提供する関数はあります$handleか? preg_last_error、、 …のようなものjson_last_error</p>

関数stream_get_line()にも同じ質問を適用できます。

私は PHP 5.4 を使用してE_ALLおり、error_reporting に入っています (つまり、 even が含まれていますE_NOTICE)。エラーはスローされませんでした。

4

2 に答える 2

1

注:これはテストされていないコードです。PHP を試してみるためのインストールがありません。

これは、接続をセットアップするときに作成するcontextsで実行できるはずです。

$context = stream_context_create();
stream_context_set_params(
    $context, 
    array(
        'notification' => function(
            $notification_code,
            $severity,
            $message,
            $message_code
        ) {
            switch ($notification_code) {
            case: STREAM_NOTIFY_FAILURE
                print_r(array(
                    'message' => $message,
                    'message_code' => $message_code,
                ));
                break;
            }
        },
    )
);

$socket = stream_socket_client ($remote_socket, &$errno, &$errstr, ini_get("default_socket_timeout"), STREAM_CLIENT_CONNECT, $context);

fgetsエラーが発生するたびにエラーハンドラを呼び出す必要があります。

申し訳ありませんが、現時点ではこれをテストできません...

于 2013-11-02T11:30:23.997 に答える