ugrás a tartalomhoz

Archívum - Szep 30, 2008 - Fórum téma

PHP upload progress

Fraki · 2008. Szep. 30. (K), 22.52
Sziasztok,

PHP upload progress témában szeretnék frissített beszámolót adni, illetve tapasztalatot cserélni, ha valaki azóta esetleg (újra) elővette a témát.

Aki nem lenne képben, annak a lényeg összefoglalva az, hogy ilyet tisztán php-val alapból nem lehet csinálni, csak azóta a dolgok változtak. Eddigi topikok itt a weblaboron: egy két évvel korábbi, aminek az alján összegzem az addigi eredményeket, illetve két héttel ezelőtt is feljött a kérdés.

Nos, azóta a PHP 5.2-től kezdve lehetővé vált tiszta php-s megoldás, ha nem is alaptelepítéssel. Két PECL csomagról van szó, az egyik az APC, ami örvendetes, mert egy nagy és jól karbantartott modul, és ha jól tudom, a 6-os PHP-tól már a core-ban lesz. A másik az uploadprogress.

Mindkettő használata egyszerű, a fájlt felküldő formban a file inputja elé kell tenni egy hidden inputot egy speciális névvel (APC_UPLOAD_PROGRESS, ill. UPLOAD_IDENTIFIER) a name, valamint egy egyedi azonosítóval a value attribútumban. A form submitja után a megadott kulccsal azonnal lekérhetők a feltöltés folyamatának az információi (apc_fetch($kulcs), ill. uploadprogress_get_info($kulcs) ajaxszal vagy iframe-es/popup-os frissítgetésekkel; további információk a php.net apc oldalán, illetve az uploadprogress-ről itt).

Mindkét modul a POST méretét adja vissza, nem a pontos fájlméretet.

A tapasztalataim a következők. APC-vel minden szépen működik, egészen addig, amíg nagy fájlt nem töltünk fel. Sokáig azt hittem, kliensoldalon van a gond, de végülis egy kis loggolással és Firebuggal lekövettem, hogy sajnos nem.

autoload erdekesseg

carstepPCE · 2008. Szep. 30. (K), 16.48
Sziasztok,

nem tudom valaki futott e mar bele valami hasonloba, de nekem nagyon furcsanak tunik itten valami:

	function __autoload( $class ) {
		if (class_exists($class, false) || interface_exists($class, false)) {
	        return;   
	    }
	    
		$file = 'classes' . DIRECTORY_SEPARATOR . $class . '.php' ;
		$file2 = 'classes' . DIRECTORY_SEPARATOR . 'models' . DIRECTORY_SEPARATOR . 'service_' . $class . '.php' ;
	
		if ( file_exists( $file2 ))	{
			@require_once( $file2 );
			if ( class_exists( $class, false ) ) { echo 'igen osztaly van::: '.$class . ' ::: '; }
		}
		else if ( file_exists( $file ) ) @require_once( $file );
		
        if ( ! class_exists($class, false) || !interface_exists($class, false)) {
            throw new Exception('Class ' . $class . ' not found', 0 );
        }
	}
erre kapom azt, hogy:

"igen osztaly van:::vrn_all_products ::: Unexpected error happened!Class vrn_all_products not found"

Ehhez mit szoltok, en nem latom a hibat? Az elirasokat lecsekkoltam!

Udv
Sanyi
 

Doctrine több oszlopos UPDATE

kalamona · 2008. Szep. 30. (K), 15.03
Hogyan tudok egy lekérdezésben több oszlopot updatelni?
Manual szerint egy oszlop frissítése így zajlik:

rows = $q->update('Account')
         ->set('amount', 'amount + ?', '200')
         ->where('id > 200') 
         ->execute(); 
ez nem jó:

rows = $q->update('Account')
         ->set('amount', 'amount + ?', '200')
         ->set('amount2', 'amount2 + ?', '500')
         ->where('id > 200') 
         ->execute(); 
ez sem:

rows = $q->update('Account')
         ->set('amount', 'amount + ?', '200','amount2', 'amount2 + ?', '500')
         ->where('id > 200') 
         ->execute(); 
Vagy ez nem támogatott? :)
 

AJAX-os kérés közben a PHP kódban eltűnnek a változók egy idő után

kalamona · 2008. Szep. 30. (K), 09.22
Sziasztok!

A kérdésem nagyjából belefért a címbe. jQuery $.post használatával küldöm az adatokat, a php kódban viszont egy idő után nem elérhetőek az adatok. Még úgysem ha rögtön a metódusom elején lementem a $_POST-ból egy lokális változóba.

PHP oldalon úgy debuggoltam, hogy egy fájlba írogattam ki az értékeket, hogy lássam mikor veszik el. Egy sima értékadás előtt még ott van minden, utána pedig nem íródik már a fájlba semmi. Mindez ráadásul nincs összefüggésben az értékadással, mert sokféleképpen volt már a kód átírva ebben a függvényben a túlbonyolítottól a minimalistáig és mindig ez történt.

Mintha lenne valami timeout vagy hasonló az ajax requestre vagy nem is tudom elképzelni, hogy mi lesz vele egy idő után. Első ajaxos szárnypróbálgatásaimról van szó, úgyhogy nyugodtan gondolkodhattok triviális amatőr hibákban is. :)