Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Cron i usuwanie katalogów
Forum PHP.pl > Forum > Przedszkole
noob89
Witam,
Mam problem z cronem. Muszę usuwać pewne katalogi z serwera jeśli ostatnia edycja zawartości tego katalogu był co najmniej 10 godzin temu. I mam ustawionego crona który odpala się co dziennie o godzinie 3 w nocy. I mam nastepujący skrypt który jest wywoływany:
  1.  
  2. exec("pwd", $result);
  3. $curDir = substr($result[0],0,-8);
  4.   
  5. include $curDir.'/tools/constants.php';
  6. include $curDir.'/tools/tools.php';
  7.   
  8. $strPath = "../";
  9.  
  10.  
  11. $dir = opendir($strPath.UPLOAD_IMG_TEMP);
  12.  
  13. while($strFolderName = readdir($dir))
  14. {
  15.    if(($strFolderName != ".") && ($strFolderName != ".."))
  16.    {
  17.       $file = fopen($strPath.UPLOAD_IMG_TEMP.$strFolderName.'/info.txt', 'r');
  18.      
  19.       if($file === false)
  20.       {
  21.          echo 'Błąd: Brak pliku!';
  22.       }
  23.       else
  24.       {
  25.          while(!feof($file))
  26.          $intTimeCreate = fgets($file);
  27.         
  28.          fclose($file);
  29.         
  30.          $intTime = time() - 60*60*10;
  31.         
  32.          if($intTimeCreate < $intTime)
  33.             delete_directory($strPath.UPLOAD_IMG_TEMP.$strFolderName);
  34.       }
  35.    }
  36. }
  37.  
  38. closedir($dir);
  39.  


I jeśli wywołam skrypt normalnie to kasuje mi katalogi, ktore spełniają wymagany warunek. Ale jeśli odpalany jest już cron to nic  się nie wykonuje.


Proszę o pomoc,
Pozdrawiam
Tajgeer
Jaką komendę wydajesz dla crona?

Jeśli mówisz, że wywołany normalnie (z poziomu przeglądarki) skrypt kasuje katalogi, to zainteresuj się lynx.

l3l0
Coś mi się zdaje że z tym możesz mieć problem:
  1. exec("pwd", $result);


Zamiast tego skryptu możesz się spróbować pobawić z komendą find

Naprzykład ta komenda usunie wszystkie katalogi których status zmienił się więcej niż 599 minut temu.
  1. find /example/path -type d -cmin +599 -exec rm -fr "{}" \;



cron wyglądałby wtedy w ten sposób:
  1. 0 3 * * * root find /example/path -type d -cmin +599 -exec rm -fr "{}" \;
noob89
Hej,
Zrobiłem testy mojego skryptu i okazało się że jak wywoływany jest skrypt przez cron to przerwany jest on jak się rozpoczyna pętla while. Czyli z tego wychodzi że nie otwiera żądanego katalogu.

Cytat(l3l0 @ 4.02.2010, 19:59:04 ) *
cron wyglądałby wtedy w ten sposób:
  1. 0 3 * * * root find /example/path -type d -cmin +599 -exec rm -fr "{}" \;


Moja instrukcja wygląda tak:
  1. 28 9 * * * root find /home/users/testowy/public_html/test/uploadfiles/temp -type d -cmin +10 -exec rm -fr "{}" ;


Czyli z tego wychodzi że katalog, którego status nie zmienił się co najmniej 10 minut temu powinien zostać usunięty. I mam w katalogu temp inny katalog, który ostatni raz edytowany był wczoraj ale nie zostaje on usunięty. Coś musi być nie tak.
l3l0
Cytat(noob89 @ 5.02.2010, 09:34:51 ) *
Moja instrukcja wygląda tak:
  1. 28 9 * * * root find /home/users/testowy/public_html/test/uploadfiles/temp -type d -cmin +10 -exec rm -fr "{}" ;


  1. 28 9 * * * root find /home/users/testowy/public_html/test/uploadfiles/temp -type d -cmin +10 -exec rm -fr "{}" \;


Postestuj wcześniej tego finda.
ten "\" przed średnikiem jest istotny.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.