IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Langage PHP Discussion :

différences entre mermory limit et php://temp/maxmemory


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2014
    Messages : 253
    Points : 164
    Points
    164
    Par défaut différences entre mermory limit et php://temp/maxmemory
    Bonjour,

    Dans un script j'utilise une méthode stockant des fichiers importants dans la mémoire temporaires. Plutôt que d'utiliser des variables en mémoire temporaire avec le risque de dépasser la limite de mémoire de php, j'utilise la ressource php://temp/ en spécifiant une taille de mémoire limite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ressource_memoire=fopen("php://temp/maxmemory:1000000000,"rb+");
    Ici j'ai choisi 1 GiBi ou 953 Mo environ selon les écritures.
    Je pensais contourner la fameuse limite de mémoire imposée dans le php.ini de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    				fseek($ressource_memoire,$taille_memoire); //on se place à la fin de la mémoire
    				fwrite($ressource_memoire,$donnees_brutes);// on enregistre le fichier par morceau
    Après avoir fait un test en lecture ecriture d'un fichier de + de 100 Mo et une limite de mémoire dans php.ini à 512 Mo, lors de l'écriture d'un fichier de quelques 500 Mo environ dans $ressource_memoire, php s'arrête et indique que la limite de mémoire est dépassée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    1000000000--256693184 //===> ici j'ai affiché en sortie du programme les variables : php://temp/maxmemory et le nombre d'octets effectivement inscrits dans $ressource_memoire.
    PHP Fatal error:  Allowed memory size of 536870912 bytes exhausted (tried to allocate 262149056 bytes) in C:...\**.php on line 304
    
    Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 262149056 bytes) in C:...\***.php on line 304
    La question est donc simple est ce que la ressource php://temp est limitée par la valeur de memory_limit et donc qu'il faut impérativement que memory_limit>php://temp/maxmemory ? Sinon quelle est l'erreur car j'ai tout fait pour que le programme ne stocke pas des variables de plus de 10 Mo ?

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2014
    Messages : 253
    Points : 164
    Points
    164
    Par défaut
    Visiblement j'obtiens le même résultat en utilisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    			$ressource_memoire=fopen("php://memory","rb+");
    Il est très probable à mon avis que php://temp/ utilise les mêmes limites que memory_limit() si cette dernière est inférieure. Par contre pourquoi s'arrêter à 262149056 bytes là où la limite est à 512 Mo ??

  3. #3
    Membre du Club
    Femme Profil pro
    particulier
    Inscrit en
    Juillet 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : particulier

    Informations forums :
    Inscription : Juillet 2020
    Messages : 51
    Points : 59
    Points
    59
    Par défaut
    Quelle est la solution employée ?
    Des fois que ça pourrait servir ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Différence entre des heures en PHP
    Par eeychenne dans le forum Langage
    Réponses: 3
    Dernier message: 18/12/2016, 12h33
  2. Calculer différence entre deux valeurs de type temp
    Par abbescr7 dans le forum Android
    Réponses: 20
    Dernier message: 24/05/2016, 11h04
  3. Calculer différence entre deux valeurs de type temp (Android)
    Par abbescr7 dans le forum Général Java
    Réponses: 19
    Dernier message: 21/05/2016, 14h35
  4. différence entre site web avec PHP et JEE
    Par IAGISG dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 11/04/2013, 12h46
  5. Réponses: 4
    Dernier message: 07/07/2006, 17h48

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