2009-08-20 4 views
9

L'autre jour, je regardais Zend Server et je me demandais pourquoi je voudrais utiliser cela? OK, ils disent que tout est testé et mission critique et prêt pour l'entreprise, etc. Mais pour moi, c'est juste le service marketing qui parle.expériences Zend Server

Est-ce que quelqu'un utilise ce produit et si oui, pouvez-vous partager vos expériences avec ce produit et peut-être pourriez-vous expliquer pourquoi vous avez choisi ce produit pour votre application.

Avez-vous trouvé de réels avantages à utiliser le serveur Zend?

Répondre

6

J'ai utilisé Zend Platform (je sais que vous posiez des questions à propos de Zend Server, j'y arrive) et je suis très intéressé par l'outil de rapport d'erreurs que vous utilisez également avec Zend Server. En cas d'erreur ou d'exception, Zend Server stocke autant d'informations que possible (comme par exemple quels paramètres de requête ont été utilisés, où l'erreur s'est produite, heure, message d'erreur, trace de pile, etc.). Une exécution lente du script vous est également signalée. Je préfère vraiment recevoir ce genre de messages d'erreur sur les clients en disant quelque chose comme: «Le site ne fonctionne pas, veuillez le corriger». Lorsque vous utilisez Zend Server en conjonction avec Zend Studio, il est très intéressant que Zend Debugger soit déjà préinstallé (mais vous auriez pu l'installer vous-même).

De plus, il est livré avec un pont php-java (vos classes Java peuvent être utilisées en PHP) mais je n'en avais pas besoin.

Si vous avez déjà une solution de rapport d'erreurs basée sur php dans votre application web ou si vous n'en avez pas besoin, ni pour le pont Java, je dirais que cela ne fait pas vraiment de différence si vous utilisez Zend Serveur sur votre propre installation d'apache (tant que vous savez comment le configurer correctement).

Au moins c'est mon opinion/expérience. J'ai utilisé l'édition Developer Edition de Zend Platform qui est gratuite. Si je devais payer pour Zend Platform/Server, je ne pense pas que je l'utiliserais. Mais cela dépend vraiment du projet.

4

Zend Server est à peu près beaucoup plus qu'une pile testée et supportée. André a abordé l'une des fonctionnalités de Zend Server, celle de la surveillance. La surveillance surveille l'exécution de votre script PHP pour certaines conditions et si un certain seuil est passé, le contexte de cette requête sera enregistré pour que vous puissiez l'examiner plus tard. Lorsque je travaille sur site avec des clients qui ont des problèmes d'application, la première chose à faire est d'installer Zend Server et d'activer la surveillance. En quelques minutes, j'ai généralement au moins une très bonne théorie quant à leur problème.

Dans Zend Server 5, l'introduction de la fonction de traçage de code qui effectue l'instrumentation d'exécution de presque tous les appels de fonction/méthode effectués au cours d'une requête a été beaucoup plus poussée. C'est un peu comme une combinaison de débogage et de profilage qui est fait pendant l'exécution. Dans de nombreux cas, il est possible de diagnostiquer un problème dans un environnement de production sans réellement répliquer le problème.

Vous pouvez également utiliser plusieurs autres fonctionnalités. La file d'attente de travail est une grande pour moi que j'utilise assez largement.J'ai un exemple d'utilisation à Do you queue? Introduction to the Zend Server Job Queue

Il existe également deux fonctionnalités de mise en cache différentes, le pont PHP-Java (auquel André a également fait allusion) et Optimizer + qui est l'un des accélérateurs d'opcode les plus rapides disponibles.

3

Certes, le bit 'testé, certifié' est agréable dans certains environnements. Dans notre cas, les exigences d'audit sont que nous utilisions soit une pile logicielle certifiée, soit que nous devions nous débrouiller tout seuls, mais que nous devions montrer que nous faisons des mises à jour rapides pour chaque petit composant qui s'y connecte. Donc, pour des raisons de santé mentale, nous avons toujours utilisé les offres standard des distributions Linux. Le problème avec cela est qu'ils ont tendance à être des années derrière la courbe. Par exemple, la plupart des distributions ont récemment adopté PHP 5.3 après être resté bloqué avec 5.1 (!). Ce n'est tout simplement pas acceptable lorsque vous essayez de développer des applications modernes qui utilisent des techniques de codage modernes, et que vous abandonnez une tonne en termes de performance et de fiabilité PHP.

Cela étant dit, les fonctionnalités sont plutôt sympas. @Keven a déjà mentionné la file d'attente. C'est génial pour nous, en ce que nous pouvons très facilement décharger toutes sortes de tâches qui s'exécutent de manière asynchrone et maintenir le processus de demande principal en vol. À titre d'exemple, une de nos applications crée des tâches dans notre outil de suivi des bogues lorsque certains types d'événements se produisent. Comme cela est fait par le service web, et le bug tracker est horriblement lent, cela peut prendre plusieurs secondes. Plutôt que de faire patienter les utilisateurs de notre application, nous mettons en file d'attente un travail et le laissons s'exécuter en arrière-plan. De même, notre classe de messagerie standard utilise la file d'attente plutôt que de faire attendre l'utilisateur pendant que notre code parle à un serveur SMTP. Et tout cela n'atteint même pas l'utilité pour générer des rapports volumineux, exécuter des vérifications d'intégrité de base de données, reconstruire des caches, etc.

Le cache de pages est parfait pour les cas où vous pouvez simplement mettre en cache une page entière et être fait avec. Nous l'utilisons avec nos WSDL, car nous avons un meilleur contrôle que les contrôles de cache de PHP. De même, le serveur de téléchargement est merveilleux pour la mise en cache de certains types de contenu, comme les images. Et nous utilisons le cache de données comme un serveur memcached local pour accélérer considérablement toutes sortes de demandes en évitant de faire une requête à un serveur de base de données lent assis ailleurs sur le réseau lent. Et bien sûr, comme le mentionne @ André, il y a de très jolies fonctionnalités de débogage, de traçage et de rapport d'événements.

Il existe également des fonctionnalités intéressantes pour effectuer des déploiements et des annulations, ce qui est très important pour les applications stratégiques. J'ai l'intention de les essayer un jour, mais pour l'instant, j'utilise toujours les outils que j'ai mis ensemble avant d'utiliser ZS. Maintenant, vous pouvez obtenir la plupart de ces fonctionnalités (en particulier, tous les bits de mise en cache) en bricolant ensemble une variété d'autres outils. Mais vous devez ensuite rechercher et apprendre toutes ces choses, les faire toutes installer et travailler ensemble, puis les conserver toutes, y compris faire des tests d'intégration appropriés quand quelque chose est mis à jour. C'est un travail de temps et de temps que je préfère personnellement passer à écrire du code.

Ayant dit tout cela, il y a des inconvénients. D'une part, les choses se sentent parfois ... à moitié cuites et/ou mal conçues. Par exemple, l'API de cache de données renvoie la valeur booléenne false si vous tentez d'extraire un élément qui n'existe pas. Et, il n'a aucune fonction pour vérifier si un article existe sans également aller chercher. Devinez ce que cela signifie: vous ne pouvez pas stocker en toute sécurité une valeur booléenne parce que vous ne pouvez pas le récupérer en toute sécurité. Il inclut une couche de compatibilité APC mal documentée, mais essayer d'utiliser la fonction d'existence à partir d'APC génère une erreur de fonction non définie.Comme autre exemple, nous utilisons des Mac pour nos stations de développement, mais par souci de compatibilité avec le matériel ancien qui a tendance à être utilisé par tous les développeurs professionnels qui perdent des milliers sur le serveur PHP, Zend a choisi d'expédier la version Mac (qui est pour le développement seulement) comme 32 bits seulement. Nous sommes donc obligés de développer une application en 32 bits qui fonctionne partout ailleurs en 64 bits. Cela a causé pas mal de bogues et des tests automatisés qui ont échoué dans notre application, ce qui tue plutôt l'un des objectifs principaux de ZS, qui est une pile logicielle identique dans les environnements de développement, test, staging, QA et production. J'ai essayé de les convaincre de changer cela, mais ils ont rapidement commencé à m'ignorer. Un autre problème important est que la file d'attente des travaux ne peut traiter que les tâches via des requêtes HTTP. L'API est configurée pour permettre d'autres méthodes (comme l'appel de ligne de commande beaucoup plus sensible), mais HTTP est tout ce qui fonctionne. Cela vous oblige à lier les connexions du serveur Web à des tâches qui, de par leur conception, tendent à durer longtemps et doivent donc être retirées du contexte Web. De plus, cela vous force à sauter dans des cerceaux pour empêcher le monde de déclencher vos tâches en visitant une URL dans un navigateur. C'est juste une décision stupide. D'autres exemples sont la mauvaise gestion des événements personnalisés envoyés via API à Zend Monitor, l'encapsuleur php-cli pour le binaire PHP qui casse sur le Mac lorsqu'il est déclenché par la ligne shebang, le manque total (total) de santé et de performance les rapports dans les outils de cache (bien qu'ils disaient que cela change dans ZS 6), et la documentation embarrassante incomplète. Je pourrais continuer ...

Maintenant, ces inconvénients, et le temps perdu et les ressources qui viennent pour le tour, évidemment n'ont pas dépassé les avantages pour nous, mais pour le montant d'argent que nous dépensons , Je m'attends certainement plus.

0

code Tracing est le meilleur outil fourni par Zend Sever

  1. l'analyse des causes est un temps-Sink pour les développeurs
    Résolution d'un problème est facile quand vous savez quelles sont les causes. Cependant, trouver la cause première des problèmes est souvent difficile lors des tests, et incroyablement difficile lorsque l'application est en cours de production. Essayer de reproduire exactement le même environnement, l'état de l'application et la charge dans le laboratoire de développement est à la fois long et sujet aux erreurs, et cela enlève aux développeurs leur code d'écriture des tâches le plus important. Zend Server 5 porte l'analyse des causes profondes à un tout autre niveau en proposant le traçage de code. Un enregistreur de vol pour votre application PHP Qu'est-ce que le traçage de code?
    Pensez à un enregistreur de vol boîte noire. Quand quelque chose ne va pas avec un avion, vous ne voudriez probablement pas "reproduire" le problème. C'est pourquoi l'enregistreur de vol capture les données complètes dont les analystes de vol peuvent avoir besoin pour comprendre pourquoi le problème est survenu. Zend Server Code Tracing est comme un enregistreur de vol pour PHP. Plutôt que de passer du temps à essayer de configurer l'environnement et de reproduire toutes les étapes qui ont mené à l'échec, Zend Server capture l'exécution complète de votre application en temps réel - en production ou dans le laboratoire de test - afin que vous puissiez trouver rapidement la cause première.

  2. code Zend Server suivi Cuts analyse des causes profondes Temps
    traçage de code Zend Server est activé automatiquement, lorsqu'un problème est détecté, ou manuellement par l'utilisateur, par exemple lors d'un projet d'optimisation. Les données enregistrées par le traçage de code Zend Server inclut:

    • Fonction appelle arbre
    • Arguments
    • Valeurs de retour
    • Durée
    • Utilisation de la mémoire
    • ligne de code
    • Nom du fichier

La trace affichée dans la console Web de Zend Server vous permet d'afficher - tout comme un DVD - l'historique d'exécution de votre application et de suivre les traces d'une seule requête problématique pour identifier rapidement la cause première.

0

Je travaille sur des applications PHP qui s'exécutent sur de grands serveurs IBM (IBMi Series) avec un vieux logiciel qui fonctionne depuis 20 ou 30 ans en utilisant COBOL. Donc, fondamentalement, Zend Server est la seule plate-forme PHP que je connaisse qui fonctionne sur IBMi ou au moins aussi robuste que ce soit. Ces systèmes sont essentiels à la mission. Fondamentalement, la plupart des compagnies d'assurance, des banques, des stocks, même les districts scolaires fonctionnent sur ces types de systèmes. Depuis que vous pouvez exécuter quelque chose comme Zend Server, vous pouvez faire des choses comme construire une API REST qui expose ces anciens systèmes d'une manière moderne et permet l'architecture orientée services. C'est ce sur quoi j'ai travaillé et aussi un Event Driven System qui utilise PHP CLI et Zend Job Queue qui pousse les données à des tiers. Dans ce cas, nous synchronisons les données de notre fin à la fin du fournisseur.

Zend Server sur IBMi est configuré avec un frontal nginx pour les ressources statiques (CSS, images, etc.) et utilise les processus FastCGI pour le PHP dynamique, donc c'est une configuration assez puissante. Cela ouvre définitivement les vieux systèmes de modernisation.

0

Je trouve que l'utilisation de Zend Server pour atténuer la gestion des versions logicielles de PHP et de toutes ses différentes extensions sur tous mes serveurs est son plus grand avantage. Egalement, être capable de repérer la source d'un problème à la fonction PHP spécifique avec les variables d'entrée et d'environnement de l'utilisateur est beaucoup plus utile que de troller dans les journaux d'erreurs PHP, en particulier sur un serveur très fréquenté.

S'il existe une alternative open source à cela, j'aimerais bien le savoir! Je ne suis pas trop content que Zend ait arrêté la version gratuite.