Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WordPress PHP Discussion :

Double incrémentation au chargement de page


Sujet :

WordPress PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    auto entrepreneur
    Inscrit en
    mai 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : auto entrepreneur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : mai 2019
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Double incrémentation au chargement de page
    bonjour,

    quand j'utilise la fonction suivante, qui incremente un compteur de vue et enregistre la date, l'incrementation se fait toujours en double soit en rafraichissant la page, soit au chargement et ce, tant que le cache du navigateur n'est pas efface.
    je suis en local avec wamp64, le navigateur est firefox et la fonction dans le fichier function.php dans wordpress. Le compteur est enregistre chaque fois dans un fichier txt.

    est ce un probleme connu et si oui comment le contourner? est ce que le probleme risque de persister avec le site sur un serveur reel?
    merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function updateCount($counter,$value) {
    	if (count($counter) == 1)  {
    		$counter[0] = $value;
    		array_unshift($counter,1);
    	} else {
     
    		if ($counter[1] == $value) {
    			$counter[0]++;	
    		} else {
    			array_unshift($counter,$value);
    			array_unshift($counter,1);
    		}
    	}
    	return $counter;
    }

  2. #2
    Membre extrêmement actif
    Avatar de Sodium
    Femme Profil pro
    Développeuse web
    Inscrit en
    avril 2014
    Messages
    1 760
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeuse web

    Informations forums :
    Inscription : avril 2014
    Messages : 1 760
    Points : 1 744
    Points
    1 744
    Billets dans le blog
    1
    Par défaut
    Heu il va falloir montrer dans quel contexte est appelée ta fonction, parce que là n'est clair ni ce que tu as dans tes variables, ni ce que tu en fais exactement, ça paraît très tordu.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    auto entrepreneur
    Inscrit en
    mai 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : auto entrepreneur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : mai 2019
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $ownerID32 = "BJSDDLKM";
    	$photo = "0EA4H2MG.jpg";
    	$content = file_get_contents("./../../data/users/" . $ownerID32 . "_count.txt");
    	$counterPhoto = json_decode($content, true);	
    	$currentTime = date("YmdHis");
    	$date32 = generate_code32($currentTime);
    	$value = substr($date32,0,4);
     
    	$counter = $counterPhoto[$photo]['displayGalleryByDay'];
    	$counterPhoto[$photo]['displayGalleryByDay'] = updateCount($counter,$value);
     
    	var_dump($counterPhoto[$photo]);
    	$serialized = json_encode($counterPhoto);
    	file_put_contents("./../../data/users/" . $ownerID32 . "_count.txt", $serialized);
    voici la partie de mon template de page qui apelle la fonction, c?est comme si elle s'executait 2 fois mais meme en assignant "" a $counterPhoto[$photo]['displayGalleryByDay'] a la fin, c'est pareil...

  4. #4
    Futur Membre du Club
    Homme Profil pro
    auto entrepreneur
    Inscrit en
    mai 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : auto entrepreneur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : mai 2019
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    voici le code du tenplate qui cause le probleme et je ne comprend pas du tout la cause...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    while ( have_posts() ) : the_post();
     
    	get_template_part( 'template-parts/content', 'page' );
     
    	function generate_code32($date_before){
    		$date_32 = "";
    		$year_before = (intdiv($date_before,10000000000) % 100);
    		$month_before = intdiv(($date_before % 10000000000),100000000);
    		$day_before = intdiv(($date_before % 100000000),1000000);
    		$hour_before = intdiv(($date_before % 1000000),10000);
    		$minute_before = intdiv(($date_before % 10000),100);
    		$time_before = ($date_before % 100) + ($minute_before * 60);
    		if (($year_before % 32) < 10) 
    		{
    			$date_32 = intdiv($year_before,32) . ($year_before % 32);
    		} else {
    			$date_32 = intdiv($year_before,32) . (chr(($year_before % 32) + ord("A") - 10));
    		}
    		if ($month_before < 10) 
    		{
    			$date_32 .= $month_before;
    		} else {
    			$date_32 .= (chr($month_before + ord("A") - 10));
    		}
    		if ($day_before < 10) 
    		{
    			$date_32 .= $day_before;
    		} else {
    			$date_32 .= (chr($day_before + ord("A") - 10));
    		}
    		if ($hour_before < 10) 
    		{
    			$date_32 .= $hour_before;
    		} else {
    			$date_32 .= (chr($hour_before + ord("A") - 10));
    		}
    		$xx = 32 * 32;
    		while ($xx >= 1) 
    		{
    			$temp_time = intdiv(($time_before % ($xx * 32)),$xx);
    			if ($temp_time < 10 ) 
    			{
    				$date_32 .= $temp_time;
    			} else {
    				$date_32 .= (chr($temp_time + ord("A") - 10));
    			}
    			$xx /= 32;
    		}
    		return $date_32;
    	}
    	function weekGenerate($currentTime){
    		$jd = gregoriantojd(substr($currentTime,4,2),substr($currentTime,6,2),substr($currentTime,0,4));
    		$jdRef = 2458645;
    		sscanf(jdtogregorian($jd - (($jd - $jdRef) % 7)),"%d/%d/%d",$m,$j,$a);
    		if ($m < 10){$m = "0" . $m;}
    		if ($j < 10){$j = "0" . $j;}
    		$weekFrom = generate_code32($a . $m . $j . "000000");
    		sscanf(jdtogregorian($jd - (($jd - $jdRef) % 7) + 6),"%d/%d/%d",$m,$j,$a);	
    		if ($m < 10){$m = "0" . $m;}
    		if ($j < 10){$j = "0" . $j;}
    		$weekTo = generate_code32($a . $m . $j . "000000");
    		$week = substr($weekFrom,0,4) . "-" . substr($weekTo,0,4);
    		return $week;
    	}
    	$counter = array();
    	function updateCount($counter,$value) {
    		if ($counter[0] == 0)  {
    			$counter[0] = "1_" . $value;
    		} else {
    			$pos = strpos($counter[0],"_");
    			if (substr($counter[0],$pos + 1) == $value) {
    				$counter[0] = (1 + substr($counter[0],0,$pos)) . substr($counter[0],$pos);
    			} else {
    				array_unshift($counter,"1_" . $value);
    			}
    		}
    		return $counter;
    	}
     
     
    	$currentTime = date("YmdHis");
    	$date32 = generate_code32($currentTime);
    	$week = weekGenerate($currentTime);
    	$photo = "0EA4H2MG.jpg";
    	$ownerID32 = "BJSDDLKM";
     
    	$counterPhoto = array();
     
     	$path = 'users/' . $ownerID32 . '_count.txt';
    	$content = file_get_contents("./wp-content/data/" . $path);
    	$counterPhoto = json_decode($content, true);
     
    	$ref = array("AllTime", "ByWeek", "ByYear", "ByMonth", "ByDay");
    	for ($y = 0;$y < 5;$y++) {
    		$type = "displayGallery" . $ref[$y];
    		if  ($y > 1) {$value = substr($date32,0,$y);} 
    		else {
    			if ($y == 1) {$value = $week;}
    			if ($y == 0) {$value = $counterPhoto[$photo]['UploadDate'];}
    		}
    		$counterPhoto[$photo][$type] = updateCount($counterPhoto[$photo][$type],$value);
    	}
    	var_dump($counterPhoto[$photo]);
    	$serialized = json_encode($counterPhoto,true);
    	echo json_encode($counterPhoto[$photo]);
    	file_put_contents('./wp-content/data/users/' . $ownerID32 . '_count.txt', $serialized);
     
    	// If comments are open or we have at least one comment, load up the comment template.
    	if ( comments_open() || get_comments_number() ) :
    		comments_template();
    	endif;
     
    endwhile; // End of the loop. ?>

Discussions similaires

  1. [chargement de page et balise html object]
    Par Patriarch24 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 08/03/2006, 12h12
  2. script de chargement de page
    Par freud dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/02/2006, 23h28
  3. [Librairies] Probleme player mp3+ chargement de page !
    Par Micronos59 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 08/01/2006, 10h36
  4. PHP 5 et chargement de page
    Par messier79 dans le forum Langage
    Réponses: 6
    Dernier message: 15/11/2005, 16h23
  5. Chargement de page trop long
    Par t_o_7_ dans le forum ASP
    Réponses: 2
    Dernier message: 19/09/2003, 19h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo