Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: DirectoryIterator i cron
Forum PHP.pl > Forum > PHP
Qss
Witam,

Na serwerze mam folder uploads, w którym wrzucam sobie foldery ze zdjęćmi.. Owy skrypt odpala się co minute za pomocą Crona i sprawdza czy są jakieś nowe pliki do przeniesienie.
Problem tkwi w tym, że gdy plik jest jeszcze wrzucany odpala się skrypt i zaczyna już na nim operować przez co przetwarza tylko cześć obrazu.. Jak sprawdzić czy dany plik jest juz całkowicie wgrany na FTP zanim cokolwiek zacznie się z nim dziać.
próbowałem dodać ifa z $file->isReadable() ale widocznie plik podczas wrzucania jest do odczytu.
Pyton_000
Musiałbyś sprawdzać log serwera FTP pod tym kątem.
Xelah
1. Upload robisz do pliku tymczasowego, na przykład image.jpg.tmp. Po skończeniu zmieniasz nazwę na image.jpg. Twój iterator omija wszystko z końcówką .tmp.
2. Sprawdzasz mtime pliku, i jeśli jest mniejszy niż, powiedzmy, 2 sekundy od obecnego czasu to omijasz plik. Nie jest to tak pewne jak zmiana nazwy pliku, ale na pewno w miarę bezpieczne. Chyba, że masz ogromne lagi przy uploadzie, ale zawsze możesz poeksperymentować z czasem oczekiwania.

Edit

3. Jeśli jesteś na linuxie i możesz odpalić to:
  1. exec("lsof | grep /path/to/image.jpg", $output);
  2. if (count($output)) {
  3. echo 'Plik w użyciu przez inny proces';
  4. } else {
  5. echo 'Plik gotowy do przeniesienia';
  6. }


to jest to najbezpieczniejsza opcja. Ale jeśli to jakiś shared host a nie twój serwer to ta opcja odpada.
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.