PHP curl_multi_strerror 函数
最后修改日期:2025 年 4 月 11 日
PHP curl_multi_strerror
函数返回 cURL multi handle 错误代码的字符串描述。它是 PHP cURL multi 接口的一部分,该接口同时处理多个 cURL 传输。
基本定义
curl_multi_strerror
函数为 cURL multi handle 错误代码提供人类可读的错误消息。它接受一个错误代码作为输入并返回相应的错误字符串。
语法:curl_multi_strerror(int $error_code): ?string
。如果错误代码无效,则函数返回 NULL。它自 PHP 7.3.0 起可用。
基本错误消息查找
此示例演示了如何获取已知 cURL multi 错误代码的错误消息。
<?php declare(strict_types=1); $errorCode = CURLM_OK; $errorMessage = curl_multi_strerror($errorCode); echo "Error code {$errorCode}: {$errorMessage}";
此代码查找 CURLM_OK (0) 的消息,表示没有错误。该函数为此代码返回“No error”。在向用户显示消息之前,请务必检查错误代码。
处理 Multi cURL 错误
此示例展示了如何在实际的 multi cURL 场景中使用 curl_multi_strerror。
<?php declare(strict_types=1); $mh = curl_multi_init(); $ch1 = curl_init("https://example.com"); $ch2 = curl_init("https://nonexistent.domain"); curl_multi_add_handle($mh, $ch1); curl_multi_add_handle($mh, $ch2); do { $status = curl_multi_exec($mh, $active); if ($status !== CURLM_OK) { echo "cURL multi error: " . curl_multi_strerror($status); break; } curl_multi_select($mh); } while ($active); curl_multi_remove_handle($mh, $ch1); curl_multi_remove_handle($mh, $ch2); curl_multi_close($mh);
我们使用两个 cURL 请求创建一个 multi handle。其中一个 URL 无效,这可能会导致错误。会检查 curl_multi_exec 状态,并在需要时显示错误消息。最后会执行适当的清理。
无效错误代码处理
此示例演示了函数如何处理无效错误代码。
<?php declare(strict_types=1); $invalidCode = 9999; $errorMessage = curl_multi_strerror($invalidCode); if ($errorMessage === null) { echo "Invalid cURL multi error code: {$invalidCode}"; } else { echo "Error message: {$errorMessage}"; }
当提供无效错误代码时,函数返回 NULL。这有助于区分有效错误消息和未知错误代码。在处理动态错误代码时,请务必检查 NULL。
列出所有已知错误代码
此示例显示了如何显示所有已知的 cURL multi 错误消息。
<?php declare(strict_types=1); $errorCodes = [ CURLM_OK, CURLM_BAD_HANDLE, CURLM_BAD_EASY_HANDLE, CURLM_OUT_OF_MEMORY, CURLM_INTERNAL_ERROR, CURLM_BAD_SOCKET, CURLM_UNKNOWN_OPTION, CURLM_ADDED_ALREADY ]; foreach ($errorCodes as $code) { echo "Code {$code}: " . curl_multi_strerror($code) . "\n"; }
我们定义了一个包含已知 cURL multi 错误常量的数组并遍历它们。对于每个代码,我们显示相应的错误消息。这对于调试或创建文档很有用。
自定义错误处理包装器
此示例创建了一个自定义函数,用于增强 curl_multi_strerror。
<?php declare(strict_types=1); function getMultiCurlError(int $code): string { $message = curl_multi_strerror($code); if ($message === null) { return "Unknown cURL multi error (code: {$code})"; } return "cURL multi error {$code}: {$message}"; } // Example usage: $errorCode = CURLM_OUT_OF_MEMORY; echo getMultiCurlError($errorCode);
我们创建了一个提供更详细错误信息的包装函数。它能够优雅地处理未知错误代码,并以一致的方式格式化输出。此方法将错误消息处理集中在您的应用程序中。
最佳实践
- 错误检查:始终检查 curl_multi_exec 的返回值。
- 消息验证:验证 curl_multi_strerror 不返回 NULL。
- 日志记录:记录错误代码和消息以进行调试。
- 常量:使用 cURL 常量而不是硬编码值。
- 清理:使用后正确关闭 multi handle。
来源
本教程涵盖了 PHP curl_multi_strerror
函数,并通过实际示例展示了其在各种错误处理场景中的用法。