Минимально поддерживаемая версия PHP повышена до 5.5
Добавлена поддержка параллельных запросов с использованием cURL handler
В классе HttpRequest добавлен метод и свойство method для установки по умолчанию метода запроса
Добавлена поддержка автоматического добавления расширения имени файла при скачивании.
use Yurun\Util\HttpRequest;
$url = 'http://www.baidu.com';
$http = new HttpRequest();
$http->download(__DIR__ . '/save.*', $url); // Если имя файла задано как save.*, то .* будет означать автоматическое определение расширения
WebSocket Client предназначен только для использования в окружении Swoole корутин.
YurunHttp::setDefaultHandler(\Yurun\Util\YurunHttp\Handler\Swoole::class);
go(function(){
$url = 'ws://127.0.0.1:1234/';
$http = new HttpRequest;
$client = $http->websocket($url);
if (!$client->isConnected()) {
throw new \RuntimeException('Подключение не установлено');
}
$client->send('data');
$recv = $client->recv();
var_dump('получено:', $recv);
$client->close();
});
При использовании нового соединения в обработчике Swoole закрывается старое соединение
По умолчанию обработчик Swoole поддерживает долгоживущие соединения
Время ожидания по умолчанию установлено в 30 секунд
Исправление проблемы с загрузкой файлов в процессор Swoole
Исправление недействия указанного типа медиа при загрузке файла
Добавлены тестовые примеры для загрузки файлов
Улучшена совместимость с низкими версиями PHP
контексте "Swoole" — это расширение для PHP, которое позволяет создавать высокопроизводительные асинхронные серверы. Если вы столкнулись с какими-либо проблемами при использовании PHP 7.3 вместе с Swoole 4.3.5, рекомендуется проверить следующие моменты: 1. Убедитесь, что версия Swoole совместима с вашей версией PHP. 2. Проверьте конфигурацию вашего проекта, чтобы убедиться, что все необходимые зависимости установлены правильно. 3. Обратите внимание на сообщения об ошибках, которые могут помочь вам понять, какие именно проблемы возникают. Для получения более конкретной помощи, пожалуйста, предоставьте больше информации о том, какие именно ошибки вы видите или какие проблемы вы испытываете.
(Примечание: Исходный текст был на китайском, поэтому язык исходного текста — китайский.)
HttpRequest->getHandler()
httpOnly
в классе CookieItem
Добавлено:
Добавлена CookieManager для управления сессиями в одном экземпляре HttpRequest. Теперь автоматически управляются cookies для одного экземпляра HttpRequest.
Добавлены тестовые примеры (PHP 5.4 — PHP 7.3) и демонстрационные коды.
Оптимизировано:
Изменение метода запроса на GET теперь происходит только при получении статус-кодов 301, 302 или 303.
Оптимизация класса StatusCode.
При условии, что адрес для переадресации в Swoole имеет одинаковый хост, порт и схему с предыдущим адресом, используется повторно созданный клиент ($client).
При повторной отправке запроса одним и тем же объектом HttpRequest, curl-ресурс больше не инициализируется заново.
Метод Uri->getPort() больше не возвращает по умолчанию порт протокола. Введён новый метод Uri::getServerPort() для получения порта, поддерживающего значение по умолчанию.
Метод Uri::getDomain() преобразован в статический метод.
Улучшены методы close() и destruct().
По умолчанию для CURLOPT_COOKIEJAR установлено значение php://memory, чтобы cookie не записывались в файл.
Исправлено:
Исправление проблемы с незаданным обработчиком Swoole
Исправлено отсутствие эффекта при установке тайм-аута
Исправлена проблема некорректной переадресации при использовании пустого доменного имени в режиме Swoole
Удалено ручное вызов gethostbyname()
Оптимизация обработки ошибок при получении данных в Swoole
Улучшение правописания текстовых сообщений об ошибках
Замена табуляции на выравнивание с помощью четырёх пробелов
Устранение проблем с AbstractMessage
Оптимизация ситуации с отсутствием констант при отсутствии установленной библиотеки curl в окружении с использованием Swoole
Решение проблем совместимости версий с psr/http-message
Удалены классы для продолженного после прерывания скачивания, так как это мало востребовано.
При отправке файлов больше не используется класс HttpRequestMultipartBody
.
Статические свойства класса HttpRequest
, такие как $customLocation
и $tempDir
, были удалены. Вместо этого следует использовать метод YurunHttp::setAttribute('customLocation', true);
.
Класс HttpResponse
был удалён. Теперь объект ответа Response
является экземпляром класса Yurun\Util\YurunHttp\Http\Response
. Этот класс совместим со стандартом PSR-7 и старыми методами, но теперь недоступны операции над публичными свойствами.
Общие изменения заключаются в том, что хотя внутренняя реализация библиотеки значительно изменилась и появились новые способы использования, старый способ всё ещё поддерживается.
Использование cURL по-прежнему поддерживает PHP >= 5.4
, однако если вы используете Swoole корутин HTTP клиент, рекомендуется использовать PHP 7.1 + Swoole 4.0
.
Удалены классы для продолженного после прерывания скачивания, так как это мало востребовано.
При отправке файлов больше не используется класс HttpRequestMultipartBody
.
Статические свойства класса HttpRequest
, такие как $customLocation
и $tempDir
, были удалены. Вместо этого следует использовать метод YurunHttp::setAttribute('customLocation', true);
.
Класс HttpResponse
был удалён. Теперь объект ответа Response
является экземпляром класса Yurun\Util\YurunHttp\Http\Response
. Этот класс совместим со стандартом PSR-7 и старыми методами, но теперь недоступны операции над публичными свойствами.
Общие изменения заключаются в том, что хотя внутренняя реализация библиотеки значительно изменилась и появились новые способы использования, старый способ всё ещё поддерживается.
Использование cURL по-прежнему поддерживает PHP >= 5.4
, однако если вы используете Swoole корутин HTTP клиент, рекомендуется использовать PHP 7.1 + Swoole 4.0
.
Этот выпуск имеет те же функции, что и версия v1.3.17, с единственным отличием — исправлением неправильно указанного пространства имен.
Пространство имен версий 1.x выглядит следующим образом: Yurun\Until\xxx
.
Пространство имен версий 2.x выглядит следующим образом: Yurun\Util\xxx
.
С этого момента версии v1.x будут содержать только исправление ошибок и другие работы по поддержанию, а все новые функции будут добавлены в версии v2.x.
Добавлена поддержка прямого ввода содержимого файла при загрузке, без необходимости его наличия на сервере.