JeuWeb - Crée ton jeu par navigateur
[PHP 5.3] Supprimer un Objet de la mémoire - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [PHP 5.3] Supprimer un Objet de la mémoire (/showthread.php?tid=6300)



[PHP 5.3] Supprimer un Objet de la mémoire - Furukoo - 08-08-2012

Bonjour à tous

Dans le script suivant, l'objet $it n'est pas raffraichit à chaque passage de la boucle :

Code PHP :
<?php

$lm
=13444254743058;

$c=array();

$l=0; // loop counter
while($l <= 20){
$it=new APCIterator('user','%fv3%');
foreach(
$it as $k=>$v){
if(
substr($k,0,14)>$lm){
array_push($c,$v['value']);
}
else{
// echo $v['value'];
}
}
if(
count($c)!=0){ksort($c); echo'['.join(',',$c).']'; exit;}
unset(
$it);
$l++;
time_sleep_until(microtime(true)+0.2);
}
?>

Une idée ?


RE: [PHP 5.3] Supprimer un Objet de la mémoire - Plume - 08-08-2012

Comment tu vérifies que $it n'est pas rafraichi ?


RE: [PHP 5.3] Supprimer un Objet de la mémoire - Furukoo - 08-08-2012

(08-08-2012, 02:32 PM)_who a écrit : Comment tu vérifies que $it n'est pas rafraichi ?

Je fais tourner 2 scripts dans 2 fenêtres différentes :

-> 1 script de lecture qui boucle en attente
-> 1 script d'écriture

Je lance le script de lecture avec la boucle d'attente ...
Je lance le script d'écriture et que le script de lecture sorte de sa boucle d'attente
et me retourne le résultat.

C'est expérimental :

Script d'écriture :

Code PHP :
<?php

$ts
=microtime(true)*10000;
$c=$ts.'fv3';

$msg=stripslashes('{"D":"test yop","U":"Yvan","c":4'.',"t":'.$ts.'}');
// $j=json_encode(array('P'=>'fv3','t'=>$ts,'RN'=>'00000000000000','D'=>stripslashes('test')));

apc_add($c,$msg); // stocke en mémoire

$a=array();
foreach(new
APCIterator('user','%fv3%') as $k=>$v){
if(
substr($k,0,14)<($ts-150000)){
apc_delete($k); // delete les vieux messages + de 15s
}
else{
$a[$k]=$v['value'];
}
}
sort($a);
foreach(
$a as $v){
echo
$v.'</br>';
}
?>
Le script d'écriture dimentionne un buffer dynamique.


RE: [PHP 5.3] Supprimer un Objet de la mémoire - Maks - 08-08-2012

Rassure moi, tu donnes parfois un nom de plus de 3 lettres à tes variables ? ^^


RE: [PHP 5.3] Supprimer un Objet de la mémoire - Furukoo - 08-08-2012

(08-08-2012, 03:09 PM)Maks a écrit : Rassure moi, tu donnes parfois un nom de plus de 3 lettres à tes variables ? ^^
Smile oui des fois j'utilise 4 lettres par exemple je rajoute un 's' si c'est une collection !

Maks -> collection d'objets Mak

J'ai l'impression que c'est l'objet APCIterator qui reste en mémoire.
Quelqu'un à déjà utilisé APC ?


RE: [PHP 5.3] Supprimer un Objet de la mémoire - niahoo - 08-08-2012

Ben c'est pas un peu le but de APC de rester en mémoire en même temps ?


RE: [PHP 5.3] Supprimer un Objet de la mémoire - Maks - 08-08-2012

(08-08-2012, 03:25 PM)Furukoo a écrit :
(08-08-2012, 03:09 PM)Maks a écrit : Rassure moi, tu donnes parfois un nom de plus de 3 lettres à tes variables ? ^^
Smile oui des fois j'utilise 4 lettres par exemple je rajoute un 's' si c'est une collection !

Maks -> collection d'objets Mak

Ahah bien vu, je peux parler avec mon pseudo Big Grin


RE: [PHP 5.3] Supprimer un Objet de la mémoire - Furukoo - 08-08-2012

(08-08-2012, 03:28 PM)niahoo a écrit : Ben c'est pas un peu le but de APC de rester en mémoire en même temps ?
Oui c'est ce que je recherche. Plutôt que d'écrire sur des fichiers j'essaye de lire et d'écrire en mémoire avec le module apc.
J'ai besoin d'un buffer dans ce genre : http://fr.wikipedia.org/wiki/Buffer_circulaire
Je pensais pouvoir stocker mes données grâce aux functions suivantes :
http://www.php.net/manual/fr/ref.apc.php

Une idée ?