OVH Cloud OVH Cloud

Rediriger la sortie de "echo"

10 réponses
Avatar
JCF
Bon, v'là mon casse tête du jour :-/ ,

Alors que la pseudo fonction "echo" envoi du texte vers la sortie standard
(le document HTML en utilisation web), je voudrais pouvoir en changer la
destiniation "à la volée"...

Dans le principe, un truc du genre :

echo "Ceci sort vers le document Web";
$monFichier = fopen("toto.txt",w);
$_STDOUT = $monFichier; // j'invente là...
echo "Maintenant, ceci sort vers le fichier toto.txt";
$_STDOUT = $_WEB; // 'pis là aussi
echo "Vers le document WEB";

etc...

J'en suis arrivé à la conclusion que c'est impossible, mais j'aimerais quand
même avoir l'avis d'autres personnes, des spécialistes,

Sivoplé

10 réponses

Avatar
Vincent Courcelle
"JCF" a écrit dans le message de
news:403fd42c$0$28123$
Bon, v'là mon casse tête du jour :-/ ,

Alors que la pseudo fonction "echo" envoi du texte vers la sortie standard
(le document HTML en utilisation web), je voudrais pouvoir en changer la
destiniation "à la volée"...

Dans le principe, un truc du genre :

echo "Ceci sort vers le document Web";
$monFichier = fopen("toto.txt",w);
$_STDOUT = $monFichier; // j'invente là...
echo "Maintenant, ceci sort vers le fichier toto.txt";
$_STDOUT = $_WEB; // 'pis là aussi
echo "Vers le document WEB";


si ça concerne tout ce qui est généré dans une page, tu peux t'en tirer avec
ob_gzhandler("nomdefonction")
puis :
function nomdefonction($texte)
{
$open=fopen("toto.txt","w");
fputs($open,$texte);
fclose($open);
}

(de mémoire)

Avatar
Guillaume Bouchard
JCF wrote:
Alors que la pseudo fonction "echo" envoi du texte vers la sortie standard
(le document HTML en utilisation web), je voudrais pouvoir en changer la
destiniation "à la volée"...

J'en suis arrivé à la conclusion que c'est impossible, mais j'aimerais quand
même avoir l'avis d'autres personnes, des spécialistes,


Mauvaise conclusion. Php sait tout faire, meme le café ( mais bon, il
est degeu :))

http://www.php.net/ob_start

--
Guillaume.

Avatar
Alexandre Havard
JCF wrote:

$monFichier = fopen("toto.txt",w);
$_STDOUT = $monFichier; // j'invente là...
echo "Maintenant, ceci sort vers le fichier toto.txt";


Pourquoi ne pas utiliser la fonction fwrite qui est faite pour ça ?
(http://php.net/fwrite)

--
Alexandre Havard
Game Over - 1er salon du jeu sur plate-forme libre
Les 9 et 10 Avril 2004, à Limoges - http://game-over.eu.org

Avatar
Nudrema
JCF wrote:
Bon, v'là mon casse tête du jour :-/ ,

Alors que la pseudo fonction "echo" envoi du texte vers la sortie standard
(le document HTML en utilisation web), je voudrais pouvoir en changer la
destiniation "à la volée"...

Dans le principe, un truc du genre :

echo "Ceci sort vers le document Web";
$monFichier = fopen("toto.txt",w);
$_STDOUT = $monFichier; // j'invente là...
echo "Maintenant, ceci sort vers le fichier toto.txt";
$_STDOUT = $_WEB; // 'pis là aussi
echo "Vers le document WEB";

etc...

J'en suis arrivé à la conclusion que c'est impossible, mais j'aimerais quand
même avoir l'avis d'autres personnes, des spécialistes,

Sivoplé


Tu pourrais utiliser les fonctions ob_* et la bufferisation. Si
tu veux écrire dans un fichier plutôt que chez le client, tu
récupères le contenu du buffer via ob_get_contents() et tu
l'écris de façon classique...

Sinon, on peut avoir des pointeurs de fichiers STDOUT avec php,
via le protocole 'php:', voir sur la page de
http://php.net/fopen. Tu pourrais peut-être alors utiliser
fwrite() à la place de echo, quel que soit la destination de ton
contenu...

--
Nudrema (S.F.)
http://tw.o0o.ch

Avatar
simOn
JCF wrote:


J'en suis arrivé à la conclusion que c'est impossible, mais j'aimerais quand
même avoir l'avis d'autres personnes, des spécialistes,


faut savoir communiquer à son interlocuteur avec les bons outils......

fwrite();
http://www.nexen.net/docs/php/annotee/function.fwrite.php



Sivoplé


Avatar
JCF
Super ! Je ne conaissais pas trop l'intérêt de contrôler la bufferisation de
sortie, et je ne m'en suis donc pas plus intéressé, mais finalement ça va
peut-être être la solution !

Pourquoi je n'utilise pas fwrite à la place :
parce que dans 95% des cas, j'envoi du texte directement au client avec
"echo", alors que dans les 5% restant, j'envoi du texte au client avec
"echo" lorsque je suis en phase de développement, ou alors je lance un
script qui modifie mes script pour que, à la première éxecution, ils
génèrent des fichiers caches (pour éviter de faire des accès MySQL et du
traitement qui abouti toujours au même résultat) et s'automodifie pour
remplacer la-dite section par un simple require !

C'est un peu tordu, et la faisabilité reste à prouver, mais je crois que je
devrais y arriver... maintenant.

Je vais creuser à nouveau la question.


Merci pour vos réponses !
Avatar
Jean-Marc Molina
ils
génèrent des fichiers caches (pour éviter de faire des accès MySQL et du

traitement qui abouti toujours au même résultat) et s'automodifie pour
remplacer la-dite section par un simple require !

Tout à faire j'utilise les fonctions ob_* pour générer des pages HTML à
partir de gabarits. Comme le contenu ne change que lors des mises à jour,
les pages ne sont regénérées qu'en cas de modification.

Par contre en faisant un bench on se rend vite compte que la génération des
pages est bien plus longues. D'où l'intérêt d'utiliser ces fonctions pour
générer des pages statiques.

C'est un peu tordu, et la faisabilité reste à prouver, mais je crois que
je

devrais y arriver... maintenant.

100% testé et approuvé. L'avantage c'est de pouvoir utiliser un gabarit HTML
qui contient du PHP, sans passer par vos « foutus » echo à la mort moi le
noeud :D. Balise <?= ?> oblige.

JM

Avatar
JCF
Héhé !

C'est raté sur ce coup là :o) : je n'utilise que des échos, et aucun
gabarit... Vue que la portion de HTML dans mes fichiers PHP ne réprésente
que... 20%, et encore, elle même truffé de variable PHP, j'opte pour la
solution "tout code". Il m'arrive toutefois d'inclure des sections HTML
pures dans le fichier si la portion de code ne contient pas de variable et >
à 4 lignes...

Pour le contenu "statique issu de calcul post mise à jour", je vais utiliser
ma méthode précité.
Avatar
Nicklas
Le Sat, 28 Feb 2004 09:40:50 +0000, JCF a écrit :

Bon, v'là mon casse tête du jour :-/ ,

Alors que la pseudo fonction "echo" envoi du texte vers la sortie standard
(le document HTML en utilisation web), je voudrais pouvoir en changer la
destiniation "à la volée"...


Peut-être que mon petit tuto sur les systèmes de cache peut
te servir. Je t'invite à le consulter.

http://www.progweb.com/modules/cours/consult.php?own=4&nump

J'espère que tu trouveras ce que tu cherches, ou en partie.

--
Nicklas
ProgWeb - Développer son site Internet
http://www.progweb.com

Avatar
JCF
C'est très intéressant, je vais m'en inspirer pour faire mon système de
cache.

Merci.