::franek::

Aller au contenu | Aller au menu | Aller à la recherche

Mot-clé : Zend Platform

Zend Server 5 et Oracle

Zend Server vient de sortir en version 5. Zend Server est le remplaçant de la Zend Platform.

Par défaut, Zend Server est fourni avec le client Oracle Instant Client Lite qui ne prend pas en charge les bases de données Oracle avec des encodages un peu exotique (WE8ISO8859P15, par exemple) :

ZS is shipped with the OCI library Lite version which only supports OCI and OCCI for US locales only. You may download the full version from Oracle's site and replace the current libraries shipped with ZendServer with those, they are API and ABI compatible so you should have no issues.

Si comme moi, vous disposez de bases Oracle dans ce type d'encodage, il est nécessaire d'installer un client Oracle Basic et d'indiquer à Zend Server le chemin vers ce client Oracle.

Voici la procédure :

  • Téléchanger instantclient-sdk-linux32-11.2.0.1.zip and instantclient-basic-linux32-11.2.0.1.zip
  • Décompressez les 2 archives. Cela va créer un répertoire : instantclient_11_2
  • Copier le répertorie dans /usr/local/oracle/
  • Créer un lien symbolique ln -s instantclient_11_2/ instantclient
  • Ajouter dans le fichier /etc/apache2/envvars

export LD_LIBRARY_PATH=/usr/local/oracle/instantclient:/usr/local/zend/lib
export ORACLE_HOME=/usr/local/oracle/instantclient

  • Redémarrer Apache.

Cela devrait fonctionner.

Segmentation fault avec la Zend Platform et le composant Zend_Cache du Zend Framework

Il nous aura fallu environ 1 mois sur nos serveurs de production pour trouver une résolution à ce problème. Afin que sa résolution puisse servir, je poste un petit mémo.

Si vous rencontrez des segmentations fault Apache du type :

[Mon Oct 05 13:02:32 2009] [notice] child pid 25046 exit signal Segmentation fault (11)

et que vous utilisez la Zend Platform et Zend Framework (et notamment le composant Zend_Cache), cela peut venir du backend Zend_Platform du module Zend Cache du Zend Framework.

En effet, le backend Zend_Platform du composant Zend_Cache du Zend Framework utilise les méthodes obsolètes de stockage en cache de la Zend Platform (output_cache_get / output_cache_put). Ces méthodes sont obsolètes (cf. la documentation de l'API de la Zend Platform). Vous devriez plutôt utiliser les méthodes zend_[shm|disk]_cache_delete, zend_[shm|disk]_cache_store, zend_[shm|disk]_cache_fetch.

Un bug (ZF-8003) a été ouvert sur le Zend Framework qui ne sera pas corrigé en raison de la non homogénéité des plate-formes (la version windows de la Zend Platform ne connait pas les nouvelles méthodes).

Pour régler le problème, une des solutions est d'utiliser le backend Zend Server du Zend Framework qui fonctionne avec les dernières version de la Zend Platform (3.6.2 et supérieure). Ce backend utilise les méthodes zend_[shm|disk]_cache_delete, zend_[shm|disk]_cache_store, zend_[shm|disk]_cache_fetch qui sont compatibles avec la Zend Platform.

J'espère que cela pourra aider.

à propos :: Mots-clés :: archives :: RSS :: Mail