Forum Programmation.php PHP, ODBC et MSSQL

Posté par  .
Étiquettes : aucune
0
24
fév.
2011

Bonjour à tous, je suis actuellement en stage et je travaille sur une base de donnée SQL SERVER 2000 via un serveur linux et un driver ODBC (FreeTDS).

Tout cela fonctionne très bien à un détail près. Dans une de mes pages je doit récupérer un champ texte stocké dans la base qui dépasse les 10 000 caractères. Le hic c'est que lorsque j'affiche ma variable, le texte est tronqué à 4096 caractères...

J'ai fait quelques recherches avant de poster mon message et j'ai effectué les configurations suivantes (qui n'ont rien changées...)

Dans freetds.conf

text size = 65536

Dans php.ini

odbc.defaultlrl = 65536

Quelqu'un aurait-il rencontré le même genre de problème et aurait-il la solution?

Merci d'avance pour vos réponses.

  • # Output buffering ?

    Posté par  . Évalué à 2.

    Tu n'aurais pas un tampon de sortie limité à 4096 octets dans ta configuration PHP, par hasard ?

    Cf. éléments de doc

    • [^] # Re: Output buffering ?

      Posté par  . Évalué à 1.

      Apparemment non, voici la ligne correspondante dans php_info()

      output_buffering no value no value

      Merci quand même, une autre idée peut-être ?

      • [^] # Re: Output buffering ?

        Posté par  . Évalué à 1.

        La taille de ta variable est-elle identique à celle des données contenues dans ton champ ?

        • [^] # Re: Output buffering ?

          Posté par  . Évalué à 1.

          Comment connaitre la mémoire utilisée par une variable ? Désolé mais je ne suis pas très bon en php...

          • [^] # Re: Output buffering ?

            Posté par  . Évalué à 1.

            Y'a pas un truc genre strlen, en php ? Et c'est pas une chaîne de caractères, que tu récupères ?

            • [^] # Re: Output buffering ?

              Posté par  . Évalué à 1.

              Ah ok je pensais que tu me parlais de la taille en mémoire. Sinon, non la taille est bien (malheureusement) de 4096 caractères. Je suis en train de voir avec le responsable informatique pour modifier la valeur de cette configuration sur SQL SERVER :

              sp_configure 'network packet size (B)'

              Qui est pour l'instant à 4096.

              Je te tiens au courant quand c'est fait.

  • # Rien à faire ?

    Posté par  . Évalué à 1.

    Le réglage du sp_configure n'as rien changé. Je suis un peu perdu, je ne sais plus trop où chercher...

    Quelqu'un a une idée ?

    • [^] # Re: Rien à faire ?

      Posté par  . Évalué à 1.

      En principe avec Transact-SQL, tu peux connaitre la taille max d'un champ text avec la requete sql "select @@textsize" et la positionner avec "set textsize valeur" si la valeur n'est figée par le serveur.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.