亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

PHP利用APC模塊實現文件上傳進度條的方法

2024-05-04 23:30:41
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了PHP利用APC模塊實現文件上傳進度條的方法,分析了APC模塊的具體用法,并給出了相關配置說明,需要的朋友可以參考下
 

本文實例講述了PHP利用APC模塊實現文件上傳進度條的方法。分享給大家供大家參考。具體分析如下:

以前的php5.2之前的版本是不能可使用APC模塊的,因為之前的壓根就沒有這個APC模塊,如果想使用APC模塊實現上傳進度條我們必須是php5.2或更高版本.

從5.2開始APC加入了一個叫APC_UPLOAD_PROGRESS的東東,解決了困擾大家已久的進度條問題。并且它把原來的上傳時把臨時文件全部緩存到內存改成了當臨時文件達到設定值時就自動保存到硬盤,有效地改善了內存利用狀況。

它的作用原理是在上傳時候賦予每個上傳一個唯一的ID,當 PHP 腳本收到一個上傳文件時,解釋程序將自動檢查 $_POST數組中名為 APC_UPLOAD_PROGRESS 的隱藏字段,它將成為緩存變量,存儲關于上傳的信息,這樣腳本就可以通過上傳的ID來訪問上傳文件的狀態信息。

APC是Alternative PHP Cache的簡稱,是 PHP 的一個免費公開的優化代碼緩存。它用來提供免費,公開并且強健的架構來緩存和優化 PHP 的中間代碼。

APC模塊的參數配置,代碼如下:

復制代碼代碼如下:
Name Default Changeable Changelog  
apc.enabled 1 PHP_INI_ALL  
apc.shm_segments 1 PHP_INI_SYSTEM  
apc.shm_size 30 PHP_INI_SYSTEM  
apc.optimization 0 PHP_INI_ALL  
apc.num_files_hint 1000 PHP_INI_SYSTEM  
apc.ttl 0 PHP_INI_SYSTEM  
apc.gc_ttl 3600 PHP_INI_SYSTEM  
apc.cache_by_default On PHP_INI_SYSTEM  
apc.filters "" PHP_INI_SYSTEM  
apc.mmap_file_mask "" PHP_INI_SYSTEM  
apc.slam_defense 0 PHP_INI_SYSTEM  
apc.file_update_protection 2 PHP_INI_SYSTEM  
apc.enable_cli 0 PHP_INI_SYSTEM > APC 3.0.6

好了配置好了現在就開始寫程序了

 

XML/HTML代碼如下:

復制代碼代碼如下:
<!–以下為上傳表單–>  
<form enctype="multipart/form-data" id="upload_form" action="" method="POST">  
<input type="hidden" name="APC_UPLOAD_PROGRESS" id="progress_key" value="upid"/>  
視頻標題:<input type="text" id="subject" name="subject"/>  
視頻說明:<input type="text" id="content" name="content"/>  
視頻TAG(以逗號分割)<input type="text" id="tag" name="tags"/>  
<input type="file" id="upfile" name="upfile"/>  
<input type="submit" id="filesubmit" value="上傳" onclick="startProgress('upid'); return true;"/>  
<!–注意:startProgress('upid')中的參數是你從php中分配的唯一上傳參數–>  
</form>  
<!–以下為上傳進度條–>  
<div id="upstatus" style="width: 500px; height: 30px; border: 1px solid ##ffffde; color:#796140;">  
</div  
<div id="progressouter" style="width: 500px; height: 20px; border: 3px solid #de7e00; display:none;">  
<div id="progressinner" style="position: relative; height: 20px; color:#796140; background-color: #f6d095; width: 0%; "></div>  
</div>

最主要的就是那個APC_UPLOAD_PROGRESS的隱藏域,有了它腳本才能去訪問目前上傳文件的狀態,另外加一個顯示上傳狀態的div就好了.

 

下面是處理Ajax的腳本,我用了Jquery框架,json傳遞消息.

JavaScript代碼如下:

復制代碼代碼如下:
function getProgress(upid){  
var url = "<{$siteurl}>epadmin/upprocess";  
$.getJSON(  
url,  
{ progress_key: upid },  
function(json){  
$("#progressinner").width(json.per+"%");  
$("#upstatus").html('文件大小:'+json.total+'KB'+' 已上傳:'+json.current+'KB');  
if (json.per < 100){  
setTimeout(function(){  
getProgress(upid);  
}, 10);  
}else{  
$("#upstatus").html("視頻上傳完成,正在處理數據,請稍后……");  
}  
}  
)  
}  
function startProgress(upid){  
$("#progressouter").css({ display:"block" });  
setTimeout(function(){  
getProgress(upid);  
}, 100);  
}

再下面就是讀取上傳狀態的PHP代碼了,至于上傳文件的處理可以按照平常自己的來寫,代碼如下:
復制代碼代碼如下:
//上傳文件操作函數,可按照自己的需要編寫  
function upflvAction()  
{  
if($_SERVER['REQUEST_METHOD']=='POST'){  
$subject = trim($this->f->filter($this->_request->getPost('subject')));  
$content = trim($this->f->filter($this->_request->getPost('content')));  
Zend_Loader::loadClass('Custom_FlvOp');  
$flv = new Custom_FlvOp;  
$flv->uploadFlv('upfile',$subject,$content);  
}
}  
//這就是讀取上傳狀態的函數了~~  
function upprocessAction()  
{   
if(isset($_GET['progress_key'])) {  
$status = apc_fetch('upload_'.$_GET['progress_key']);  
$json = array(  
'per'=>$status['current']/$status['total']*100,  
'total'=>round($status['total']/1024),  
'current'=>round($status['current']/1024),  
);  
require_once("Zend/Json.php");  
echo Zend_Json::encode($json);  
}  
}

一些關于apc配置詳解:

 

apc.enabled  布爾型

apc.enabled 可以被設成 0 來禁用 APC,這主要是有用的,當 APC 被靜態編譯入 PHP 時,因為沒有其它方法來禁用它,當編譯為 DSO 的時候,可以將 php.ini 中的 extension 行注釋掉.

apc.shm_segments  整型

對編譯緩存分配共享內存塊的數量,如果APC用光了共享內存,而且你已經設置 apc.shm_size為系統允許的最大值的情況下,你可以試著去提高這個參數的值.

apc.shm_size  整型

每個共享內存塊的大小是以MB為單位的。在默認情況下,一些系統(包括大多數BSD變種系統)的共享內存塊的大小限制的很低。

apc.optimization  整型

優化等級。設為0則禁用優化,越高的值使用越強有力的優化。期待有適度的速度上的改進。這個還是實驗性質的。

apc.num_files_hint  整型

對在你的Web服務器上被包含和請求的不同的源文件的數量的提示。如果你無法確定,設置為0或者省略;這個設置主要可能用于有成千的源文件的站點。

apc.ttl  整型

當一個緩存條目在緩存區的位置被另一個條目需要時,我們需要考慮的是這個緩存條目在緩存區的位置被允許空閑的秒數。將這個參數設置為0意味著你的緩存可能充滿不新鮮的條目,同時導致新的條目無法被緩存。

apc.gc_ttl  整型

緩存條目在垃圾收集列表中存活的秒數。這個值提供了出錯保護在執行一個緩存源文件,而同時服務器進程死了的事件中。如果那個源文件被修改,內存分配給舊版本的緩存條目將不會被回收,直到這個參數設定的TTL值到的時候。設置為0就是禁止這個特性。

apc.cache_by_default  布爾型

默認為On,但可以被設置為Off并和以加號開頭的apc.filters配合使用,文件僅僅在匹配過濾器時才被緩存。

apc.filters  字符串

一個以逗號分割的POSIX擴展正則表達式的列表。如果任何模式匹配源文件名,這個文件將不會被緩存。注意用來匹配的文件名是傳遞給 include/require 的文件名,而不是絕對路徑。如果正則表達式的第一個字符是 + ,則這個表達式就意味著任何匹配表達式的文件將會被緩存,如果第一個字符是 - 則任何匹配都不會被緩存。 - 是默認值,所以可以被省略。

apc.mmap_file_mask  字符串

apc.slam_defense  整型

在非常繁忙的服務器上,無論你啟動服務還是修改文件,你都會導致一種多進程都試圖在同一個時間緩存同一個文件的競爭。這個選項設置了進程跳過試圖去緩存一個未被緩存的文件的百分比?;蛘呖梢园堰@個想象成一個單獨進程跳過緩存的機率。例如,設置apc.slam_defense為75就意味著進程有75%的機率不去緩存未被緩存的文件。所以,設置的越高,越能減少緩存的碰撞機率。設置為0則禁用這個特性。

apc.file_update_protection  整型

當你在一個運行著的服務器上修改文件時,你應該執行原子操作。也就是,先寫一個臨時文件,當寫完后再重命名(mv)這個文件到它的最終位置。許多文本編輯器,cp,tar和其他一些類似程序都不是這樣操作的。這就意味著有機會去訪問和(緩存)文件,當這個文件還在被寫的情況下。apc.file_update_protection的設置使得緩存標記新文件的延遲。默認值是2,意味著如果發現文件的修改時間距離訪問時間不到2秒,文件將不會被緩存。訪問寫到一半的文件的不幸用戶將會看到離奇的情況,但至少這種情況不是持續的。如果你確信你經常使用原子操作來更新你的文件,你可以關閉這個保護通過設置這個參數為0。如果你的系統充滿io操作,并導致更新程序花費超過2秒,你可能需要去增大這個值。

apc.enable-cli  整型

大多是為了測試和調試,為CLI版本的PHP開啟動APC功能,一般來說,你將不會想到為每一個 CLI請求創建,移植和放棄APC的緩存,但對于各種測試情況,這是很容易的為了CLI版本開啟APC.

希望本文所述對大家的php程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲人成伊人成综合网久久久| 中文字幕在线视频日韩| wwwwwwww亚洲| 国产精品偷伦视频免费观看国产| 91精品视频观看| 国产精品国产亚洲伊人久久| 中文字幕久久亚洲| 亚洲a在线播放| 4438全国亚洲精品在线观看视频| 久久精品亚洲94久久精品| 日韩视频第一页| 色视频www在线播放国产成人| 高潮白浆女日韩av免费看| 国产欧美在线观看| 中文字幕日韩精品有码视频| 欧美性高跟鞋xxxxhd| 欧美天堂在线观看| 色偷偷av一区二区三区| 成人网在线免费观看| 这里只有精品视频在线| 国产成人av网| 91免费电影网站| 在线观看日韩www视频免费| 国产欧美婷婷中文| 国产精品在线看| 欧美第一页在线| 中文字幕亚洲色图| www.日韩视频| 欧美日韩在线看| 久久伊人色综合| 精品视频www| 日本亚洲欧美成人| 亚洲91精品在线观看| 久久亚洲一区二区三区四区五区高| 91亚洲人电影| 国产专区欧美专区| 国产成人自拍视频在线观看| 国内精品伊人久久| 欧美午夜激情小视频| 国产亚洲一区二区精品| 欧美精品久久久久久久久| 欧美专区在线播放| 久久久女女女女999久久| 欧美成人午夜激情| 久久亚洲春色中文字幕| 亚洲日本欧美日韩高观看| 伦理中文字幕亚洲| 亚洲欧洲国产精品| 91网在线免费观看| 精品毛片三在线观看| 国产视频欧美视频| 狠狠躁天天躁日日躁欧美| 2023亚洲男人天堂| 日韩免费视频在线观看| 亚洲www永久成人夜色| 午夜精品在线视频| 国产精品久在线观看| 国产区亚洲区欧美区| 久久精品成人欧美大片| 97欧美精品一区二区三区| 欧美日韩综合视频网址| 欧美成人四级hd版| 国产精品xxx视频| 国产精品一区二区av影院萌芽| 久久久天堂国产精品女人| xxx欧美精品| 国产精品盗摄久久久| 久久夜精品va视频免费观看| 欧美日韩精品中文字幕| 海角国产乱辈乱精品视频| 欧美成人免费一级人片100| 久久这里有精品| 国产丝袜一区二区| 欧美三级免费观看| 日韩精品日韩在线观看| 久久精品在线播放| 欧美成人午夜免费视在线看片| 91av视频在线播放| 4444欧美成人kkkk| 亚洲综合av影视| 午夜精品久久久久久久久久久久久| 亚洲男人第一av网站| 一级做a爰片久久毛片美女图片| 国产精品最新在线观看| 欧美专区国产专区| 亚洲一品av免费观看| 亚洲欧美激情一区| 国产在线不卡精品| 欧美成人中文字幕| 久99九色视频在线观看| 久久久精品久久| 亚洲午夜国产成人av电影男同| 欧美国产日韩在线| 欧美成人黑人xx视频免费观看| 亚洲第一区在线| 日韩av手机在线看| 日韩亚洲综合在线| 精品国内自产拍在线观看| 日韩av片免费在线观看| 九九久久综合网站| 丝袜美腿亚洲一区二区| 久久伊人精品视频| 国产亚洲激情视频在线| 91精品综合久久久久久五月天| 亚洲最大中文字幕| 国内精品模特av私拍在线观看| 久久久久久久久网站| 国产视频在线观看一区二区| 精品免费在线视频| 欧美一级电影久久| 亚洲最新中文字幕| 亚洲成人网在线观看| 激情久久av一区av二区av三区| 成人国产精品久久久久久亚洲| 亚洲欧洲在线看| 成人黄色片网站| 成人国产精品一区二区| 日韩中文有码在线视频| 欧美性精品220| 日韩精品中文字| 狠狠色噜噜狠狠狠狠97| 精品久久在线播放| 久久综合久久美利坚合众国| 久久国产精品久久久久久| 国产精品成人久久久久| 91影视免费在线观看| www.欧美视频| 久久影视免费观看| 亚洲第一网中文字幕| 欧美日韩电影在线观看| 国产精品国内视频| 久久久久日韩精品久久久男男| 国产日韩精品综合网站| 亚洲伊人久久大香线蕉av| 久久免费国产精品1| 日韩欧美在线播放| 国产精品久久久久久中文字| 日韩国产中文字幕| 亚洲精品乱码久久久久久金桔影视| 亚洲精品有码在线| 成人综合国产精品| 欧美电影免费在线观看| 这里只有视频精品| 国产精品ⅴa在线观看h| 欧美国产日韩一区二区在线观看| 色小说视频一区| 91久久久久久久久久久久久| 成人性生交xxxxx网站| 中文字幕成人精品久久不卡| 欧美视频裸体精品| 91免费欧美精品| 日韩精品极品在线观看| 午夜精品美女自拍福到在线| 亚州欧美日韩中文视频| 亚洲男人第一网站| 黑人极品videos精品欧美裸| 久久久久久久久电影| 91亚洲国产成人精品性色| 精品久久久久久久久久国产| 夜夜嗨av色一区二区不卡| 久久精品久久久久| 91精品中文在线| 精品欧美国产一区二区三区| 国产精品久久久久久久午夜|