Autor Zpráva
Lukáš112
Profil *
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 *
Zapoměl jsem tam vložit na konec scriptu }. sorry
Lukáš112
Profil *
Poradíte mi?
Jan Tvrdík
Profil
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
Poradíte mi?
Poradíme.
Lukáš112
Profil *
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 *
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
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
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 *
Davex & AM_ dík , kombinace obou vašich rad mi to vyřešila
Lukáš112
Profil *
Jen malý dotaz, při vypnutém implicity_flush je lepší ješte doplnit přes flush(); ob_flush(); ? nebo ne?
AM_
Profil
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 *
Nemas nejakou moznost to zkusit na normalnim hostingu?
Lukáš112
Profil *
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.

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