Autor | Zpráva | ||
---|---|---|---|
Lukáš112 Profil * |
#1 · Zasláno: 3. 5. 2009, 13:59:06
Ahoj mám takový problém a už si sním nevím rady. Mám funkci na generování náhledů obrázku ze složky
function Resizer( $filename, //cesta k souboru, ktery chcete zmensit $copypath, //cesta, kam zmenseny soubor ulozit $MaxWidth, //maximalni sirka zmenseneho obrazku $MaxHeight) //maximalni vyska zmenseneho obrazku { //zjistime puvodni velikost obrazku list($OrigWidth, $OrigHeight) = getimagesize($filename); //hodnota 0 v parametrech MaxWidth resp. MaxHeight znamena, //ze sirka resp. vyska vysledku muze byt libovolna if ($MaxWidth == 0) $MaxWidth = $OrigWidth; if ($MaxHeight == 0) $MaxHeight = $OrigHeight; //nyni vypocitam pomer zmenseni $pw = $OrigWidth / $MaxWidth; $ph = $OrigHeight / $MaxHeight; if ($pw > $ph) $p = $pw; else $p = $ph; if ($p < 1) $p = 1; //v p ted mame pomer pro zmenseni //vypocitame vysku a sirku zmenseneho obrazku $NewWidth = (int)$OrigWidth / $p; $NewHeight = (int)$OrigHeight / $p; //vytvorime novy obrazek pozadovane vysky a sirky $image_p = imagecreatetruecolor($NewWidth, $NewHeight); //otevreme puvodni obrazek se souboru $image = imagecreatefromjpeg($filename); //a okopirujeme zmenseny puvodni obrazek do noveho imagecopyresampled($image_p, $image, 0, 0, 0, 0, $NewWidth, $NewHeight, $OrigWidth, $OrigHeight); //a ulozime imagejpeg($image_p, $copypath, 100); } a dále mám složku, ve které bych chtěl projít všechny soubory a udělat z nich náhledy mám to takhle $MaxWidth=143; $MaxHeight=100; $slozka="../foto/".$adresa."/"; $obsah = scandir($slozka); foreach($obsah as $soubor) { if (!ereg("t_", $soubor)){ $filename="../foto/".$adresa."/".$soubor.""; $copypath="../foto/".$adresa."/t_".$soubor.""; Resizer($filename,$copypath,$MaxWidth,$MaxHeight); } tento script se mě při více fotkácjh tak asi 80-ti nedokoncí najednou vzdycky kdyz ho spustím tak na potřetí. kvuli tomu jsem tam dal i ereg. abych ho mohl bezproblému spustit znova. myslím si že to nějak souvisí s dobou trvání scriptu. Mám to na WZ. a nevím jestli to právě není ten problém. Všem kterí by věděli jak mi poradit děkuji. |
||
Lukáš112 Profil * |
#2 · Zasláno: 3. 5. 2009, 14:00:25
Zapoměl jsem tam vložit na konec scriptu }. sorry
|
||
Lukáš112 Profil * |
#3 · Zasláno: 3. 5. 2009, 14:01:18
Poradíte mi?
|
||
Jan Tvrdík Profil |
#4 · Zasláno: 3. 5. 2009, 14:08:14
Lukáš112:
Napiš, jakou chybou to skončí. Pravděpodobně jsi překročil maximální povolený čas pro běh skriptu nebo maximální velikost paměti. |
||
AM_ Profil |
#5 · Zasláno: 3. 5. 2009, 14:33:25
„Poradíte mi?“
Poradíme. |
||
Lukáš112 Profil * |
#6 · Zasláno: 3. 5. 2009, 14:57:26
No chybovou hlášku mi to nevyhodí žádnou. prostě to po nějaké době asi větší jak minutu hodí jako kdyby bylo ztraceno připojení k internetu.
|
||
Lukáš112 Profil * |
#7 · Zasláno: 3. 5. 2009, 15:16:55
Ono to udělá asi z 20 fotek náhledy a pak to skončí, nejspíš bude asi doopravdy chyby v tom čase trvání scriptu. nebo v tý maximální velikosti paměti, nešlo by to nějak vyřešit?
|
||
Davex Profil |
#8 · Zasláno: 3. 5. 2009, 15:52:59
Na WZ to asi moc dobře vyřešit nepůjde, ale můžeš zkusit
1) nastavit error_reporting(E_ALL);- možná se ti zobrazí chyba proč to nechodí 2) před konec funkce Resizer() přidat řádky imagedestroy($image); imagedestroy($image_p); 3) snížit počet obrázků zpracovávaných při jednom běhu skriptu 4) náhledy připravit předem na vlastním PC a nahrát je přes FTP na server |
||
AM_ Profil |
#9 · Zasláno: 3. 5. 2009, 15:59:04
„prostě to po nějaké době asi větší jak minutu hodí jako kdyby bylo ztraceno připojení k internetu.“
Je možné, že při minutě neaktivity prohlížeč bere spojení jako ztracené. Řešení by mohlo být něco posílat na výstup, např. po každé fotce napsat: echo "photo $photo converted"; flush(); A zvýšit dobu pro zpracování skriptu (default je 30 sekund, což je málo): set_time_limit(3600); Je taky možné, že máš ve skriptu chybu a po několika obrázcích skončí v nekonečné smyčce. |
||
Lukáš112 Profil * |
#10 · Zasláno: 4. 5. 2009, 09:55:43
Davex & AM_ dík , kombinace obou vašich rad mi to vyřešila
|
||
Lukáš112 Profil * |
#11 · Zasláno: 4. 5. 2009, 17:21:29
Jen malý dotaz, při vypnutém implicity_flush je lepší ješte doplnit přes flush(); ob_flush(); ? nebo ne?
|
||
AM_ Profil |
#12 · Zasláno: 4. 5. 2009, 19:07:10
ob_flush se používá, jen pokud používáš output buffer (začíná ob_start). implicit_flush by mělo zajistit, že se každý výstup ihned posílá (takže není potřeba ani flush()
|
||
Fuckin Profil * |
#13 · Zasláno: 4. 5. 2009, 21:05:54
Nemas nejakou moznost to zkusit na normalnim hostingu?
|
||
Lukáš112 Profil * |
#14 · Zasláno: 5. 5. 2009, 10:16:49
Bohužel nemám. Ale myslím si ,že je to ten problém s hostingem. uvažuji, že to změním. Nejvíc mě stve to že to jednou udělá bílou obrazovku, udělá to 5 náhledu a jakmile to dám znova ten script tak to uděla celý a kompletně třeba i 100 obrázků. O mě nejde já si ty náhledy udělám na pc ale mám to právě kvůli kamarádovi, no a tomu už dělá problém nahrát ty fotky přes ftp. Jakej hosting by jste mi doporučili? Za rozumnou cenu/kvalita.
|
||
Časová prodleva: 15 let
|
0