8797 sujets

Développement web côté serveur, CMS

Bonjour à tous,

J'ai un site dynamique assez classique (php-mysql) avec back-office.
Jusqu'ici rien de peu extraordinaire : Le back-office permet d'alimenter la base de données, un appel à une page php, permet l'affichage des données.

Je voudrais introduire une nouvelle étape : Le back-office gère les données et une fonction de publication permet de convertir le tout en "vraies" pages html qui peuvent ensuite êtres consultables sans serveur apache.

Je ne sais pas trop comment m'y prendre...

Pour l'instant j'ai fais des essais de ce genre :

function php_to_htm(){
		
		//on formate le nom du fichier :
		$nom_fichier = $_REQUEST['suffixe_url_rewriting']."-".$this->id.".htm";
		//le path relatif du fichier d'arrivée
		$path_fichier1 = $this->passerelle.$nom_fichier;
		//le path relatif du script qui genere le contenu
		$path_fichier2 = $this->passerelle."index.php?id_page=".$this->id;
		//je lance la copie du contenu dans le fichier d'arrivée
		copy($path_fichier2, $path_fichier1);
	}


Ca ne marche pas, en effet apache ne semble pas pouvoir ouvrir $path_fichier2

Toutefois, il est intéressant de noté que si je fais appel à un script extérieur, ça fonctionne très bien :


function php_to_htm(){
		
		//on formate le nom du fichier :
		$nom_fichier = $_REQUEST['suffixe_url_rewriting']."-".$this->id.".htm";
		//le path relatif du fichier d'arrivée
		$path_fichier1 = $this->passerelle.$nom_fichier;
		//le path relatif du script qui genere le contenu
		//$path_fichier2 = "http://www.google.fr/search?hl=fr&q=toto&btnG=Recherche+Google&meta=";
		//je lance la copie du contenu dans le fichier d'arrivée
		copy($path_fichier2, $path_fichier1);
	}


Avez-vous une idée, d'où ça cloche ?
Il est possible que je parte dans une mauvaise direction, si vous avez des idées, je suis preneur !


Antoine
Modifié par RockMakesMeSweat (28 Jul 2008 - 15:29)
Salut,

En gros, tu veux faire ce qu'on appelle du cache.

Donc, tu te serviras le plus simplement du monde de buffer de sortie php.

En gros :


ob_start() <= début de la mise en buffer

Tout le contenu de ta page

$contenu_page = ob_get_content(); <= on met tout ce qui a été écrit depuis le début de mise en buffer dans une variable

$dir_cache = 'page_html/'; <= on indique dans quel dossier on souhaite créer le fichier
			$fp = fopen($dir_cache.'page.htm', 'w+'); <= on indique le fichier que l'on veut écrire (dossier/fichier), si il n'existe pas, apache le créera
			fwrite($fp, $contenu_page); <= on écrit dans le fichier indiqué, et on y écris le contenu du buffer (mis en variable juste en haut)
			fclose($fp); <= on ferme le fichier

ob_end_content() <= Et on affiche quand même le contenu de la page à l'écran


Ensuite, dans le dossier "page_html" se trouvera un fichier qui s'appelle page.htm qui contiendra le contenu de ta page.
Modifié par Super_baloo8 (28 Jul 2008 - 17:34)