Pull to refresh
5
0
Send message
Эта статья помогла мне решить одну из проблем. Спасибо.
В модифицированном виде использую как задачу. Возвращаясь к многозадачности на PHP
Правда выяснилась неприятная неожиданность — обычно из-за настроек сервера нельзя качать более 1000 файлов одновременно.
К вопросу о реализации на PHP — заказчиком был я сам. Для себя.
Я решил что мне нужен простой и удобный механизм для описания задач, их запуска и контроля.
И я его реализовал. Хотя первые версии были очень неудобные для практического применения.
Примерно как в примере. Когда появилась довольно удобная версия я стал её использовать.
Но это статья о самом принципе. Какой смысл обсуждать личные свойства заказчиков?
У любого решения есть свои плюсы и минусы.
Про время скрипта это понятно, а причем тут потребляемая память? Ведь это один скрипт, а создание новой задачи это просто добавление элемента в массив.
В задаче для которой это было придумано заказчик уже закупил железо по смешным ценам. Только оно было настолько тормозное что обрабатывать события стандартными средствами не успевало.
Но, вообще, это не имеет отношения к сути вопроса.
>глобалы, процедурный стиль и лисапеды — дорога в ад
Точно. Но это же просто демонстрация механизма, а вовсе не готовое решение.
Это вовсе не беда что это не настоящая многозадачность. Это простой и удобный способ обойти некоторые ограничения существующие в языке. Это просто механизм, который может быть очень полезен для решения определенных задач. Вот и все. У кого есть такие задачи могут им воспользоваться. Или воспользоваться любым другим удобным им методом.
Это верно. По сути это и есть цикл обработки событий. А в качестве обработчика и выступает та или иная задача. Только это ведь не настоящая асинхронная обработка событий.
Это просто быстрая обработка событий. Очень быстрая для PHP.
Если 10мс кажется много по требованиям задачи, то можно и убрать эту задержку, тогда цикл будет от силы сотни микросекунд (при разумном количестве задач). Только процессор будет сильно загружен.
В том что множество задач выполняются одновременно.
Может быть. Но у нее есть одно очень существенное ограничение. Это расширение. И его нужно установить. А это не всегда возможно. Т.е. это решение для частного случая когда такая возможность есть. А что делать когда такой возможности нет?
Есть такая штука — требования заказчика. И вот иногда они не совпадают с представлениями исполнителя о том насколько предоставленные ресурсы предназначены или не предназначены.
Вообще само это решение было придумано лет 10 назад для одного из проектов на С.
И все там было предназначено. Кроме железа которое не успевало выполнить задачу в требуемые сроки с использованием предназначенных механизмов.
И что бы решить ту задачу и был придуман такой механизм.

Information

Rating
Does not participate
Location
Россия
Registered
Activity