Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Sprawdzenie czy plik jest przesłany w całości
Forum PHP.pl > Forum > PHP
v1ru5
Witam, proszę o podpowiedź jak rozwiązać następujący problem:

Program zewnętrzny tworzy plik zip zawierający zdjęcia i plik xml, zajmuje on około 150mb, następnie wrzuca go przez ftp.
Skrypt w php uruchamiany z crona sprawdza sobie czy plik istnieje, parsuje go sobie i przenosi do archiwum.
Do tego momentu jest wszystko ok.
Problem w tym, że wysłanie pliku przez program czasami chwilkę trwa, a jak w trakcie wysyłania uruchomi się parser przez crona, to traktuje go jako kompletny plik.
Moje pytanie: jak sprawdzić czy wysyłanie pliku się zakończyło ?
Serwer to home.pl, próbowałem coś z lsof przez phpowe system() ale nic nie zwraca, pewnie zablokowane.
Myślałem żeby może sprawdzić w odstępach 5 sekundowych sprawdzić powiedzmy 3x md5_file i tylko te pliki parsować co mają takie same wyniki, ale czy istnieje lepsze, szybsze rozwiązanie i czy to jest dobre ?
wookieb
Ja bym wraz z plikiem przesyłał w oddzielnym pliku jego checksum md5. Wtedy porównasz czy md5 z pliku jest zgodny z md5 odczytywanego.
Rozwiązanie jak najbardziej ok.
v1ru5
Problem w tym że nie mam dostępu do tego co wysyła program.
Próbuję coś jeszcze z stat() 'mtime' ale nie wiem jeszcze czy to sie zmienia w trakcie wysyłania.
wookieb
A spróbuj taki zip otworzyć za pomocą ZipArchive. Teoretycznie niekompletny ZIP nie powinien dać się rozpakować, jeżeli w ogóle otworzyć.
v1ru5
To rozwiązanie z ZipArchive działa idealnie, bez czekania 15 sekund, przy okazji weryfikuje czy plik jest wysłany poprawnie smile.gif
Wielkie dzięki za pomoc, pozdrawiam guitar.gif
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.