Опыт Zend Server - PullRequest
       8

Опыт Zend Server

9 голосов
/ 20 августа 2009

На днях я смотрел на Zend Server , и мне было интересно, зачем мне это использовать? Хорошо, они говорят, что все это проверено и критически важно, и Enterprise готово и т. Д. Но для меня это только разговор отдела маркетинга.

Кто-нибудь использует этот продукт, и если да, можете ли вы поделиться с ним своим опытом, и, возможно, вы могли бы также уточнить причину, по которой вы выбрали этот продукт для своих приложений.

Нашли ли вы какие-либо реальные преимущества использования Zend-сервера?

Ответы [ 6 ]

6 голосов
/ 21 августа 2009

Я использую Zend Platform (я знаю, что вы спрашивали о Zend Server, я уже там) и очень заинтересован в инструменте сообщения об ошибках, который вы также получаете с Zend Server.

Всякий раз, когда возникает ошибка или генерируется исключение, Zend Server хранит как можно больше информации о ней (например, какие параметры запроса использовались, где произошла ошибка, время, сообщение об ошибке, трассировка стека и т. Д.) , Также сообщается о медленном выполнении скрипта.

Я действительно предпочитаю получать подобные сообщения об ошибках клиентам, которые говорят что-то вроде: «Сайт не работает. Пожалуйста, исправьте это».

При использовании Zend Server в сочетании с Zend Studio довольно приятно, что Zend Debugger поставляется уже предустановленным (но вы могли бы установить его и сами).

Также он поставляется с php-java-bridge (ваши java-классы могут использоваться в PHP), но мне это не нужно.

Если у вас уже есть решение для создания отчетов об ошибках на основе php в вашем веб-приложении или вы не используете ни его, ни java-мост, я бы сказал, что это не имеет большого значения, если вы используете Zend Server. через вашу собственную установку apache (если вы знаете, как правильно ее настроить).

По крайней мере, это мое мнение / опыт.

Я использую бесплатную версию Zend Platform для разработчиков. Если бы мне пришлось платить за Zend Platform / Server, я не думаю, что буду использовать его. Но это действительно зависит от проекта.

4 голосов
/ 05 апреля 2010

Zend Server - это намного больше, чем наличие протестированного и поддерживаемого стека. Андре коснулся одной из функций Zend Server - мониторинга. Мониторинг следит за выполнением вашего PHP-скрипта для определенных условий, и если будет пройден определенный порог, контекст этого запроса будет записан для изучения в более поздний момент времени. Когда я работаю на месте с клиентами, у которых возникают проблемы с приложениями, первым делом я устанавливаю Zend Server и включаю мониторинг. В течение нескольких минут у меня обычно есть, по крайней мере, довольно хорошая теория относительно их проблемы.

В Zend Server 5 этот показатель значительно вырос благодаря введению функции отслеживания кода, которая позволяет выполнять инструментарий во время выполнения практически каждого вызова функции / метода, выполняемого в ходе запроса. Это своего рода комбинация отладки и профилирования, которая выполняется во время выполнения. Во многих случаях можно диагностировать проблему в производственной среде без фактической репликации проблемы.

Есть несколько других функций, которые вы также можете использовать. Для меня важна очередь на работу, которой я пользуюсь довольно широко. У меня есть пример того, как использовать его на Вы в очереди? Введение в очередь заданий Zend Server

Существуют также две различные функции кэширования: мост PHP-Java (на который ссылался Андре) и Optimizer +, который является одним из самых быстрых доступных ускорителей кода операции.

3 голосов
/ 07 июля 2012

Конечно, «проверенный, сертифицированный» бит хорош в некоторых средах. В нашем случае требования аудита состоят в том, что мы либо используем сертифицированный программный стек, либо действуем самостоятельно, но должны показать, что делаем быстрые обновления для каждого небольшого компонента, который в него входит. Итак, для здравомыслия мы исторически придерживались стандартных предложений дистрибутивов Linux. Проблема в том, что они, как правило, отстают на несколько лет. Например, большинство дистрибутивов только недавно приняли PHP 5.3 после того, как застряли с 5.1 (!). Это просто неприемлемо, когда вы пытаетесь разработать современные приложения, использующие современные методы кодирования, плюс вы теряете кучу средств с точки зрения производительности и надежности PHP.

Сказав это, функции тоже довольно хороши. @Keven уже упомянул очередь работы. Это замечательно для нас, поскольку мы можем очень легко разгрузить все виды задач, которые выполняются асинхронно и поддерживают выполнение основного запроса. Например, одно из наших приложений создает задачи в нашем трекере ошибок, когда происходят определенные типы событий. Поскольку это выполняется веб-службой, а система отслеживания ошибок работает ужасно медленно, это может занять несколько секунд. Однако вместо того, чтобы заставлять пользователей нашего приложения ждать, мы просто ставим в очередь задание и запускаем его в фоновом режиме. Аналогично, наш стандартный класс электронной почты использует очередь заданий, а не заставляет пользователя ждать, пока наш код общается с SMTP-сервером. И все это даже не касается полезности таких вещей, как создание больших отчетов, проверка целостности базы данных, восстановление кешей и т. Д. И т. Д.

Кеш страниц отлично подходит для тех случаев, когда вы можете просто кешировать целую страницу и покончить с ней. Мы используем это с нашими WSDL, так как у нас больше контроля, чем у собственных элементов управления кэшированием в PHP. Кроме того, сервер загрузки отлично подходит для кэширования определенных типов контента, таких как изображения. И мы используем кеш данных, как локальный сервер memcached, чтобы значительно ускорить все виды запросов, избегая выполнения запросов к медленному серверу базы данных, который находится где-то еще в медленной сети.

И, конечно, как упоминает @ Андре, в нем есть несколько замечательных функций отладки, трассировки и отчетов о событиях.

Есть также несколько приятных функций для развертывания и отката, которые очень важны для критически важных бизнес-приложений. Я собираюсь попробовать их когда-нибудь, но сейчас я все еще использую инструменты, которые я собрал до использования ZS.

Теперь вы можете получить большинство из этих функций (в частности, все биты кэширования), объединяя различные другие инструменты. Но затем вы должны исследовать и изучить все эти вещи, установить их все и работать вместе, а затем поддерживать их все, включая проведение надлежащего интеграционного тестирования, когда что-то обновляется. Это много работы и времени - время, которое я лично предпочел бы потратить на написание кода.

Сказав все это, есть недостатки. С одной стороны, вещи иногда кажутся ... недоделанными и / или непродуманными. Например, API кэша данных возвращает логическое значение false, если вы пытаетесь получить элемент, который не существует. И, у него нет функции для проверки, существует ли элемент без извлечения. Угадайте, что это значит: вы не можете безопасно хранить логическое значение, потому что вы не можете безопасно получить его. Он включает плохо документированный уровень совместимости APC, но попытка использовать функцию существования из APC приводит к ошибке неопределенной функции.

В качестве другого примера, мы используем Маки для наших станций разработки, но из-за крайне ошибочной озабоченности по поводу совместимости с древним оборудованием, которое, как правило, используют все те профессиональные разработчики, которые сбрасывают тысячи на серверное программное обеспечение PHP, выбрал Zend поставлять версию Mac (предназначенную только для разработки) как 32-битную только . Таким образом, мы вынуждены разрабатывать приложения в 32-разрядной версии, которые работают везде в 64-разрядной версии. Это вызвало немало ошибок и неудачных автоматических тестов в нашем приложении, что, скорее, убивает одну из основных целей ZS - идентичный программный стек в средах разработки, тестирования, тестирования, тестирования и производства. Я пытался уговорить их изменить это, но они быстро начали игнорировать меня.

Еще один важный момент: очередь заданий может обрабатывать задания только через HTTP-запросы. API настроен для разрешения других методов (например, гораздо более разумного вызова командной строки), но HTTP - это все, что работает. Это заставляет вас связывать подключения к веб-серверу с задачами, которые по своей природе, как правило, имеют длительный характер и поэтому должны быть исключены из веб-контекста. И это заставляет вас прыгать через обручи, чтобы не дать миру возможность запускать ваши задания, посещая URL-адрес в браузере. Это просто глупое решение.

Другими примерами являются плохая обработка пользовательских событий, отправляемых через API в Zend Monitor, обертку php-cli для двоичного файла PHP, которая ломается на Mac при запуске по строке shebang, полное (полное) отсутствие отчетов о работоспособности и производительности в инструментах кэширования (хотя они сказали, что это меняется в ZS 6) и смущающе неполной документации. Я мог бы продолжить ....

Теперь те недостатки, а также потраченное впустую время и ресурсы, которые приходят вместе для поездки, очевидно, не перевесили преимущества для нас, но из-за количества денег, которые мы тратим, я определенно ожидаю большего.

0 голосов
/ 27 августа 2014

Я считаю, что использование Zend Server для смягчения управления версиями программного обеспечения PHP и всеми его различными расширениями на всех моих серверах является его самым большим преимуществом.

Кроме того, возможность определить источник проблемы вплоть до конкретной функции PHP с пользовательским вводом и переменными среды гораздо более полезна, чем просмотр журналов ошибок PHP, особенно на сервере с высоким трафиком.

Если есть альтернатива этому с открытым исходным кодом, я бы хотел узнать об этом! Я не очень рад, что Zend прекратил выпуск бесплатной версии.

0 голосов
/ 20 августа 2013

Я работаю над приложениями PHP, которые работают на больших серверах IBM (IBMi Series) со старым программным обеспечением, которое работает уже 20-30 лет с использованием COBOL. Итак, в основном Zend Server - единственная известная мне PHP-платформа, которая работает на IBMi или, по крайней мере, так же надежна, как и она. Эти системы являются критически важными. В основном большинство страховых компаний, банков, фондов, даже школьных округов работают на таких системах. Поскольку вы можете запускать что-то вроде Zend Server, вы можете делать такие вещи, как создание REST API, которое раскрывает эти древние системы современным способом и учитывает сервис-ориентированную архитектуру. Это то, над чем я работал, а также система, управляемая событиями, которая использует PHP CLI и Zend Job Queue, которая передает данные третьим сторонам. В этом случае мы синхронизируем данные от нашего конца до конца поставщика.

Zend Server в IBMi настроен с интерфейсом nginx для статических ресурсов (CSS, изображения и т. Д.) И использует процессы FastCGI для динамического PHP, так что это довольно мощная установка. Это определенно открывает старые системы для модернизации.

0 голосов
/ 13 мая 2013

Code Tracing - лучший инструмент от Zend Sever

  1. Анализ первопричин - это утечка времени для разработчиков
    Исправить проблему легко, когда вы знаете, что ее вызывает. Однако найти первопричину проблем часто непросто во время тестирования и невероятно сложно, когда приложение работает в рабочей среде. Попытка воспроизвести точно такую ​​же среду, состояние приложения и нагрузку в лаборатории разработки отнимает много времени и подвержена ошибкам, и это отвлекает разработчиков от их наиболее важной задачи - написания кода. Zend Server 5 выводит анализ первопричин на совершенно новый уровень, используя трассировку кода.
    Регистратор полетов для вашего приложения PHP Что такое трассировка кода?
    Подумайте о черном ящике полета. Когда с самолетом что-то идет не так, вы, вероятно, не захотите «воспроизвести» проблему. Вот почему регистратор полетов собирает полные данные, которые могут понадобиться аналитикам полетов, чтобы понять, почему возникла проблема.

  2. Отслеживание кода Zend Server похоже на регистратор полета для PHP.
    Вместо того, чтобы тратить время на попытки настроить среду и воспроизвести все шаги, которые привели к сбою, Zend Server фиксирует полное выполнение вашего приложения в режиме реального времени - на производстве или в лаборатории тестирования - так что вы может быстро найти основную причину.

  3. Трассировка кода Zend Server сокращает время анализа первопричин
    Трассировка кода Zend Server активируется автоматически при обнаружении проблемы или вручную пользователем, например, во время оптимизации проекта. Данные, записанные трассировкой кода Zend Server, включают в себя:

    • Дерево вызовов функций
    • Аргументы
    • Возвращаемые значения
    • Продолжительность
    • Использование памяти
    • Строка кода
    • Имя файла

Трассировка, отображаемая в веб-консоли Zend Server, позволяет просматривать - как DVD-диск - историю выполнения вашего приложения и следовать по шагам одного проблемного запроса, чтобы быстро определить первопричину.

...