OVH Cloud OVH Cloud

Perf Informix PHP

8 réponses
Avatar
__toto
salut,
je suis à la chasse aux millisecondes dans un script php.

ce script attaque une base informix, située sur le même serveur.(RH 9 /
Informix IDS 9.40/CSDK 2.81-UC3)
l'accés à informix se fait par une connexion de type onsoctcp. (mêmes temps
avec connexion onipcshm)

pour afficher une ligne d'une table il met environ 1/4 de seconde
(ie : select * from table where idx=1)

j'ai pu prouver que le 1/4 de secondes est consommé dans la commande :
$conn_id = ifx_connect ("$server","$user","$pass");



je trouve que 0.25 secondes pour se connecter est un peu elevé...
qu'en pensez vous ?

qq'un utilise t'il informix/PHP ? avec les mêmes temps de connexions ?

et la question qui tue : comment puis-je ameliorer ce temps ?

8 réponses

Avatar
Philippe Chaissac

je trouve que 0.25 secondes pour se connecter est un peu elevé...
qu'en pensez vous ?

qq'un utilise t'il informix/PHP ? avec les mêmes temps de connexions ?


Non, ma réponse sera donc purement spéculative.

et la question qui tue : comment puis-je ameliorer ce temps ?


Peut-être avec une connection persistante ?
ifx_pconnect(..)

Avatar
Olivier Miakinen

je suis à la chasse aux millisecondes dans un script php.


Ok. Mais la question portant essentiellement sur informix elle me semble
passablement hors-charte quand même. Je copie et fais suivre vers le
groupe fr.comp.applications.sgbd.

ce script attaque une base informix, située sur le même serveur.(RH 9 /
Informix IDS 9.40/CSDK 2.81-UC3)
l'accés à informix se fait par une connexion de type onsoctcp. (mêmes temps
avec connexion onipcshm)

pour afficher une ligne d'une table il met environ 1/4 de seconde
(ie : select * from table where idx=1)


Je n'y connais pas grand chose, mais j'ai souvent vu un habitué de ce
forum expliquer que le « select * » était ce qui pouvait se faire de
pire en termes de performance.

j'ai pu prouver que le 1/4 de secondes est consommé dans la commande :
$conn_id = ifx_connect ("$server","$user","$pass");


Ce ne serait donc pas le « select * » ? On m'aurait menti ?

je trouve que 0.25 secondes pour se connecter est un peu elevé...
qu'en pensez vous ?

qq'un utilise t'il informix/PHP ? avec les mêmes temps de connexions ?

et la question qui tue : comment puis-je ameliorer ce temps ?


J'ai laissé l'intégralité de ta question pour que les gourous des sgbd
puissent te répondre.

<hors sujet>
Si tu bosses vraiment chez microsoft.com ce dont je doute, tu peux
peut-être trouver des spécialistes autour de toi. Si au contraire, comme
je le suppose, c'est une adresse antispam, merci de rajouter ".invalid"
derrière ().

Même si tu es en colère contre Microsoft, ce n'est pas la peine de faire
spammer leurs serveurs et les différents relais à ta place.
</>

--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.

Avatar
loufoque
__toto a dit le 03/02/2005 à 20:20:

$conn_id = ifx_connect ("$server","$user","$pass");


Merci d'utiliser la syntaxe PHP correctement.

À par ça, quel rapport avec Perl ?

Avatar
Lascap

je trouve que 0.25 secondes pour se connecter est un peu elevé...
qu'en pensez vous ?

qq'un utilise t'il informix/PHP ? avec les mêmes temps de connexions ?

et la question qui tue : comment puis-je ameliorer ce temps ?



Je ne connais pas personnellement M Informix , mais j'ai eu l'occasion
de travailler avec des bases ingres, par exemple, et je peux te dire
qu'alors, 0.25s pour la connexion, c'était un temps assez courant. En
tout cas, mis à part la connection persistante, qui ne peux fonctionner
de façon réaliste que dans la mesure où très peu d'utilisateurs
utilisent la même base (dans la limite du nombre de connexions
simultanées acceptées par la base en question), je ne vois pas de
solutions... Aa si, changer de base??? :)

Lascap

Avatar
John GALLET
Bonjour,

j'ai pu prouver que le 1/4 de secondes est consommé dans la commande :
$conn_id = ifx_connect ("$server","$user","$pass");
Déjà vécu : $server contient le nom DNS de la machine et donc on perd le

temps de la requête DNS. Donc première chose à tester : est-ce qu'un test
unitaire en collant en dur 'localhost' dans $server permet de résorber ce
temps de latence à la connexion ?

je trouve que 0.25 secondes pour se connecter est un peu elevé...
qu'en pensez vous ?
Enorme.


et la question qui tue : comment puis-je ameliorer ce temps ?
Comme suggéré par ailleurs, on peut aussi essayer les

connexions persistantes. Si c'est un problème type DNS et que l'activité
est suffisement importante, ça aidera probablement (mais pas
obligatoirement)

HTH
JG

Avatar
Marc

... En
tout cas, mis à part la connection persistante, qui ne peux fonctionner
de façon réaliste que dans la mesure où très peu d'utilisateurs
utilisent la même base (dans la limite du nombre de connexions
simultanées acceptées par la base en question), ...


dans ce cas, le client est le script php, et le script php, il est
en général plus ou moins tout seul a bosser sur la machine. Enfin
parfois il y a tout de meme des acces direct par des clients spécialisés.

Avatar
Lascap

... En tout cas, mis à part la connection persistante, qui ne peux
fonctionner de façon réaliste que dans la mesure où très peu
d'utilisateurs utilisent la même base (dans la limite du nombre de
connexions simultanées acceptées par la base en question), ...



dans ce cas, le client est le script php, et le script php, il est
en général plus ou moins tout seul a bosser sur la machine. Enfin
parfois il y a tout de meme des acces direct par des clients spécialisés.


mmmm. Mais si 20 process apache veulent accéder en même temps à la base.
Il n'y a pas 20 connexions??


Avatar
Marc

mmmm. Mais si 20 process apache veulent accéder en même temps à la base.
Il n'y a pas 20 connexions??


oui, 20 connexions persistantes, si l'api entre php et la base de
données est bien réalisé.