Autor | Zpráva | ||
---|---|---|---|
stepanka Profil * |
#1 · Zasláno: 1. 12. 2011, 13:22:36
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 |
#2 · Zasláno: 1. 12. 2011, 15:08:19
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 * |
#3 · Zasláno: 1. 12. 2011, 16:05:08
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 * |
#4 · Zasláno: 1. 12. 2011, 16:20:03
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 * |
#5 · Zasláno: 1. 12. 2011, 16:21:32
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 * |
#6 · Zasláno: 1. 12. 2011, 16:36:08
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 * |
#7 · Zasláno: 1. 12. 2011, 16:50:35
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 * |
#8 · Zasláno: 2. 12. 2011, 09:38:45
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 |
#9 · Zasláno: 2. 12. 2011, 12:55:49
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 * |
#10 · Zasláno: 2. 12. 2011, 14:08:10
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 |
#11 · Zasláno: 2. 12. 2011, 14:17:33
Nemusí se nikde držet informace o předchozí velikosti souboru.
|
||
stepanka Profil * |
#12 · Zasláno: 2. 12. 2011, 14:35:26
Michal666:
A byla by tam nějaká výhoda oproti tomu mému řešení, které uvádím v [#4]? |
||
Michal666 Profil |
#13 · Zasláno: 2. 12. 2011, 14:42:14
Osobně nevím jak se zachová soubor který se nahrává přes ftp, když se pokusíte zamknout.
|
||
Časová prodleva: 12 let
|
0