Конечно, «проверенный, сертифицированный» бит хорош в некоторых средах. В нашем случае требования аудита заключаются в том, что мы либо используем сертифицированный стек программного обеспечения, либо сами по себе, но должны показать, что мы делаем быстрые обновления для каждого небольшого компонента, который его загружает. Итак, для разумных целей мы исторически пошли со стандартными предложениями дистрибутивов Linux. Проблема заключается в том, что они, как правило, много лет отстают от кривой. Например, большинство дистрибутивов только недавно приняли PHP 5.3 после того, как застряли в 5.1 (!). Это просто неприемлемо, когда вы пытаетесь разработать современные приложения, которые используют современные методы кодирования, плюс вы отказываетесь от тонны с точки зрения производительности и надежности PHP.
Сказав это, функции довольно приятные. @Keven уже упомянул очередь на работу. Это потрясающе для нас, поскольку мы можем очень легко разгружать всевозможные задачи, которые выполняются асинхронно и поддерживают процесс основного запроса. Например, одно из наших приложений создает задачи в нашем трекере ошибок, когда происходят определенные типы событий. Так как это делается с помощью веб-службы, а трекер ошибок ужасно медленный, это может занять несколько секунд. Однако, вместо того, чтобы заставить пользователей нашего приложения ждать, мы просто ставим в очередь работу и позволяем ей работать в фоновом режиме. Аналогично, наш стандартный класс электронной почты использует очередь заданий, вместо того, чтобы ждать пользователя, пока наш код разговаривает с SMTP-сервером. И все это даже не касается полезности для таких вещей, как создание больших отчетов, проверка целостности базы данных, восстановление кэшей и т. Д. И т. Д.
Кэш страниц отлично подходит для тех случаев, когда вы можете просто кэшировать всю страницу и быть с этим. Мы используем это с нашими WSDL, так как у нас есть лучший контроль, чем собственные кеширующие элементы управления PHP. Аналогично, сервер загрузки отлично подходит для кэширования определенных типов контента, например изображений. И мы используем кеш данных как локальный сервер memcached, чтобы значительно ускорить все виды запросов, избегая делать запрос на медленный сервер базы данных, сидящий где-то еще в медленной сети.
И, конечно, как отмечает Андре, в нем есть очень хорошие функции для отладки, отслеживания и создания событий.
Есть также некоторые интересные функции для развертывания и отката, которые очень важны для критически важных для бизнеса приложений. Я собираюсь попробовать их когда-нибудь, но пока я все еще использую инструменты, которые я собрал перед использованием ZS.
Теперь вы можете получить большинство этих функций (в частности, все кеширующие биты), объединив множество других инструментов. Но тогда вам нужно исследовать и изучать все эти вещи, устанавливать их все вместе и работать вместе, а затем поддерживать их все, в том числе проводить надлежащее тестирование интеграции, когда что-то обновляется. Это лот работы и времени - я лично предпочитаю писать код.
Сказав это, есть недостатки. Во-первых, вещи иногда чувствуют ... полузапеченные и/или плохо продуманные. Например, API кэша данных возвращает boolean false, если вы пытаетесь извлечь элемент, который не существует. И он не имеет функции для проверки того, существует ли элемент без выбора. Угадайте, что это значит: вы не можете безопасно хранить логическое значение, потому что вы не можете безопасно его получить. Он включает плохо документированный уровень совместимости APC, но попытка использовать функцию существования из APC создает ошибку неопределенной функции.
В качестве другого примера мы используем Mac для наших станций разработки, но из-за очень ошибочной озабоченности по поводу совместимости с древним оборудованием, которое, как правило, управляют все эти профессиональные разработчики, которые бросают тысячи на серверное программное обеспечение PHP, Zend выбрал отправку версии Mac (только для разработки) только как 32-разрядный только. Поэтому мы вынуждены разрабатывать приложение в 32-битном режиме, которое выполняется везде в 64-битном режиме. Это вызвало немало ошибок и неудачных автоматических тестов в нашем приложении, что, скорее, убивает одну из основных целей ZS, которая является идентичным программным стеком в разработке, тестировании, промежуточном тестировании, QA и производственных средах. Я пытался поговорить с ними об этом, но они быстро начали игнорировать меня.
Еще одна большая проблема заключается в том, что очередь заданий может обрабатывать задания только через HTTP-запросы. API настроен так, чтобы разрешить другие методы (например, гораздо более разумный вызов командной строки), но HTTP-это все, что работает. Это заставляет вас связывать соединения веб-сервера с задачами, которые по дизайну, как правило, длительные и, следовательно, должны быть удалены из веб-контекста. И это заставляет вас прыгать через обручи, чтобы мир не мог запускать ваши задания, посетив URL-адрес в браузере. Это просто глупое решение.
Другими примерами являются плохое управление настраиваемыми событиями, отправленными через API в Zend Monitor, флэш-библиотеку php-cli для двоичного кода PHP, которая прерывается на Mac при запуске по линии shebang, полная (полная) нехватка здоровья и производительности отчетность в инструментах кеша (хотя они сказали, что это меняется в ZS 6) и неловко неполной документации. Я мог бы продолжить ...
Теперь эти недостатки, а также потраченное впустую время и ресурсы, которые приходят на поездку, очевидно, не перевешивают выгоды для нас, а за сумму денег, которую мы тратим , Я определенно ожидаю большего.