-
PHP
(
http://www.devprotalk.com/forumdisplay.php?f=9)
vladapopster |
10. 11. 2010. 13:04 |
APC Upload Problem
Imam problem vezan za progres bar pri ajax uploadu fajlova.
Na test serveru sve radi kako treba, dok isti kod prebacen na live server ne radi, tacnije vraca false.
HTML
Kôd:
<form target="hiddenframe" enctype="multipart/form-data" name="form1" id="uploadform" style="margin-left:6px;" action="" method="POST">
<input type="hidden" name="APC_UPLOAD_PROGRESS" id="progress_key" value="{$upl_id}" />
<input type="file" id="numlist" size="25" name="filefieldname" {literal}onchange="fandl_simple_sms(this.id,Array('numbers','choiceG','numlist'));"{/literal}/>
</form>
<input type="hidden" id="filename" value=""/>
<iframe name="hiddenframe" style="display:none" >Loading...</iframe>
Javascript
Kôd:
var params = { upl_id: upl_id };
new Ajax.Request(
'/cust/klase/upload_progress.php',
{
'parameters': params,
onSuccess: function(transport)
{
var resp = transport.responseText;
var odgovor;
eval('odgovor = ' + resp);
if(odgovor.status == "OK")
{
$('uploadedfile').update("Uploaded "+odgovor.trenutno+"kb from "+odgovor.total+"kb");
if(odgovor.procenat!=100)
setTimeout("waitUpload('"+upl_id+"')",300);
}
else if (odgovor.status == 'LARGE')
{
$('uploadedfile').update(odgovor.message);
return;
}
}
}
);
PHP skripta koja obradjuje velicinu obradjenog dela fajla
Kôd:
if(isset($_REQUEST['upl_id']))
{
$status = apc_fetch('upload_'.$_REQUEST['upl_id']);
if($status['total']>10000000)
{
echo json_encode(Array('status' => 'LARGE','message' => 'File is larger then 10 MB'));
return;
}
$procenat=round($status['current']/$status['total']*100);
echo json_encode(Array('status' => 'OK','procenat' => $procenat, 'total' => round($status['total']/1000), 'trenutno' => round($status['current']/1000)));
}
E sad problem je sto to sve na development serveru radi kako treba, dok na live serveru apc_fetch vraca false ili nista.
Da li je neko imao ranije neko iskustvo sa APC kesiranjem i progres barom za upload fajlova.
Hvala unapred.
|
LiquidBrain |
10. 11. 2010. 13:35 |
Koja verzija APC-a je na serveru, u 3.1.5 je ispravljen bug koji je bio zasluzan za dupliranje kljuceva u APC-u, tako da cache ne radi kako treba...
|
vladapopster |
10. 11. 2010. 13:42 |
Apc
PHP Version 5.3.1
APC Version 3.1.5-dev
Sa podesavanjima:
Kôd:
Directive Local Value Master Value
apc.cache_by_default On On
apc.canonicalize On On
apc.coredump_unmap Off Off
apc.enable_cli Off Off
apc.enabled On On
apc.file_md5 Off Off
apc.file_update_protection 2 2
apc.filters no value no value
apc.gc_ttl 3600 3600
apc.include_once_override Off Off
apc.lazy_classes Off Off
apc.lazy_functions Off Off
apc.max_file_size 1M 1M
apc.mmap_file_mask no value no value
apc.num_files_hint 1000 1000
apc.preload_path no value no value
apc.report_autofilter Off Off
apc.rfc1867 On On
apc.rfc1867_freq 0 0
apc.rfc1867_name APC_UPLOAD_PROGRESS APC_UPLOAD_PROGRESS
apc.rfc1867_prefix upload_ upload_
apc.rfc1867_ttl 3600 3600
apc.shm_segments 1 1
apc.shm_size 30M 30M
apc.slam_defense Off Off
apc.stat On On
apc.stat_ctime Off Off
apc.ttl 7200 7200
apc.use_request_time On On
apc.user_entries_hint 4096 4096
apc.user_ttl 7200 7200
apc.write_lock On On
|
LiquidBrain |
10. 11. 2010. 15:29 |
hm... pogresan kljuc pokusavash da izvadish...
ovo ti ne valja...
Kôd:
$status = apc_fetch('upload_'.$_REQUEST['upl_id']);
treba da bude
Kôd:
$status = apc_fetch('upload_'.$_REQUEST['APC_UPLOAD_PROGRESS']);
Pozz
|
vladapopster |
10. 11. 2010. 17:16 |
Apc
Probao sam i sa APC_UPLOAD_PROGRESS, ali javlja sada i na devu gde je radilo:
PHP Notice: Undefined index: APC_UPLOAD_PROGRESS in upload_progress.php on line 10
i apc_fetch: false
A u:
Kôd:
<input type="hidden" name="APC_UPLOAD_PROGRESS" id="progress_key" value="{$upl_id}" />
Vrednost koja se smesta u apc_store APC_UPLOAD_PROGRESS je value="{$upl_id}
Tako da je
Kôd:
$status = apc_fetch('upload_'.$_REQUEST['upl_id']);
mislim ok, posto vec radi.
Nego posle nekog istrazivanja i testiranja, moguce da je problem u verziji apc-a, koja je 3.1.5-dev, koja cini mi se nije jos stable, pa baguje, a na dev serveru je 3.0.19 i sve radi kako treba.
|
LiquidBrain |
10. 11. 2010. 19:59 |
Hm... da, sorry, moja greshka...
3.0.19 je poslednji stable, sve ove bete imaju neki problem... Iako je mozda neki novi bug u ovim novim verzijama, meni 3.1.5 radi...
probaj da nakon file uploada ili josh bolje za vreme istog, istampash sve cache entrije sa apc_cache_info().
mozda tako vidish sta i dal uopste setuje nesto...
Pozz
|
vladapopster |
11. 11. 2010. 10:26 |
Apc
Da, videcu sa administratorima da instaliraju 3.0.19, koji je stable i koji radi na drugom serveru.
Plus, ova verzija filuje php error log sa gomilom gresaka tipa "PHP Warning: include() [function.include]: Unable to allocate memory for pool. in /index_dispatcher.php on line 5
".
Takodje ima jos jedan problem, svaki HTTP request je hendlovan od php procesa (istog ili razlicitog, zavisi od konfiguracije), ukoliko jedan proces hendluje sam upload i u njemu se izvrsava move_uploaded_file, a ajaxom gadjate drugu skriptu u kojoj fetchujete apc (apc_fetch), ako je taj drugi http request hendlovan od strane drugog PHP procesa (sto se moze proveriti sa getmypid() ), apc nece moci da ih fetchuje jer nema mogucnost da se sheruje kroz razlicite procese, tako da cete dobiti false, iako je apc_cache_info() vratio:
Kôd:
num_slots | 1031
[11-Nov-2010 09:12:23] ttl | 7200
[11-Nov-2010 09:12:23] num_hits | 72772
[11-Nov-2010 09:12:23] num_misses | 2084
[11-Nov-2010 09:12:23] num_inserts | 3086
[11-Nov-2010 09:12:23] expunges | 1184
[11-Nov-2010 09:12:23] start_time | 1289407704
[11-Nov-2010 09:12:23] mem_size | 31048032
[11-Nov-2010 09:12:23] num_entries | 244
[11-Nov-2010 09:12:23] file_upload_progress | 1
[11-Nov-2010 09:12:23] memory_type | mmap
[11-Nov-2010 09:12:23] locking_type | pthread mutex
[11-Nov-2010 09:12:23] cache_list | Array
[11-Nov-2010 09:12:23] deleted_list | Array
|
Vreme je GMT +2. Trenutno vreme je 05:17. |
|
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.
Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.