Page 1 sur 1

Rendre un .txt dynamique

Posté : 14 déc. 2013, 19:25
par baygon_vert
Bonjour, j ai deja un peu programmé en php il y a assez longtemps. J aurais besoin d apprendre a utiliser le couple php + mysql pour rendre des fichiers .txt dynamiques.
Je m explique (ou du moins, j essaye) : je voudrais pouvoir enregistrer un .php du type

Code : Tout sélectionner

Bonjour <?php $world = "toto" ; echo $world ?>
et recuperer un .txt qui contiendrait

Code : Tout sélectionner

Bonjour toto
j ai bien l impression que c est ce qui se passe lorsqu on l utilise (php) via un serveur web, mais y a t il un moyen d obtenir un comportement similaire sans serveur ?

Re: Rendre un .txt dynamique

Posté : 14 déc. 2013, 19:49
par sirakawa
On peut exécuter php en ligne de commande. Je viens d'essayer sur une page qui contient du Habites Tu Mon Logis, mais tout le html est perdu....

Re: Rendre un .txt dynamique

Posté : 14 déc. 2013, 19:54
par baygon_vert
Habites tu mon logis ? ? ?
Oui je crois bien me rappeler qu on peut utiliser php en ligne de commandes, mais dans mon souvenir tout ce qui n est pas php est tout simplement perdu, pour ma part j aimerais que ce soit recopié. Vu que c est le comportement auquel on est habitué lorsque php est convoqué par le serveur web, j imagine qu on doit pouvoir obtenir ce meme comportement sans le serveur par contre je n ai aucune idée de comment proceder.

Re: Rendre un .txt dynamique

Posté : 14 déc. 2013, 21:45
par xTG
dans mon souvenir tout ce qui n est pas php est tout simplement perdu
Tu pourrais être plus précis ? Je ne vois pas de quoi tu parles. :|

Re: Rendre un .txt dynamique

Posté : 14 déc. 2013, 21:56
par sirakawa
Habites Tu Mon Logis ? ? ?
Regarde Les Initiales!

Re: Rendre un .txt dynamique

Posté : 18 déc. 2013, 14:13
par baygon_vert
Bon, je vais tenter d'etre plus precis mais du coup je vais devoir etaler ma (mé)connaissance :)
Si j ai bien compris comment fonctionne le couple serveur/php le mécanisme est le suivant :
sur le serveur (ou ailleurs eventuellement mais c est pas la question) il existe un fichier helloworld.php qui (très grossierement) contient :

Code : Tout sélectionner

Hello <?php $who="world" ; echo $who; ?/>

Un GU (Gentil Utilisateur) sur son navigateur clique sur un lien qui pointe vers ce helloword.php.
La j ai deux hypothèses sur la suite des événements :

Hypothèse 1 :

Le serveur recoit la demande et se dit oooops c est un .php il faut que je passe ce fichier a l interpreteur avant de l envoyer.
l interpreteur recoit le fichier, crée un fichier texte (que je vais appeler tosend.txt), recopie bêtement tout ce qui n est pas dans des 'balises' <?php ... /> dans tosend.txt interprete le reste en prenant soin de mettre les sorties textes dans le fichier tosend.txt. Une fois ce boulot fait il averti le serveur qui lui renvoie tosend.txt au navigateur de notre GU.

Hypothèse 2 :

Le serveur lit malgré tout le fichier helloworld.php et crée lui même le fichier tosend.txt, recopie tout ce qui n est pas entre balise <?php .... /> et envoie un 'bloc de .php' à l'interpreteur en s arrangeant pour garder en mémoire l endroit ou doivent etre recopiées les différentes sorties texte dans tosend.txt. Une fois ce boulot fait il envoie le tosend.txt au navigateur du GU.

Cela étant dit, je croise fort les doigts pour que mon hypothèse 1 soit la plus proche de la réalité. Et qu'on puisse faire en sorte de rendre n'importe quel fichier texte dynamique.
Cependant si je donne un fichier helloworld.php :

Code : Tout sélectionner

Hello <?php $who="world" ; echo "world" ?/>
à mon interpreteur, en sortie je n'ai "que"

Code : Tout sélectionner

world
, alors que j'aimerais avoir en sortie :

Code : Tout sélectionner

Hello world
.

Mes questions sont donc : est il possible de paramétrer l interpreteur pour obtenir ce comportement ? Et si oui comment ?

Voilà, voilà

Re: Rendre un .txt dynamique

Posté : 18 déc. 2013, 14:23
par xTG
En fait... Tu n'as qu'une seule hypothèse, car les deux veulent dire la même chose. :mrgreen:
Sauf que l'interpréteur renvoie un flux de données, soit dans le terminal dans le cas de PHP CLI, soit dans la réponse HTTP dans le cas d'un serveur.

Ce que tu voudrais ne reviendrais pas à générer par exemple des fichiers une seule fois ?
Genre comme les caches côté serveur (ce qui évite de réexécuter le code PHP mais de ne renvoyer que la réponse) ?

Au passage, ceci est incorrect :
?/>

Re: Rendre un .txt dynamique

Posté : 18 déc. 2013, 14:48
par baygon_vert
Non non, j ai bien deux hypothèses la différence essentielle (pour moi) résidant en ce que le fichier tosend.txt est créé par l interpreteur dans la première et dans le serveur dans la seconde.
J ai sans doute omis une precision essentielle c est que j aimerais obtenir

Code : Tout sélectionner

Hello world
sans passer par le serveur.

Re: Rendre un .txt dynamique

Posté : 18 déc. 2013, 14:50
par baygon_vert
Et oui, comprendre comment ne générer les fichiers qu une seule fois m aiderait surement meme si ce n est pas vraiment ce dont j aurai besoin au final.

Re: Rendre un .txt dynamique

Posté : 19 déc. 2013, 08:31
par xTG
Moi de ce j'en comprends de ton problème :
input.txt
Hello <?php $mot = 'world'; echo $mot; ?>
traitement.php
<?php
if( file_exists($input.txt) )
{
  $contenu = file_get_contents($input);
  ob_start();
  eval($contenu);
  $interpretation = ob_get_clean();
  file_put_contents('to_send.txt', $interpretation);
}
else
  echo 'Aucun fichier.';

Re: Rendre un .txt dynamique

Posté : 20 déc. 2013, 10:21
par baygon_vert
Parfait !
Merci !!!