Рубрики
Uncategorized

Выпущено официальное издание Swoole 4.4

Автор оригинала: 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/”