delete (unlink) fivhier qui ne sont pas dans une liste

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : delete (unlink) fivhier qui ne sont pas dans une liste

Re: delete (unlink) fivhier qui ne sont pas dans une liste

par jeorcal » 15 janv. 2011, 11:03

ça marche très bien et très rapide sur des milliers d'images

merci

Re: delete (unlink) fivhier qui ne sont pas dans une liste

par jeorcal » 15 janv. 2011, 08:02

Tu peux mettre les noms des fichiers, qui se trouvent dans le disque, dans un tableau 1 et les noms des fichiers, qui se trouvent dans la base, dans un tableau 2 puis utiliser la fonction array_diff() pour déterminer la différence entre ces 2 tableaux.
Le tableau 3 résultat de cette différence contiendra forcément les noms des fichiers qui doivent être supprimés.
Je vais essayer ça
merci

Re: delete (unlink) fivhier qui ne sont pas dans une liste

par sadeq » 14 janv. 2011, 22:58

Bonjour,

Tu peux mettre les noms des fichiers, qui se trouvent dans le disque, dans un tableau 1 et les noms des fichiers, qui se trouvent dans la base, dans un tableau 2 puis utiliser la fonction array_diff() pour déterminer la différence entre ces 2 tableaux.
Le tableau 3 résultat de cette différence contiendra forcément les noms des fichiers qui doivent être supprimés.

Extrait de la doc sur la fonction array_diff:
Exemple #1 Exemple avec array_diff()
<?php
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);

print_r($result);
?>

Les valeurs multiples dans array1 seront toutes traitées de la même façon. Ce qui affichera :

Array
(
[1] => blue
)

Re: delete (unlink) fivhier qui ne sont pas dans une liste

par stealth35 » 14 janv. 2011, 22:25

ha, c'est plus le unlink qui "chagrine", mais ça dépend de la taille de fichier nan ?
oui c'est vrai que celui la pourrait posé probleme

Re: delete (unlink) fivhier qui ne sont pas dans une liste

par moogli » 14 janv. 2011, 22:11

ha, c'est plus le unlink qui "chagrine", mais ça dépend de la taille de fichier nan ?

Re: delete (unlink) fivhier qui ne sont pas dans une liste

par stealth35 » 14 janv. 2011, 21:21

bof avec 2 aussi c'est un peu inutile, par contre pour un aussi grand nombre il y a des change que cela prenne plus de 30s qui est le temps limite d’exécution d'un script php (par défaut).


@+
le glob est assez rapide, ca passe largement :wink:

Re: delete (unlink) fivhier qui ne sont pas dans une liste

par moogli » 14 janv. 2011, 21:15

bof avec 2 aussi c'est un peu inutile, par contre pour un aussi grand nombre il y a des change que cela prenne plus de 30s qui est le temps limite d’exécution d'un script php (par défaut).


@+

Re: delete (unlink) fivhier qui ne sont pas dans une liste

par jeorcal » 14 janv. 2011, 21:04

avec 3 ou 4000 fichiers c'est impossible

Re: delete (unlink) fivhier qui ne sont pas dans une liste

par zounounous » 14 janv. 2011, 19:52

Tu pourrais aussi créer un nouveau dossier puis copier dedans tous les fichiers qui correspondent aux entrées de ta table.
Ensuite tu supprime l'ancien dossier.

Re: delete (unlink) fivhier qui ne sont pas dans une liste

par jeorcal » 14 janv. 2011, 19:49

euh .. bon je vais voir :-( merci

Re: delete (unlink) fivhier qui ne sont pas dans une liste

par moogli » 14 janv. 2011, 19:36

salut,

pas d'exemple de code mais l'idée

Tu sélectionne les noms de fichiers dans la table.
Tu récupère le nom de tous les fichiers du répertoire dans un tableau (aller je t'aide => glob)
lors du traitement de la requête tu vide le tableau des fichiers a partir des résultats du select
tu parcourt ce qui reste du tableau pour faire un unlink sur tous (bon attention au . et .. je sais plus si c'est retourné, et aussi au fait qu'il ne s'agisse pas de répertoire :))



@+

delete (unlink) fivhier qui ne sont pas dans une liste

par jeorcal » 14 janv. 2011, 18:51

Bonjour

j'ai des noms de fichier dans une base de données SELECT files from products
j'ai des fichiers dans un dossier products_files

Je voudrais supprimer tous les fichiers du dossier products_files qui ne sont pas dans ma table products

comment faire ? ...avec un petit exemple de code

merci