Du bon usage des tableaux en $_SESSION ?

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Zecat, 29 Mars 2013.

  1. Zecat
    Zecat WRInaute accro
    Inscrit:
    1 Mars 2005
    Messages:
    9 176
    J'aime reçus:
    0
    J'ai une petite question pour les spécialistes du truc ...


    Voila le code support de ma question :

    Code:
    <?php
    $tab_xref=array();
    
    if (isset($_SESSION['tab_xref']) === false)
    {
    	$sql_base_table="xref";
    
    	$sql_query = "SELECT * FROM ".$sql_base_table;
    	$sql_result_query = mysql_query($sql_query) or die("Load des xref impossible");
    
    	while($sql_row = mysql_fetch_array($sql_result_query))
    	{
    		$cle=$sql_row['cle'];
     		$tab_xref[$cle] =  $sql_row[datas];
    	}
    	$nb_requetes++;
    	$_SESSION['tab_xref']=$tab_xref;
    }
    else
    {
    	$tab_xref=$_SESSION['tab_xref'];
    }
    ?>
    En clair, lors de l'affichage de la premiere page de la session, je colle dans un "tableau session" ($_SESSION['tab_xref']) une series d'infos fixes issues de la bdd et comme elles sont fixes, lors des pages suivantes, je ne fais que recupérer le "tableau session" dans un "tableau local" ($tab_xref).

    Donc en l'état, je travail ensuite dans mon code avec $tab_xref[$val] pour accéder à l info voulue.

    Un truc me titille : est ce une obligation de travailler avec un tableau local ou puis-je travailler directement avec le tableau session ($jelis=$_SESSION['tab_xref'][$val];), ce qui evitera a chaque fois une recopie du tableau session vers le tableau local.

    Question connexe : si c'est possible, quid en termes de performances (le tableau session est il plus lent en accès que le tableau local ?).
     
  2. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 192
    J'aime reçus:
    1
    A mon avis c'est la même chose mais c'est simple a vérifier tu fait un :
    print_r($_SESSION['tab_xref'])
    et un
    print_r($tab_xref)
    ça devrait renvoyer le même chose ;-)
    Après je suis pas certains que la recopie soit une grosse optimisation en terme de temps il n'y a que la mémoire qui risque d'y gagner si c'est de la grosse data (mais bon c'est avec les petites goutes de pluie que les rivières se forment).

    Si c'est identique et que ça fonctionne, je voie pas en quoi une variable fut elle de session serait moins ou plus accessible qu'une autre ???
    En revanche de part sa nature (prise en compte rapide dans le processus apache / php) il y a peut être une chance qu'elle soit mappé plus proche du code dans la mémoire ce qui pourrait faire gagner du temps avec les mouvement de pointeurs mais c'est totalement "utopique" comme remarque. Après on pourrait argumenter que pour les mêmes raisons une variable de session a plus de chance d'être dans les caches de bas niveau mais là encore c'est de la supputation.

    Sinon, comme je sais que tu est coutumier de la technique, pour des datas à la con qui ne changent pas tous les jours que je ne souhaite pas chercher en base tous les jours dans des objets j'ai mis en place des fichiers de caches physiques qui font sauter les accès base. Si tu as pas trop de tableaux a mémoriser ça pourrait grandement changer le résultat d'includer un micro script php qui contient tes variables.
     
  3. Zecat
    Zecat WRInaute accro
    Inscrit:
    1 Mars 2005
    Messages:
    9 176
    J'aime reçus:
    0
    j utilsie aussi assez souvent les caches sur disques (ca allege le bdd mais ca reste un acces physique au disque). La c'est pour allez chercher les derniers pouième de milliseconde ... en mémorisant une partie d ela chose dans des tableau de session ...

    Je viens de faire un petit bench et a priori je vois pas de variation mesurable (ou alors faut vraiment boucler en masse et en plus une fois c'est l un une fois l'autre - donc egalité) entre des accès a des $tab ou a des $_session['tab'] ...
     
  4. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 192
    J'aime reçus:
    1
    ouep un mal pour un bien ou un bien pour un mal ???
    La comparaison mémoire / disque ou mémoire / base est sans appel la mémoire sera tjs plus performante c'est certain mais entre un accès base et un accès fichier on peut se poser des questions surtout si tu cherche a gratter des miettes.
    C'est super dépendant de l'architecture. tes fichiers peuvent être sur la même machine qui exécute le processus php mais pas forcement, idem la base peut être local ou sur une structure déportée sur le réseau ... Bref faut savoir comment est l'architecture pour commencer a espérer gagner du temps et la solution sera pas forcement la même pour tous.

    chez moi sur mes sites j'ai un mode "débug" qui est fait a partir d'une variable de session (bool). si c'est sur "true" le cms fait des traitements amont et aval don notamment des prise de chrono, log de requêtes, .... ça me permet de mesurer en live un changement de code et c'est super pratique. Certes j'utilise pas tous les jours mais quand je gratte la milliseconde c'est important de voir facilement.
     
  5. Zecat
    Zecat WRInaute accro
    Inscrit:
    1 Mars 2005
    Messages:
    9 176
    J'aime reçus:
    0
    oui c'ets vrai qu'un cluster avec des frontaux, des serveurs de datas et un serveur bdd (avec bdd en ram tant qu'a faire) c'est l'ideal :mrgreen: Mais on a pas tous l'occasion d'en disposer :wink:
     
Chargement...
Similar Threads - usage tableaux $_SESSION Forum Date
WORDPRESS Woocommerce, vos astuces pour réduire CPU usage et serveur stress ? e-commerce 22 Juin 2018
Usages et limites d'un téléphone mobile SANS abonnement Le café de WebRankInfo 11 Mars 2017
question concernant memory_get_usage Développement d'un site Web ou d'une appli mobile 11 Mai 2015
usage de navigateurs web sur l'Ile de la Réunion Demandes d'avis et de conseils sur vos sites 18 Avril 2014
Du bon usage de balise ALT Référencement Google 29 Janvier 2014
Nomd de domaine nom de famille usage illegitime Droit du web (juridique, fiscalité...) 4 Octobre 2013
URL rewriting usage final ? Débuter en référencement 7 Juillet 2013
L’usage de la marque d’un concurrent n’est pas de la concurrence déloyale Droit du web (juridique, fiscalité...) 12 Février 2013
Comparatif d'usage des Like vs. Twitts vs. +1 (G+) Autres réseaux sociaux 30 Novembre 2011
Comdamnation pour parasitisme ou usage de sites satellites trop nombreux Droit du web (juridique, fiscalité...) 4 Novembre 2011
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice