Autor Zpráva
stepanka
Profil *
Ahoj,

uměl by mi někdo prosím poradit?

Dělám konverzi mp4 souborů a součástí je kontrola, zda soubor je validní video, má správnou příponu, apod.
Jednou z kontrol by mělo být, zda soubor nenarůstá, aby se ho skript nepokoušel konvertovat, když se ještě kopíruje od uživatele (skript bude totiž spouštěn cronem).

Nevíte, jak nejlépe kontrolovat, zda už je soubor celý a nezvětšuje se jeho velikost? Zjišťovat velikost a v cyklu používat sleep()? Nevíte o něčem lepším?

Mockrát děkuju!
Alphard
Profil
Ať ho uživatel nahrává někam jinam. Pak se přejmenováním po kompletním uploadu docela atomicky objeví celý ve frontě.
stepanka
Profil *
Alphard:
Děkuju za reakci, ale to právě nepůjde. Uživatel si sám nahrává přes FTP videa a my pouze cronem spouštíme každou minutu kontrolu, zda existuje ve složce nové video ke zkonvertování. Ještě zkouším funkci flock(), ale zatím bez úspěchu.
stepanka
Profil *
Už to asi mám, vypadá to, že to dobře funguje takto:

private function checkLoading($filename) {
		
		$bool = true;
		$fp = @fopen($filename, 'r+');
		if(!@flock($fp, LOCK_EX | LOCK_NB)) {
    		//echo 'Soubor '.$filename.' se ještě nahrává...';
    		$bool = false;
		}
		@fclose($fp);
		
		return $bool;
}
okolojdouci
Profil *
stepanka:
spouštíme každou minutu kontrolu, zda existuje ve složce nové video ke zkonvertování

Přítomnost a velikost souborů si pamatujte, dalším průchodem ověřte přítomnost a shodu velikosti.
stepanka
Profil *
okolojdouci:
A jak bys rozlišoval, které už jsi zkontroloval, a které v tom dalším cyklu přibyly nové a je potřeba je teď zkontrolovat a až v dalším cyklu zkonvertovat? Jedině asi ukládat do databáze, to mi přijde docela složité na realizování (oproti tomu řešení, co jsem napsala já). Ale i tak moc děkuju.
okolojdouci
Profil *
stepanka:
Jedině asi ukládat do databáze, to mi přijde docela složité na realizování (oproti tomu řešení, co jsem napsala já).

To co píšeš, jsem před odesláním neviděl. Jednodušší to asi je, spolehlivost neumím posoudit.
stepanka
Profil *
okolojdouci:
Jasně chápu. Právě bych byla ráda, kdyby někdo uměl tu spolehlivost posoudit. S největší pravděpodobností by měl být každý soubor při kopírování uzamčen procecesem kopírování. Nevím jestli tam můžou nastat nějaké výjimky.
Michal666
Profil
Zjištění velikosti v PHP http://php.net/manual/en/function.stat.php. Možná je ale lepší kontrolovat datum poslední modifikace, pokud je rozdíl větší než třeba 2 minuty, tak se může video převést.
stepanka
Profil *
Michal666:
Děkuju za radu.

Možná je ale lepší kontrolovat datum poslední modifikace
To by taky šlo. Můžu se zeptat, proč si myslíš, že je to lepší?
Michal666
Profil
Nemusí se nikde držet informace o předchozí velikosti souboru.
stepanka
Profil *
Michal666:
A byla by tam nějaká výhoda oproti tomu mému řešení, které uvádím v [#4]?
Michal666
Profil
Osobně nevím jak se zachová soubor který se nahrává přes ftp, když se pokusíte zamknout.

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:

0