Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3177 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Segmenter une grosse variable en bouts d'un Mo

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Segmenter une grosse variable en bouts d'un Mo

n°2028274
Thordax
Shop smart. Shop S-Mart !
Posté le 11-10-2010 à 10:26:44  profilanswer
 

Je souhaite scinder une grosse variable en bouts d'un méga, ce sans faire exploser la mémoire. J'avais pensé à des substr les uns à la suite des autres, ou un array_slice.
 
Mais en gros, je voudrais avoir une syntaxe s'approchant de : $ma_big_variable[0:5] un peux comme en C++, c'est possible ? :d


Message édité par Thordax le 11-10-2010 à 10:27:00

---------------
Atari 520 ST 256 Ko
mood
Publicité
Posté le 11-10-2010 à 10:26:44  profilanswer
 

n°2028284
flo850
moi je
Posté le 11-10-2010 à 10:51:32  profilanswer
 

tu ne peux pas faire ça au chargement de ta grosse variable ?

n°2028430
Thordax
Shop smart. Shop S-Mart !
Posté le 11-10-2010 à 17:40:16  profilanswer
 

nope, ma grosse variable est le résultat d'un déchiffrement d'une donnée via une fonction encapsulée dans une DLL externe au code PHP, donc impossible ...
 
Je vais voir ce que donnent des substr mis à la chaine.


---------------
Atari 520 ST 256 Ko
n°2028506
stealth35
Posté le 12-10-2010 à 09:41:05  profilanswer
 

tu peux la déchiffrer dans un fichier temporaire, et faire ce que dit flo après

n°2028534
Thordax
Shop smart. Shop S-Mart !
Posté le 12-10-2010 à 11:14:06  profilanswer
 

Le problème de cette opération, c'est que mettre la variable de 50 megs dans mon fichier temporaire me prend 10 secondes facile, donc c'est pas top optimisé côté temps !


---------------
Atari 520 ST 256 Ko
n°2028582
esox_ch
Posté le 12-10-2010 à 12:59:00  profilanswer
 

Non mais attend, réfléchis.
Tu ne veux pas mettre ton fichier en RAM car ça te bouffe trop de RAM.
Tu ne veux pas mettre ton fichier en tmp sur le HDD parce que trop lent.
 
Concrètement, tu veux qu'il soit stocké ou ton truc?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2028588
stealth35
Posté le 12-10-2010 à 13:49:11  profilanswer
 

y'a une solution, tu peux déchiffrer en stream avec mdecrypt avec le wrapper php://filter
EDIT : ou faire ton filtre custom

Message cité 1 fois
Message édité par stealth35 le 12-10-2010 à 14:25:01
n°2028651
Thordax
Shop smart. Shop S-Mart !
Posté le 12-10-2010 à 16:20:18  profilanswer
 

esox_ch a écrit :

Non mais attend, réfléchis.
Tu ne veux pas mettre ton fichier en RAM car ça te bouffe trop de RAM.
Tu ne veux pas mettre ton fichier en tmp sur le HDD parce que trop lent.

 

Concrètement, tu veux qu'il soit stocké ou ton truc?


Je veux bien le monter en RAM une fois, mais taper dans le fichier monté en RAM ensuite. Le problème est que je ne peux pas taper dans la data direct sans doubler cette valeur à un moment, ne serait-ce que pour piocher des segments de cette data :/ A moins que tu ne connaisses un biais !

Message cité 1 fois
Message édité par Thordax le 12-10-2010 à 16:20:28

---------------
Atari 520 ST 256 Ko
n°2028653
Thordax
Shop smart. Shop S-Mart !
Posté le 12-10-2010 à 16:21:13  profilanswer
 

stealth35 a écrit :

y'a une solution, tu peux déchiffrer en stream avec mdecrypt avec le wrapper php://filter
EDIT : ou faire ton filtre custom


C'est une méthode de chiffrement particulière, là dessus, impossible de procéder autrement que la méthode du protocole qui lui est associée (protocole EBICS bancaire)


---------------
Atari 520 ST 256 Ko
n°2028660
esox_ch
Posté le 12-10-2010 à 16:29:27  profilanswer
 

Attend j'ai pas compris pourquoi ça devrait doubler à un moment :heink:
Tu peux expliquer plus en détails?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
mood
Publicité
Posté le 12-10-2010 à 16:29:27  profilanswer
 

n°2028847
flo850
moi je
Posté le 13-10-2010 à 09:43:52  profilanswer
 

Thordax a écrit :


Je veux bien le monter en RAM une fois, mais taper dans le fichier monté en RAM ensuite. Le problème est que je ne peux pas taper dans la data direct sans doubler cette valeur à un moment, ne serait-ce que pour piocher des segments de cette data :/ A moins que tu ne connaisses un biais !


 
 
tu dois faire quoi de tes segment  
est ce que qq chose du genre :  

Code :
  1. $grosBout = "";/*2Go*/
  2.   $debut= 0 ;
  3.   $pas= 20 *1024* 1024;
  4.   do{
  5.       //si substr est efficace niveau ram ( pas testé )
  6.       $segment  = substr($grosBout, $debut, $pas);
  7.       //sinon il faut faire la parcours à la main
  8.       traiteSegment($segment);
  9.       $debut += $pas;
  10.    }while(strlen(segment));


 
au pire tu consommes sizeof(grosBout ) + sizeof(segment)

n°2029015
Thordax
Shop smart. Shop S-Mart !
Posté le 13-10-2010 à 17:02:43  profilanswer
 

esox_ch a écrit :

Attend j'ai pas compris pourquoi ça devrait doubler à un moment :heink:
Tu peux expliquer plus en détails?


J'ai cru que ça doublerait car je pensais que le substr allait recopier la data d'origine puis la tronquer ensuite, donc faire une explosion en mémoire, mais après tests, ce n'est pas le cas :d

flo850 a écrit :


 
 
tu dois faire quoi de tes segment  
est ce que qq chose du genre :  

Code :
  1. $grosBout = "";/*2Go*/
  2.   $debut= 0 ;
  3.   $pas= 20 *1024* 1024;
  4.   do{
  5.       //si substr est efficace niveau ram ( pas testé )
  6.       $segment  = substr($grosBout, $debut, $pas);
  7.       //sinon il faut faire la parcours à la main
  8.       traiteSegment($segment);
  9.       $debut += $pas;
  10.    }while(strlen(segment));


 
au pire tu consommes sizeof(grosBout ) + sizeof(segment)


Yep merci beaucoup pour ton bout de code, c'est nickel chrome ! :jap:


---------------
Atari 520 ST 256 Ko
n°2029016
flo850
moi je
Posté le 13-10-2010 à 17:03:42  profilanswer
 

j'envoi la facture a quelle banque :d ?

n°2029018
Thordax
Shop smart. Shop S-Mart !
Posté le 13-10-2010 à 17:06:15  profilanswer
 

Je ne donne pas ce genre d'infos [:gidoin]


---------------
Atari 520 ST 256 Ko

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Segmenter une grosse variable en bouts d'un Mo

 

Sujets relatifs
Question simple : destruction variable automatiqueVariable d'une popup à la page mère
[solved]variable prédéfinie par htaccess ?passer une variable dans la clause where ... besoin d'aide
initialisation dynamique de variable ou constante[SQLSERVER]Job avec un nom de db variable
variable en urlAlimenter une plage grace à une variable tableau
Variable et XPathMacro pour copier un tableau de tableau variable vers Word
Plus de sujets relatifs à : Segmenter une grosse variable en bouts d'un Mo


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR