Автор оригинала: David Wong.
Нисходящие несовместимые изменения
- и
PHPОфициальные лица единодушны и больше не поддерживают.PHP7.0(@matyhtf) - удалите
СериализуйтеМодули, поддерживаемые в отдельных расширениях ext-сериализации. Причина устаревания: из-заPHPчастых изменений ядра, приводящих к невозможности создания стабильных используемых модулей, иphpсериализацииВ позиционировании нет большой разницы. - удалить
PostgreSQLМодуль, поддерживаемый в отдельном расширении ext-postgresql. Причина устаревания:PostgreSQLМетод асинхронного обратного вызова используется для реализации планирования ядер, что не соответствует текущему унифицированному планированию ядер. в дополнениеPostgreSQLВ настоящее время число пользователей очень невелико, а необходимые модульные тесты отсутствуют, поэтому качество не может быть гарантировано. Время выполнения::включить сопрограммуБольше не совместим автоматически с внутренней и внешней средой координатора, после открытия все операции блокировки должны быть вызваны в координаторе (@matyhtf)Путем введения нового протокола
MySQLОриентированный на клиента, базовый дизайн более стандартизирован, но есть некоторые незначительные несовместимые изменения в сторону понижениявыборка/следующий результатОптимизация для чтения по требованию приведет к планированию ввода-вывода- запуск
отложитьХарактеристики,заявлениеОтправленные запросы необходимо использоватьзаявление->recvПолучать - запуск
отложить/fetch_modeЕсли функция содержит неполные данные, инициировать новые запросы будет невозможно - В отличие от асинхронности,
подключеноАтрибуты больше не обновляются в режиме реального времени на основе событий, но вВвод-выводОбновление после сбоя операции
Предупреждение об оставлении
- Будет оставлен
БуферМодуль, Причина отказа: Высокая заменяемость, Низкий коэффициент использования, ДоступностьPHPСтрока,fopen("память")Вместо Этого. - Будут заброшены
БлокировкаМодуль, Причина отказа: Может возникнуть проблема с блокировкой в совместном режиме, который можно использовать.чанРеализация блокировки для версии совместного процесса - Из-за введения
поток_сокет_параКооператив. Рекомендуется, чтобы крючки были включены. Если существует отдельное требование к конфигурации, используйтеSWOOLE_HOOK_STREAM_FUNCTIONКонстанта, а не константаSWOOLE_HOOK_STREAM_SELECT
Новые характеристики
Недавно добавленная
БиблиотекаИспользуйте чистыйPHPНаписание функциональности ядра вместоC/C++Предусмотрены следующие функции- Новое высокое качество
PHPМодульныйСопрограмма\Группа ожидания(@те) - Используйте
PHPВ коде реализован крючок CURL. Одна клавиша делает CURL совместно программируемым. В настоящее время это экспериментальная функция и нуждается в специальном вызове.Время выполнения::включить сопрограмму(SWOOLE_HOOK_CURL) - Чтобы открыть (@matyhtf) (@Yurunsoft)
ИспользуйтеPHPреализацию кодаexec/shell_exec - Программирование ((@Yurunsoft)
открытьКрюк времени выполненияКогда функция будет замененаarray_walk,array_walk_рекурсивный Версия, реализованная для swoole
- Новое высокое качество
- , решает проблему нереентерабельных собственных функций, но это приведет к невозможности обхода объектов (@matyhtf) (@twose)
Добавление упреждающего планировщика для совместного процесса может предотвратить смерть других совместных процессов от голода из-за чрезмерной загрузки процессора совместным процессом.php.iniЧтобы настроитьswoole.enable_preemptive_scheduler - Открыть, см. раздел preemptive_scheduler (@shiguangqi)
Недавно добавленныйТаймер::список()ВозвратТаймер\ИтераторОн может проходить все времена.Таймер\ОчиститьОчистите все таймеры.Таймер\информация(int $id)Получите информацию о таймере. - Таймер::статистика()
Получить статус глобального таймера () (@those)Недавно добавленныйCo\СокетДва методаgetOptionи - Настройка
(9d13c29) (@matyhtf) (@matyhtf)Недавно добавленныйПроцесс\БассейнИз$master_pidАтрибута и - завершения работы
метода (a1d6eaa) (@matyhtf)Недавно добавленныйПроцесс\БассейнЧетвертый параметр метода построения, когда значение равно true, нижний слой автоматически будет находиться в открытом протоколе - при запуске рабочего
обратного вызова (8ceb32cd) (@matyhtf) (@matyhtf)Недавно добавленный - stream_socket_pair
Совместная поддержка () (@mythtv)Недавно добавленныйHttp\СерверИз - static_handler_locations
Настройки для установки статических путей к файлам (@matyhtf)Недавно добавленныйCo\Http\Клиент->setBasciAuthМетод автоматической передачи - Авторизация
Заголовок () (@hongshi)Недавно добавлено - Co\Http2\Клиент->Метод ping
(40041f6) (@shiguangqi)Недавно добавленныйhook_flagsЭлемент конфигурации, используемый для замены
Повышать
Совершенно новое сотрудничество
MySQLКомплексное сотрудничество на нижнем уровне, ориентированное на клиента () (@twose)- Нижнее использование
C++Модели программирования для параллельных программ (синхронная блокирующая запись, асинхронная производительность) - Поддержка SSL-соединения (настройка времени подключения)
['ssl' => истина]Сертификат и другие конфигурации в настоящее время не поддерживаются. - Поддерживает передачу больших объемов данных (без верхней границы, автоматическая упаковка снизу, верхняя граница для конфигурации сервера MySQL верхняя граница)
- Поддержка Приема Сверхбольших Данных
- Поддержка
выборкаЧитать по строкам (сейчас)выборкаДля чтения по требованию данные без выборки не потребляют пользовательскую память (#2106) - Поддержка
следующий результатЧтение по требованию (там же) - Клиент
закрытьПосле этого клиент хранитвыпискиАвтоматически переключитесь в состояние недоступно, чтобы избежать проблем с границами - Оптимизируйте некоторые ненужные копии памяти (анализ протокола)
датаПоддержка десятичной точности для связанных типов- Коды ошибок и информация с
PDO/mysqlПривести в соответствие с
- Нижнее использование
Co\RedisРежим совместимости, через$redis->установить(['compatibility_mode' => true])Открыть, сделатьhmGet/hGetAll/zRange/zRevRange/zRangeByScore/zRevRangeByScoreМетод для возврата результата иphpredisСохраняйте последовательность (#2529) (@caohao-php)- Разрешение по умолчанию равно
100KОдновременное существование двух совместных процессов (c69d320b) (@два) - Поддержка
спасательныеМеханизмы (правильно завершите процесс, когда в процессе произойдет фатальная ошибка) () (@those) СерверБудьте дружелюбны, когда возникают ошибки.400/404/503Интерфейс вместо отсутствия вывода (@matyhtf) (f3f2be9d)СерверПо умолчанию включена функция асинхронного перезапуска системы безопасности и функция автоматического планирования совместной маршрутизации для отправки негабаритных данных (55) (9d4a4c47) (@matyhtf).СерверИзonFinishПоддержка обратного вызова для автоматической среды совместной работы (@twose)HttpКлиент открывается по умолчаниюwebsocket_маскБольше не будет никаких тайн.веб-сайтВопрос (c02f4f85) (@два)- Больше не разрешается использовать вне протокола
КаналОперация планирования (519b6043) (@два) WebSocketОтключите соединение () (@twose), если не удается выполнить рукопожатие- останься
LinuxКогда нижний родитель аварийно завершает работу, базовый процесс автоматически посылает сигнал для уничтожения дочернего процесса (4b833a3d) (@matyhtf) - Когда
Сокет->recvУтилизация памяти с истекшим сроком службы, когда объем данных недостаточен (642a3552) (@два) - Оптимизация ошибок с плавающей запятой () (@tangl163)
- Все встроенные классы запрещают клонирование/сериализацию/удаление базовых определенных свойств (f9c974b8) (@два)
Сервер->привязатьостатьсяuidПревыситьUINT32_MAXГенерируется и возвращается предупреждение.- совместимость
PHP7.4(#2506) (@вдвоем)
ремонт
- ремонт
Процесс\БассейнИзgetProcessВопрос () (@matyhtf) - Исправлена проблема, из-за которой исключения игнорировались в некоторых особых случаях (@those)
- Таймер ремонта в процессе
вилкаВ результате произошла утечка памяти (8f3abee7) (@два) - Исправлена проблема с временным поясом компиляции для систем, отличных от Linux () (@devnexen)
- ремонт
enable_coroutineиtask_enable_coroutineОткрытые и закрытые вопросы () (@matyhtf) - Метод трейлера для исправления Http 2 не выводит пустой заголовок () (@those)
- ремонт
Co\Http\Клиент->setCookiesОшибки памяти в особых случаях ((@Yurunsoft) - Исправление #2639 () (@mabu233)
- восстановить
arginfo_swoole_process_pool_getПроцесс(#2658) (@mabu233) - ремонт
static_handlerМягкие ссылки (@matyhtf) не поддерживаются - ремонт
OSXСмерть карты (22504dd4) (@matyhtf) - Восстановление включено
SSLпослезадачиИспользования процессаСервер->getClientInfoОшибка () (@matyhtf) - Устраните ошибку незаконной работы (# 61) (@два) одного и того же сокета с помощью многопроцессорной операции
Совместный Планировщик?
- Недавно добавленный
Swoole\Сопрограмма\ПланировщикКласс планировщика какcliЗапись сценария командной строки, вместоgo() + Swoole\Событие::подождите()Путь - увеличение
Swool \ Сопрограмма\ВыполнитьФункцию, которая обеспечивает паруSwool\Сопрограмма\ПланировщикИнкапсуляции go() + Свул\Событие::ожидание()Режим работы могут быть отменены
ядро
- Непрерывная оптимизация качества кода нижнего уровня (@swoole)
- Больше модульного тестирования и использование библиотеки утверждений swoole/assert (@those) на основе второй разработки webmozart/assert
- Обнаружение сбоя приложения завершенной памяти (b19bebac) (5a1ddad3) (@matyhtf)
- Полностью отменить
WindowsПлан поддержки - Разделите некоторые функции консорциума на
СистемуилиПланировщикМодуль, отменить модуль util Co\Http2\КлиентСотрудничество на нижнем уровне (f64874c3) (@matyhtf)- Базовый уровень полностью кэширует информацию о функциях, зарегистрированную разработчиком, и обратные вызовы выполняются быстрее (@twose)
Экспериментальное содержание
- Может быть
5.0Недавно добавленныйCo\СервериCo\Http\Сервер Крючок для завивки(Пока не поддерживаетсяcurl_multi)
Оригинал: “https://developpaper.com/swoole-4-4-official-edition-has-been-released/”