You are not logged in.

  • Login

1

Friday, December 16th 2011, 3:29am

Opendir, mehrere Verzeichnisse (Cronjob für Bilder löschung)

Hallo zusammen,

ich möchte ein Cronjob erstellen, mit dem ich mehrere Verzeichnisse auslesen kann und dessen Bilder löschen kann.
Hier das Script:

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
$ordner = array('images/finish/','images/finish/parfum/');
if ($handle = opendir($ordner)) {
  while (false !== ($file = readdir($handle))) {
   $sub = substr($file, -4);
    if ($sub == ".png" || $sub == ".jpg" || $sub == ".gif" || $sub == ".bmp")
     {
      unlink($sub);
 
     }
  } // WHILE Schleife schließen                                           
   closedir($handle);
}

Das funktioniert nicht, ich bekomme den Fehler:

Quoted

Warning: opendir() expects parameter 1 to be string, array given in /www/htdocs/w00b2576/testsystem/search/cronjob.php on line 3

2

Friday, December 16th 2011, 7:26am

Du übergibst opendir das gesamte Array, das funktioniert nicht. Setz drum herum einfach eine Foreachschleife, die das Array durchiteriert.

PHP Quellcode

1
2
3
4
$ordner = array('images/finish/','images/finish/parfum/');
foreach($ordner as $o){
    //....
}

3

Friday, December 16th 2011, 3:30pm

Jetzt habe ich das so gemacht:

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$ordner = array('images/finish/','images/finish/parfum/');
foreach($ordner as $o){
if ($handle = opendir($o)) {
  while (false !== ($file = readdir($handle))) {
   $sub = substr($file, -4);
    if ($sub == ".png" || $sub == ".jpg" || $sub == ".gif" || $sub == ".bmp")
     {
      unlink($sub);
 
     }
  } // WHILE Schleife schließen                                           
   closedir($handle);
}
}
?>

Bekomme aber die Meldung

Quoted

Warning: unlink(.png) [function.unlink]: No such file or directory in /www/htdocs/w00b2576/testsystem/search/cronjob.php on line 9


So geht das auch nicht:

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$ordner = array('images/finish/','images/finish/parfum/');
foreach ($ordner as $ordnere) {
    $handle = opendir($ordnere);
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            $sub = substr($file, -4);
            if ($sub == ".png" || $sub == ".jpg" || $sub == ".gif" || $sub == ".bmp") {
                unlink($file);
            }
        }
    }
    closedir($handle);
}
?>

Fehler:

Quoted

Warning: unlink(16-39-57_0.jpg) [function.unlink]: No such file or directory in /www/htdocs/w00b2576/testsystem/search/cronjob.php on line 9

Und so ebenfalls nicht:

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
for ($i = 0; $i < count($ordner); $i++) {
      if ($handle = opendir($ordner[$i])) {
        while (false !== ($file = readdir($handle))) {
               $sub = substr($file, -4);
 
            if ($sub == ".png" || $sub == ".jpg" || $sub == ".gif" || $sub == ".bmp") {
                  unlink($sub);
 
             }
        } // WHILE Schleife schließen                                           
 
          closedir($handle);
    }
}
?>

Fehler:

Quoted

Warning: unlink(.png) [function.unlink]: No such file or directory in /www/htdocs/w00b2576/testsystem/search/cronjob.php on line 9



So geht es nun

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$ordner = array('images/finish/','images/finish/parfum/');
foreach ($ordner as $ordnere) {
    $handle = opendir($ordnere);
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            $sub = substr($file, -4);
            if ($sub == ".png" || $sub == ".jpg" || $sub == ".gif" || $sub == ".bmp") {
                unlink($ordnere.$file);
            }
        }
    }
    closedir($handle);
}

This post has been edited 3 times, last edit by "Sumale.nin" (Dec 16th 2011, 4:25pm)


4

Friday, December 16th 2011, 5:12pm

Nur ein Tipp mit dem's viel einfacher, fehlerfreier und schneller geht:
http://php.net/glob

5

Friday, December 16th 2011, 8:37pm

Danke für den Tipp!

Similar threads

Social bookmarks