Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] Restart Apache et connexion db2/As400

Posted by Pief on 12/20/2011 23:34

Bonsoir,

Je sollicite votre aide afin de résoudre un problème bloquant à l'utilisation du site que j'ai en cours. Le développement est sous Jelix 1.2 et la base de donnée utilisée est une base db2 présent sur un AS400. L’accès à cette base s'effectue via le driver pdo de Jelix. Ce driver est configuré de la sorte dans dbprofils.ini.php.
driver=pdo
dsn="odbc:Driver={iSeries Access ODBC Driver};SYSTEM=192.XXX.XXX.XXX;DBQ=BASETEST;"

J'utilise un CRUD pour l’accès aux données et je suis confronté à un problème aléatoire. En effet, il arrive que le serveur apache effectue un restart (affichage d'une page expliquant la réinitialisation du serveur) après un clique par exemple sur une recherche. Voici l'erreur apache que j'obtiens :

[Tue Dec 20 21:36:26 2011] [notice] Parent: child process exited with status 255 -- Restarting.
[Tue Dec 20 21:36:27 2011] [notice] Apache/2.2.4 (Win32) PHP/5.3.0 configured -- resuming normal operations
[Tue Dec 20 21:36:27 2011] [notice] Server built: Jan 9 2007 23:17:20
Aprés avoir essayer d'affiner la provenance du problème, j'ai remarqué que je pouvais faire crashes le serveur en cliquant plusieurs fois d'affilée sur la touche F5 mais uniquement sur des pages gérer par la méthode _index($resp, $tpl) de mon contrôleur (les pages en create ou editupdate n'ont pas le problème). Enfin j'ai fait un test particulier en changeant la connexion dans dbprofils.ini.php afin de me connecter a une base mysql via un pilote odbc (pour simuler le même comportement que pour l'as400). Bilan pas de plantage.

Donc voici ma question avez vous une idée de la provenance du problème en utilisant DB2/AS400? Est ce qu'une méthode de jDbPDOConnection.class.php ou jDbPDOResultSet.class.php doit être modifier pour le faire fonctionné avec DB2? Avez une idée ou une piste pour solutionner le problème?

Merci par avance de votre aide

  [Opened] Restart Apache et connexion db2/As400

Reply #1 Posted by foxmask on 12/21/2011 09:12

Bonjour, En faisant un script tout QQ exploitant PDO se connectant à DB2 sur votre AS400 ; reproduisez vous le problème ?


@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !

  [Opened] Restart Apache et connexion db2/As400

Reply #2 Posted by Pief on 12/21/2011 14:39

Tout d'abord merci de votre réponse.

J'ai effectué le test basique suivant :

$database = 'BASETEST';
$hostname = 'XXX.XXX.XXX.XXX';
$dsn = "DRIVER=iSeries Access ODBC Driver;SYSTEM=$hostname;DBQ=$database;";

try {
  $pdo = new PDO("odbc:Driver={iSeries Access ODBC Driver};SYSTEM=$hostname;DBQ=$database;",'login','pass');
 if ($pdo)
     echo "Connection succeeded.";
  else
     echo "Connection failed.";

}
catch(PDOException $e) {
  die('Unable to open database connection');
}

En rafraichissement en série (F5 en continu), cela planté et relancer apache. Mais en rajoutant l'option de persistance, plus de problème.

$pdo = new PDO("odbc:Driver={iSeries Access ODBC Driver};SYSTEM=$hostname;DBQ=$database;",'login','pass',array(PDO::ATTR_PERSISTENT => true));

J'ai donc tenté de modifier le connecteur de Jelix car je ne voyais pas l'utilisation de l'option. voici la modification effectuée dans jDbPDOConnection.class.php :

//parent::__construct($dsn, $user, $password, $prof);
parent::__construct($dsn, $user, $password, array(PDO::ATTR_PERSISTENT => true));

//$this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('jDbPDOResultSet'));
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Aprés cette modification, je n'es plus de plantage que j'arrive à reproduire avec F5.

Je voulais connaitre votre avis ainsi que la conséquence d'enlever l'attribut PDO::ATTR_STATEMENT_CLASS qui n'est pas compatible avec la persistance.

Merci encore pour votre aide.

  [Opened] Restart Apache et connexion db2/As400

Reply #3 Posted by foxmask on 12/21/2011 14:57

je pense qu'il faudrait qu'on rajoute la persistance au support de PDO à Jelix alors en faisant un ticket sur github ou sur developer.jelix.org :-)


@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !

  [Opened] Restart Apache et connexion db2/As400

Reply #4 Posted by laurentj on 12/21/2011 15:34

Bonjour,

effectivement, l'option de persistence n'est pas utilisé. ça sera corrigé.

Je voulais connaitre votre avis ainsi que la conséquence d'enlever l'attribut PDO::ATTR_STATEMENT_CLASS qui n'est pas compatible avec la persistance.

Comment ça pas compatible ? Pour moi il n'y a aucun rapport avec le fait de la persistence. Ou alors c'est un bug dans le driver odbc de PDO (essayer de mettre à jour PHP peut-être ?). Et si cet attribut n'est vraiment pas possible, ça va casser quelque part dans jelix. PDO doit absolument générer des objets de type jDbPDOResultSet.

  [Opened] Restart Apache et connexion db2/As400

Reply #5 Posted by Pief on 03/09/2012 11:23

Bonjour, désolé de ne pas avoir répondu plus tot mais je n'avais pas vu qu'il ya vait des réponses sur ce sujet.

Pour le PDO::ATTR_STATEMENT_CLASS, c'est mentionnée dans la documentation de PHP. Sinon je pesne que le driver souffre d'un bug effectivement car il devrait fonctionnée sans la persistance.

  [Opened] Restart Apache et connexion db2/As400

Reply #6 Posted by foxmask on 03/09/2012 11:27

Bonjour,

Pour "suivre" les réponses à vos sujets vous pouvez cliquer sur "suivre cette discussion" sous n'importe qu'elle reponse des intervenants ;)


@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !

 
Page
  1. Restart Apache et connexion db2/As400