| 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: 17 let
|
|||
0