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

PHP & Base de données Discussion :

Fonction de gestion de bande passante pour un client


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2015
    Messages : 120
    Par défaut Fonction de gestion de bande passante pour un client
    Bonsoir,
    Je suis en train de développer une fonction pour gérer la bande passante de téléchargement sur serveur (upload) pour les clients afin de l'adapter avec Prestashop.
    Alors, chaque client ne doit pas passer maximum 500 Mo d'upload de fichiers et d'images par mois sachant que les fichiers et les images sont éparpillés sur plusieurs modules et donc tables dans la base.
    Je veux développer une fonction qui calcule les tailles des fichiers uploadés pou un client et refuser l'upload si le max est atteint.
    De plus il affiche combien sa taille par rapport au max:
    "Vous avez X Mo /500Mo"

    Voici mon code pour le calcul de la taille d'un fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function getFolderSize($path){
    	$size = 0;
    	foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $file){
    		$size += $file->getSize();
    	}
     
    	$factor = (int)(log($size, 1000));
    	$units = ['B', 'K', 'M', 'G', 'T', 'P'];
    	$size = sprintf("%.2f", $size / pow(1000, $factor)) . $units[$factor];
     
    	return $size;
    }
    Il y a quelqu'un qui m'a dit cette tâche nécessite beaucoup de travail. Est ce vrai?

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Si chaque membre a son propre dossier
    {
    tu vérifier la taille du dossier avant de lui afficher un input file
    si c'est inférieur {
    tu l'affiche;
    et tu doit vérifier la taille du fichier avec du javascript avant de l'envoyé
    } sinon tu supprimer l'input,
    }
    else
    {
    tu dois incrémenter la taille de chaque fichier pour chaque membre dans un champs DB par exemple
    }

  3. #3
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Citation Envoyé par ramzi87 Voir le message
    Bonsoir,
    Il y a quelqu'un qui m'a dit cette tâche nécessite beaucoup de travail. Est ce vrai?
    Salut,
    ça implique effectivement des accès disque qui peuvent être coûteux. Mais tout dépend des volumes (fichiers et clients). A priori c'est clair que stocker le volume uploadé en BDD est moins coûteux.
    A+

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2015
    Messages : 120
    Par défaut re
    Bonjour,
    Pour chaque upload, on calcule la taille du fichier et on l'ajoute à la taille totale.
    Juste on voit le code pour les uploads des images, dans chaque coin.
    et on fait le nécessaire.
    c-a-d on vérifie pour chaque upload dans Prestahsop upload image,
    on met la condition pour tester.
    On met une fonction par exemple
    et on met la taille de l'image
    et id du site (ou nom d site ou ou)
    et cette fonction fait le calcul.

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2015
    Messages : 120
    Par défaut re
    Bonjour,

    Ce que j'ai compris que la classe Tools.php contient les méthodes nécessaires (getMaxUploadSize, fileAttachmentfileAttachment)
    donc je fais include pour mon fichier contenant la fonction pour tester?
    Pour la base je dois ajouter deux champs un qui contient la taille courante et autre taille_max (qui se diffère de client à autre selon l'inscription)

    Qui peut me donner des étapes à suivre ou un raisonnement clair?

    Cordialement.

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2015
    Messages : 120
    Par défaut re
    Voilà ce que j'ai pu faire mais il y a erreur (fonction sous Tools.php)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public static function UploadPermission($size1 = 0)
    {
    $context = Context::getContext();
    $sql = "select size,size_max from recap where id_custumor='."$context->customer->id".'";
    $value = Db::getInstance()->executeS($sql);
    $size1=$value['size']+$_FILES[]['SIZE'];
    if ($size1>$value['size_max'])
        echo 'Taille maximale atteinte!!';
    else
        $sql1 = "update recap set size='."$size1".'";
    }
    Fatal error: Class 'ToolsCore' not found in ../classes/PrestaShopAutoload.php(114) : eval()'d code on line 1

  7. #7
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2015
    Messages : 120
    Par défaut re
    Bonsoir,

    qui peut me dire si cette fonction marche bien ou non, je veux tester l'action d'upload dans prestashop pour ne pas dépasser la taille max des fichiers supportée pour chaque client dès son inscription:
    J'ai mis cette fonction dans la classe Uploader.php avec des autres fonctions pour tester l'action d'upload.

    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
    public function UploadPermission($file, $size1 = 0)
    	{
     
    		include("db.inc.php");
     
    		$cookie = new Cookie('psAdmin');
    		$email = $cookie->email;
     
    		$statement = $connexion->prepare("SELECT a.id_shop  FROM ps_employee_shop a, ps_employee b WHERE a.id_employee  = b.id_employee and b.email = :email");
    		$statement->execute(array(':email' => $email));
    		$row = $statement->fetch();
    		$id_shop = $row['id_shop'];
     
    		$statement1 = $connexion->prepare("SELECT size,size_max FROM recap WHERE id_store  = :id_shop");
    		$statement1->execute(array(':id_shop' => $id_shop));
    		$row = $statement1->fetch();
    		$size = $row['size'];
    		$size_max = $row['size_max'];
     
    		$size1 = $size + $file['size'];
     
    		if ( $size1 > $size_max)
     
    			echo 'Taille maximale atteinte!!';
     
    	else
    		{
    			$statement2 = $connexion->prepare("update recap set size= :size");
    			$statement2->execute(array(':size' => $size1));
    		}
    	}

Discussions similaires

  1. gestion de bande passante
    Par samuelo dans le forum Réseau
    Réponses: 6
    Dernier message: 05/06/2008, 12h04
  2. Guru Gestion de bande passante - HTB.init
    Par jordix dans le forum Réseau
    Réponses: 1
    Dernier message: 08/01/2007, 09h43
  3. limiter la bande passante pour un logiciel
    Par rare1 dans le forum Internet
    Réponses: 2
    Dernier message: 09/10/2006, 13h38
  4. bande passante pour serveur
    Par gIch dans le forum Développement
    Réponses: 1
    Dernier message: 06/07/2005, 21h18

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