Persistance de données

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Persistance de données

par tibo007 » 12 déc. 2006, 10:22

Merci beaucoup de ton aide.

Et bien je crois qu'il ne me reste plus qu'une chose à faire: retourner voir mon ami Java et mettre en place mon service.Ca m'embetait de mettre en place une artillerie lourde pour un si petit systeme, et ca aurait été l'occaz de voir plus concretement comment fonctionnait PHP...mais ce n'est que partie remise!! i ll be back soon et merci encore pour ton aide :wink:

par Ajoloca » 12 déc. 2006, 00:48

Re,
Dans ce cas tu n'as pas besoin d'utiliser ta class.

Les variables session me semblent une meilleure idée.

Comment ça marche ?
La variable $_SESSION[] est une super globale comme $_POST[], $_GET[], etc...
La grande difference c'est quelle permet de conserver des données entre plusieurs pages (pendant la durée d'une session).

Si tu veux conserver tes données d'une session à une autre tu devras te tourner vers une base de données ou les fichiers.

La seule contrainte de $_SESSION[] c'est que tout script doit commencer par session_start()
La manipulation est identique à celle d'un tableau associatif.

par tibo007 » 12 déc. 2006, 00:14

Alors comme expliqué plus haut, et en corrélation avec le code ci dessus,
j'ai besoin d'avoir accès à mon objet mémoire array smscodelisting pour le mettre a jour(ajouter une entré par exemple) ou bien tout simplement récupéré l'info d'une session sur l'autre.
Initialement les données chargées dans ce tableau proviendront d'un fichier texte.
Cependant , vu la qtt d'acces effectuée, je ne peux pas me permettre d'aller taper a chaque fois ds ce fichier.
J'ai donc besoin d'une instance mémoire en permanance.
N'hésite pas si tu veux plus de précision... et merci encore de te pencher sur ce cas ;)

par Ajoloca » 11 déc. 2006, 23:45

Re,

Si tu parles d'une connexion à une base de données (même persistante), à ma connaissance PHP ne les conserve pas d'une page à une autre.
En revanche, si elle est redemandée (mêmes paramètres) et qu'il le peut il redonne la même.

Soit plus précis dans tes besoins ça nous aidera à t'orienter vers une solution ou une autre.

par tibo007 » 11 déc. 2006, 23:32

Merci de ta rapidité.

Peux tu m'expliquer rapidement le principe pour créer une session permanante, omnisciente, enfin qui prend en charge toutes les connexions? enfin si cela est possible en PHP :?

par Ajoloca » 11 déc. 2006, 20:03

Bonjour,

Ton code te rendrait parfaitement ce que tu attends si tu l'instentiais plusieures fois dans le même script.

Dans ton cas, tu changes de script (page) donc ton code se comporte correctement mais ne te rends pas ce que tu attends.

Je te conseillerais de garder ton objet en session, et là tu auras le résultat escompté.

Persistance de données

par tibo007 » 11 déc. 2006, 19:36

Bonjour à tous,

Je débute en PHP(comme vous pouvez le deviner :wink: ) et j'ai un petit problème avec la persistance.
Après moultes recherches, j'ai bien compris que le PHP gérait assez mal cela. Cependant, je crois qu'il est possible de le faire, surtout apres avoir pris comme modele l'exemple du "singleton".

Mon problème:
J'ai un serveur A qui envoie une requete sur mon serveur B, sur une page dispatcher.php
Ce serveur contient( ou devrait contenir...) un tableau persistant permettant de récuperer des données et renvoyer des données vers un serveur C.
Pourquoi ce tableau? Car A envoie de tres nombreuses requetes à B dans un laps de temps très court.Les données sont inscrites dans un fichier à plat et la recherche systématique dans ce fichier est beaucoup trop longue.

Je me suis basé sur l'algo du singleton...

Code de ma classe:
<?php 
 class MySmsDispatcher 
 {
 	private static $_instance;
 	private static $smsCodeListing;//clé=code court, valeur=une adresse
	
	private function __construct()
	{
		self::$smsCodeListing=array();
		echo 'construction du singleton<br/><br/>' ;
	}
	
	 public static function GetInstance()
	{         
		if (!isset(self::$_instance))
		{
			echo'linstance nexiste pas<br/>';
			self::$_instance = new MySmsDispatcher();
		} 
		else echo'linstance existe deja<br/>';        
			return self::$_instance;     
	}
	
		
	public function AddCode($code,$adresse)
	{
		self::$smsCodeListing[$code]=$adresse;
	}
	
}
?>
Code de ma page appelée par A:
<?php 
include_once("smsdispatcher.php");							
	for($i=0; $i < 10; $i++) 
{ 

$var = MySmsDispatcher::getInstance();
//quand je fais ce test, il me considere bien une et une seule instance, donc jusqu'ici ,c'est bon!!
}
	$action=trim($_POST['action']);
	if($action== 'addcode')
	{
			$code=trim($_POST['code']);
			$adresse=trim($_POST['adresse']);
			//echo"test des variables : $code   $adresse";
			$var->AddCode($code,$adresse);//ici il m'ajoute mon code ds une nouvelle instance
			var_dump($var);
			$var->affichecodes();//et ici je pense qu'il va encore chercher le code ds une nouvelle instance
			var_dump($var);
		//	$var[$code]=$adresse;
	}
	else if($action== 'removecode')
	{
		$code=trim($_POST['code']);
		$var[$code]='';
		
	}
	
	echo'Mise à jour réussie';

?> 
Et bien sur, quand j'envoie une requete POST pour ajouter un element a mon array smsCodeListing, il me recree systematiquement une nouvelle instance :evil:

Je suis preneur de toute aide,critique, indication, correction,...

Je précise que je code en PHP5 (enfin j'essaye)