The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Началось альфа-тестирование PHP 8.1, opennews (ok), 13-Июн-21, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


24. "Началось альфа-тестирование PHP 8.1"  +/
Сообщение от Онаним (?), 13-Июн-21, 12:53 
(честно говоря задолбался писать обёртки вокруг разных селектов сокетов и прочих ожиданий состояния)
Ответить | Правка | Наверх | Cообщить модератору

60. "Началось альфа-тестирование PHP 8.1"  +1 +/
Сообщение от Аноним (60), 13-Июн-21, 21:29 
Я не пхп-шник, но всякие селекты и прочие функции которые ожидают события в ядре как минимум нужно адаптировать под файберы, так как это по факту кооперативная многозадачность и селект в одном файбере положит все синхронное ядро пхп в спячку. Поправьте, если не так
Ответить | Правка | Наверх | Cообщить модератору

61. "Началось альфа-тестирование PHP 8.1"  +/
Сообщение от Онаним (?), 13-Июн-21, 22:11 
Всё так. Речь исключительно про либо неблокирующие вызовы, либо очень малый таймаут.
Т.е. исключительно для проверки состояния.

Сейчас приходится всё это серьёзно обёртывать по сути карманной реализацией тех самых файберов, что имеет достаточно негативный эффект в плане потребления ресурсов проца, ну и за контекстом, который определяет точку "перевхода", в виде конечного автомата внутри - следить самостоятельно, что имеет те же последствия. Здесь же наконец-то можно будет избавиться от фиговой тучи бранчинга, заменив на линейный код с suspend-resume.

Ответить | Правка | Наверх | Cообщить модератору

64. "Началось альфа-тестирование PHP 8.1"  +/
Сообщение от Онаним (?), 13-Июн-21, 22:29 
По сути fread()/fwrite() на стримах вполне себе может быть неблокирующий, включая сокеты.
socket_select()'у можно скормить 0 в таймаут, и он становится неблокирующим.
У MySQL есть асинхронное API, которое как раз хорошо на файберы ложится.
У CURL есть асинхронное API, которое как раз хорошо на файберы ложится.
В ZeroMQ и много ещё где тоже есть возможность делать неблокирующие вызовы.

Короче, пользы очень много. С тем же ZeroMQ например - там типовой случай, когда полон буфер на запись, и надо бы подождать. Без файберов поддержание очереди REQ/REP-based протокола например со своевременной отменой / пропагацией фейла - это сущий ад, на файберы оно ляжет просто прекрасно - можно убить сфейлившийся файбер и создать новый, который попытается заново согласовать внутренний протокол.

Ответить | Правка | К родителю #60 | Наверх | Cообщить модератору

68. "Началось альфа-тестирование PHP 8.1"  +/
Сообщение от Аноним (69), 13-Июн-21, 23:13 
Вот только помимо самих файберов нужна реализация асинхронного апи в PDO, ext/curl и всем прочем.

Иначе все это закончится написанием асинхронных обвязок к libmysql и прочим libcurl на FFI, что, конечно, интересное упражнение, но ну его.

Ответить | Правка | Наверх | Cообщить модератору

71. "Началось альфа-тестирование PHP 8.1"  +/
Сообщение от Онаним (?), 13-Июн-21, 23:55 
Ну, указанные уже есть.
Судя по тому, что они отдельно parallel с файберами тестировали уже - мы ещё и треды со временем увидим :D
Ответить | Правка | Наверх | Cообщить модератору

93. "Началось альфа-тестирование PHP 8.1"  +/
Сообщение от Gemorroj (ok), 14-Июн-21, 13:27 
так закопали треды же вроде https://github.com/krakjoe/pthreads
Ответить | Правка | Наверх | Cообщить модератору

94. "Началось альфа-тестирование PHP 8.1"  +/
Сообщение от Онаним (?), 14-Июн-21, 13:31 
Совместимость с parallel тем не менее уже тестировали.
Собственно от parallel + файберов до тредов не так далеко.
Ответить | Правка | Наверх | Cообщить модератору

65. "Началось альфа-тестирование PHP 8.1"  +/
Сообщение от Онаним (?), 13-Июн-21, 22:31 
Ещё даже без I/O - всякие шедулеры событий офигенно ложатся на файберы. Можно одновременно внутри кода стартовать несколько длинных событий, и забить на них, пока они не выполнятся. Параллельно что-то откуда-то почитывая (таймер например), и стартуя ещё по необходимости.
Ответить | Правка | К родителю #60 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру