php - 如何获取函数 stream_get_line 和 fgets 的错误?

标签 php sockets error-handling fgets

我有一段代码可以打开套接字连接。不时发生fgets返回假。我想知道为什么会这样。是否有函数可以提供有关 $handle 上最后一个错误的更多详细信息?类似于 preg_last_errorjson_last_error、...

同样的问题可以应用于函数 stream_get_line() .

我使用的是 PHP 5.4,E_ALL 在 error_reporting 中(即它甚至包括 E_NOTICE)。没有抛出任何错误。

最佳答案

注意这是未经测试的代码。我还没有安装 PHP 来试用它。

您应该能够使用您在设置连接时创建的上下文来执行此操作。

$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 现在应该在发生错误时调用错误处理程序。

很抱歉,我现在无法测试...

关于php - 如何获取函数 stream_get_line 和 fgets 的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19741117/

相关文章:

php - 配置相同,但有一个带来 : Error SQLSTATE[23000] column cannot be null

PYTHON-如何解决问题 : pywintypes. 错误 : (5, 'OpenClipboard' , 'Access is denied' )

python - 在 Windows 中关闭 Python 中的主程序时,通过子进程传递参数并终止子进程

php - 如何保护网站的 Paypal 集成

javascript - 使用ajax检查复选框时更新查询

php - 在 Zend Framework 中转义字段名称中的点

c++ - Recv方法使用

linux - 在c++ linux中的socket编程中创建许多通信实例

c - 关闭套接字的问题。程序暂停

JavaScript 如何将字符串转换为函数