Home » PHP, javascript

PHP a javascript

Memory limit v PHP při zpracování obrázku

A memory limit causes a problem with an image resizing, because function imagecopyresampled() does not report an error for too large image...

Pro zmenšení a ořez obrázku prostřednictvím PHP se používá funkce imagecopyresampled(), vyžadující poměrně velkou dostupnou paměť. Například pro formát jpg, který má 8 kanálů a 3 barvy (v RGB) je to 8 * 3 = 24krát více, než je celkový počet pixelů obrázku. Pro foto 1000*750px je to tedy alespoň 17 MB paměti (ve skutečnosti je to ještě nutné násobit hodnotou alespoň 1,5 - viz níže uvedená hodnota $SECURECONST).

Číst dále: Memory limit v PHP při zpracování obrázku

 

Bug v jQuery - upload a enctype atribut

(It doesn't set the enctype attribute in IE8 using the attr() method of jQuery framework.)

Při uploadu souborů je nutné nastavit atribut enctype tagu form na hodnotu multipart/form-data. V jQuery je k tomu možné použít metodu attr(), ale v IE8 nedojde k nastavení tohoto atributu, ačkoli pro ostatní atributy metoda funguje. (Až po napsání tohoto textu jsem našel vysvětlení.)  
Kód funkční například ve FF, ale ne v IE8:

 f=$('<form>');
f.attr({"target":"ta","id":"idx"});//FF and IE8
f.attr("method","post");//FF and IE8
f.attr("enctype","multipart/form-data");//FF not IE8!!!

Bug se projevuje i v poslední verzi jQuery 1.5. Řešení je jednoduché:

f=$('<form enctype="multipart/form-data" />');//FF and IE8

Pokud si chcete řešení ověřit, můžete to zkusit s dále uvedeným skriptem:

Číst dále: Bug v jQuery - upload a enctype atribut

   

PHP - multithreading s knihovnou curl

Běžně uváděná řešení s curl knihovnou většinou používají "multivláknovou" techniku jen pro načítání obsahů, ale následné zpracování pak provádějí hromadně (například http://php.vrana.cz/paralelni-zpracovani.php). U příkladů z PHP manuálu používajících curl_multi_info_read() se mi líbilo, že zpracování provádějí již při načítání obsahu (inspirace http://php.ftp.cvut.cz/manual/cs/function.curl-multi-exec.php#88772 nebo http://php.ftp.cvut.cz/manual/cs/function.curl-multi-exec.php#87492). Potřeboval jsem ale, aby výstup byl přiřazen správnému vstupu, protože dotazy se zpracovávají v jiném pořadí, než jak byly položeny. Chtěl jsem, aby prvnímu vstupu odpovídal i první výstup atd. A jako dobré mi připadalo omezení počtu vláken, protože při velkém množství požadavků to (prý - aspoň podle různých komentářů) může dělat problémy. Použil jsem následující řešení:

Číst dále: PHP - multithreading s knihovnou curl