Autor Zpráva
Keilew
Profil
Zdravím,
zatím jsem nenašel uspokojivou odpověď na otázku, jak zjistit pomocí PHP, že se souborem, kterých chci číst, je právě manipulováno přes FTP (je přepisován). Důvod je prostý - může se stát, že čtu soubor, který není momentálně úplný, což může způsobit problémy. Hledal jsem, ale nalezl jsem pouze řešení, která požadují jistou inteligenci na straně práce s FTP, což je ale v mém případě nereálné. Konkrétně třeba přejmenování uploadovaného souboru na finální název až po úplném dokončení procesu (temporary file). Zámky flock() nefungují, resp. upload přes FTP negeneruje potřebný příznak (zřejmě), který by uměly zachytit. Nějaký nápad, jak na to?
Majkl578
Profil
Asi jediné schůdné a bezpečné řešení bude to tebou zmíněné -- soubor nahrávat s dočasným názvem a po nahrání jej přejmenovat.
Keilew
Profil
Těžko to ale vynucovat při ručním uploadu...
Davex
Profil
Keilew:
Pokud nemůžeš předem ovlivnit obsah nahrávaného souboru a dát si na konec nějakou nezaměnitelnou značku, tak snad zbývá jen nečíst příliš čerstvé nebo bobtnající soubory.
Alphard
Profil
Právě jsem chtěl navrhnout v nějakých intervalech kontroloval soubory, zapisovat si jejich velikost a když při dalším přístupu bude stejná, zahájit nějaké zpracování, ale Davex mě předběhl během testu. filesize() mi spolehlivě vrací postupně narůstající velikost nahrávaného souboru.
Keilew
Profil
Díky za ten nápad s filesize(), je to dostatečně dobré řešení.
suvel
Profil
Nejsem si na 100 % jistý, ale myslím si, že soubor nejde otevřít pro zápis, pokud není celý načtený. Pak by to bylo jednodušší, nebylo by třeba zjišťovat filesize a stačil by tenhle jednoduchý test.
Keilew
Profil
No povedlo se mi to, proto to řeším.
Str4wberry
Profil
Co na to jít z jiné strany. Nešlo by nějak zabránit vůbec tomu, aby byl důvod právě nahrávaný soubor používat?

Tedy se soubory na FTP manipulovat ve stylu tohoto? (I když to také není 100%.) Tj. nejprve nahrát a potom přejmenovat nebo nahrát soubory do nové složky a na jednom místě změnit umístění.
Keilew
Profil
To by šlo, kdybych mohl ovlivnit způsob nahrávání na FTP, ale to dělají vedle lidí i jiné neovlivnitelné systémy.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: