Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> DirectoryIterator i cron
Qss
post 6.06.2015, 09:33:00
Post #1





Grupa: Zarejestrowani
Postów: 141
Pomógł: 7
Dołączył: 22.02.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Pyton_000
post 6.06.2015, 09:39:08
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Musiałbyś sprawdzać log serwera FTP pod tym kątem.
Go to the top of the page
+Quote Post
Xelah
post 6.06.2015, 12:18:26
Post #3





Grupa: Zarejestrowani
Postów: 139
Pomógł: 24
Dołączył: 12.05.2013
Skąd: Hamburg

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Xelah 6.06.2015, 12:24:01
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 09:23