Heim >Backend-Entwicklung >PHP-Tutorial >Verwenden Sie das APC-Modul von PHP, um einen Upload-Fortschrittsbalken zu erstellen

Verwenden Sie das APC-Modul von PHP, um einen Upload-Fortschrittsbalken zu erstellen

墨辰丷
墨辰丷Original
2018-06-06 16:01:301501Durchsuche

In diesem Artikel wird hauptsächlich die Verwendung des APC-Moduls zum Erstellen eines Upload-Fortschrittsbalkens vorgestellt. Ich hoffe, dass er für alle hilfreich ist.

APC-Modul, sein vollständiger Name ist Alternative PHP Cache. APC kann den gesamten PHP-Code zwischenspeichern. Es gibt jedoch Berichte, dass die Schreibfunktion des APC-Cache zu unvorhersehbaren Fehlern führt Wenn Sie diese Funktion verwenden möchten, können Sie sich apc_fetch, apc_store und andere Funktionen im Zusammenhang mit dem APC-Cache ansehen.
Erfreulich ist, dass APC ab 5.2 APC_UPLOAD_PROGRESS beigetreten ist, was das Fortschrittsbalkenproblem löst, das alle schon seit langem beschäftigt. Außerdem wurde die ursprüngliche Methode zum Zwischenspeichern aller temporären Dateien im Speicher während des Hochladens dahingehend geändert, dass sie automatisch auf der Festplatte gespeichert werden, wenn die temporären Dateien den festgelegten Wert erreichen, was die Speichernutzung effektiv verbessert.
Sein Arbeitsprinzip besteht darin, jedem Upload beim Hochladen eine eindeutige ID zu geben. Wenn das PHP-Skript eine hochgeladene Datei empfängt, überprüft der Interpreter automatisch das ausgeblendete Feld $_POST mit dem Namen APC_UPLOAD_PROGRESS wird zu einer Cache-Variablen, die Informationen über den Upload speichert, sodass Skripte über die Upload-ID auf die Statusinformationen der hochgeladenen Datei zugreifen können.

<!–以下为上传表单–>
<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&#39;); return true;"/>
<!–注意:startProgress(‘upid&#39;)中的参数是你从php中分配的唯一上传参数–>
</form>
<!–以下为上传进度条–>
<p id="upstatus" style="width: 500px; height: 30px; border: 1px solid ##ffffde; color:#796140;">
</p
<p id="progressouter" style="width: 500px; height: 20px; border: 3px solid #de7e00; display:none;">
<p id="progressinner" style="position: relative; height: 20px; color:#796140; background-color: #f6d095; width: 0%; "></p>
</p>

Das Wichtigste ist das versteckte Feld von APC_UPLOAD_PROGRESS. Damit kann das Skript auf den Status der aktuell hochgeladenen Datei zugreifen und einfach ein p hinzufügen, um den Upload-Status anzuzeigen.
Das Folgende ist ein Skript zur Verarbeitung von Ajax, das das JQuery-Framework und JSON zum Übertragen von Nachrichten verwendet.

function getProgress(upid){
var url = "<{$siteurl}>epadmin/upprocess";
$.getJSON(
url,
{ progress_key: upid },
function(json){
$("#progressinner").width(json.per+"%");
$("#upstatus").html(‘文件大小:&#39;+json.total+‘KB&#39;+‘ 已上传:&#39;+json.current+‘KB&#39;);
if (json.per < 100){
setTimeout(function(){
getProgress(upid);
}, 10);
}else{
$("#upstatus").html("视频上传完成,正在处理数据,请稍后……");
}
}
)
}
function startProgress(upid){
$("#progressouter").css({ display:"block" });
setTimeout(function(){
getProgress(upid);
}, 100);
}

Der nächste Schritt besteht darin, den PHP-Code des Upload-Status zu lesen. Was die Verarbeitung hochgeladener Dateien betrifft, können Sie ihn wie gewohnt schreiben.
//Funktion zum Hochladen von Dateien, Sie können sie nach Ihren eigenen Bedürfnissen schreiben

function upflvAction()
 {
 if($_SERVER[&#39;REQUEST_METHOD&#39;]==‘POST&#39;){
 $subject = trim($this->f->filter($this->_request->getPost(‘subject&#39;)));
 $content = trim($this->f->filter($this->_request->getPost(‘content&#39;)));
 Zend_Loader::loadClass(‘Custom_FlvOp&#39;);
 $flv = new Custom_FlvOp;
 $flv->uploadFlv(‘upfile&#39;,$subject,$content);
 }
 }
 //这就是读取上传状态的函数了~~
 function upprocessAction()
 {
 if(isset($_GET[&#39;progress_key&#39;])) {
 $status = apc_fetch(‘upload_&#39;.$_GET[&#39;progress_key&#39;]);
 $json = array(
 ‘per&#39;=>$status[&#39;current&#39;]/$status[&#39;total&#39;]*100,
 ‘total&#39;=>round($status[&#39;total&#39;]/1024),
 ‘current&#39;=>round($status[&#39;current&#39;]/1024),
 );
 require_once("Zend/Json.php");
 echo Zend_Json::encode($json);
 }
 }

Okay, jetzt können Sie sie auf Ihrer eigenen Website bereitstellen. Überzeugen Sie sich selbst.

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:

PHP-Bild-Upload-Klasse und Aufrufmethode

Vorsichtsmaßnahmen und Beispielanalyse zum Ändern des Array-Schlüssels durch array_unshift() in php

So konvertieren Sie das HTML-Format in PHP in das Textformat

Das obige ist der detaillierte Inhalt vonVerwenden Sie das APC-Modul von PHP, um einen Upload-Fortschrittsbalken zu erstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn