Heim Backend-Entwicklung PHP-Tutorial Beispiel für die Freigabe von PHP mithilfe des APC-Moduls zur Implementierung des Upload-Fortschrittsbalkens

Beispiel für die Freigabe von PHP mithilfe des APC-Moduls zur Implementierung des Upload-Fortschrittsbalkens

Dec 25, 2017 pm 02:13 PM
php 上传 Zeitplan

Dieser Artikel stellt hauptsächlich vor, wie PHP das APC-Modul verwendet, um den Fortschrittsbalken für das Hochladen von Dateien zu implementieren, analysiert die spezifische Verwendung des APC-Moduls und gibt APC-bezogene Konfigurationsanweisungen. Ich hoffe, es hilft allen.

Frühere Versionen von PHP5.2 können das APC-Modul nicht verwenden, da es überhaupt kein solches APC-Modul gibt. Wenn Sie das APC-Modul zum Implementieren des Upload-Fortschrittsbalkens verwenden möchten, müssen wir PHP5.2 oder sein höher. Version.

Ab 5.2 hat APC etwas namens APC_UPLOAD_PROGRESS hinzugefügt, das 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.

Es funktioniert, indem jedem Upload beim Hochladen eine eindeutige ID zugewiesen wird. Wenn das PHP-Skript eine hochgeladene Datei empfängt, überprüft der Interpreter automatisch das versteckte Feld mit dem Namen APC_UPLOAD_PROGRESS im Array $_POST speichert Informationen über den Upload, sodass Skripte über die Upload-ID auf Statusinformationen über die hochgeladene Datei zugreifen können.

APC ist die Abkürzung für Alternative PHP Cache, einen kostenlosen und öffentlichen optimierten Code-Cache für PHP. Es wird verwendet, um ein kostenloses, offenes und robustes Framework zum Zwischenspeichern und Optimieren von PHP-Zwischencode bereitzustellen.

Parameterkonfiguration des APC-Moduls, der Code lautet wie folgt:

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
Nach dem Login kopieren


Sobald die Konfiguration abgeschlossen ist, beginnen Sie jetzt mit dem Schreiben des Programms

Der XML/HTML-Code lautet wie folgt:

<!–以下为上传表单–>  
<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(&#39;upid&#39;); return true;"/>  
<!–注意:startProgress(&#39;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>
Nach dem Login kopieren

Das Wichtigste ist das versteckte Feld von APC_UPLOAD_PROGRESS, mit dem das Skript auf den Status zugreifen kann aktuell hochgeladene Datei, und fügen Sie eine weitere hinzu, um den Upload-Status anzuzeigen.

Das Folgende ist ein Skript zur Verarbeitung von Ajax. Ich habe das JQuery-Framework und JSON zum Übertragen von Nachrichten verwendet.

Der JavaScript-Code lautet wie folgt:

function getProgress(upid){  
var url = "<{$siteurl}>epadmin/upprocess";  
$.getJSON(  
url,  
{ progress_key: upid },  
function(json){  
$("#progressinner").width(json.per+"%");  
$("#upstatus").html(&#39;文件大小:&#39;+json.total+&#39;KB&#39;+&#39; 已上传:&#39;+json.current+&#39;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);  
}
Nach dem Login kopieren


Das Folgende ist der PHP-Code zum Lesen des Upload-Status. Was die Verarbeitung hochgeladener Dateien betrifft, Sie können ihn wie gewohnt schreiben:

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


Einige Details zur APC-Konfiguration:

apc.enabled Boolean

apc.enabled kann auf 0 gesetzt werden, um APC zu deaktivieren. Dies ist hauptsächlich nützlich, wenn APC statisch in PHP kompiliert wird, da es keine andere Möglichkeit gibt, es zu deaktivieren. Beim Kompilieren in DSO können Sie die Erweiterungszeile auskommentieren in php.ini.

apc.shm_segments integer

Die Anzahl der gemeinsam genutzten Speicherblöcke, die dem Kompilierungscache zugewiesen sind, wenn APC nicht mehr über den gemeinsam genutzten Speicher verfügt und Sie apc.shm_size auf das Maximum eingestellt haben Wert, den das System zulässt, können Sie versuchen, den Wert dieses Parameters zu erhöhen.

apc.shm_size Integer

Die Größe jedes gemeinsam genutzten Speicherblocks wird in MB angegeben. Standardmäßig haben einige Systeme (einschließlich der meisten BSD-Varianten) sehr niedrige Beschränkungen für die Blockgröße des gemeinsam genutzten Speichers.

apc.optimization Integer

Optimierungsstufe. Auf 0 setzen, um die Optimierung zu deaktivieren, höhere Werte nutzen leistungsfähigere Optimierungen. Erwarten Sie bescheidene Geschwindigkeitsverbesserungen. Dies ist noch experimenteller Natur.

apc.num_files_hint integer

Hinweis für die Anzahl der verschiedenen Quelldateien, die auf Ihrem Webserver enthalten und angefordert sind. Wenn Sie sich nicht sicher sind, setzen Sie den Wert auf 0 oder lassen Sie ihn weg. Diese Einstellung ist wahrscheinlich vor allem für Websites mit Tausenden von Quelldateien nützlich.

apc.ttl Integer

Wenn ein Cache-Eintrag von einem anderen Eintrag im Cache-Bereich benötigt wird, müssen wir berücksichtigen, dass der Standort des Cache-Eintrags im Cache-Bereich frei sein darf . Anzahl der Sekunden. Wenn Sie diesen Parameter auf 0 setzen, bedeutet dies, dass Ihr Cache möglicherweise mit veralteten Einträgen gefüllt ist und neue Einträge nicht zwischengespeichert werden.

apc.gc_ttl Integer

Die Anzahl der Sekunden, die der Cache-Eintrag in der Garbage-Collection-Liste aktiv bleibt. Dieser Wert bietet Fehlerschutz für den Fall, dass eine zwischengespeicherte Quelldatei ausgeführt wird, während der Serverprozess abstürzt. Wenn diese Quelldatei geändert wird, wird der der alten Version des Cache-Eintrags zugewiesene Speicher erst zurückgefordert, wenn der durch diesen Parameter festgelegte TTL-Wert erreicht ist. Wenn Sie den Wert auf 0 setzen, wird diese Funktion deaktiviert.

apc.cache_by_default Boolean

Standardmäßig ist „Ein“ eingestellt, und mit apc.filters beginnende Dateien werden nur dann zwischengespeichert, wenn sie mit dem Filter übereinstimmen.

apc.filters String

Eine durch Kommas getrennte Liste erweiterter regulärer POSIX-Ausdrücke. Wenn ein Muster mit dem Namen der Quelldatei übereinstimmt, wird die Datei nicht zwischengespeichert. Beachten Sie, dass der für den Abgleich verwendete Dateiname der Dateiname ist, der an include/require übergeben wurde, und nicht der absolute Pfad. Wenn das erste Zeichen des regulären Ausdrucks + ist, bedeutet der Ausdruck, dass alle mit dem Ausdruck übereinstimmenden Dateien zwischengespeichert werden. Wenn das erste Zeichen - ist, werden alle Übereinstimmungen nicht zwischengespeichert. - ist der Standardwert und kann daher weggelassen werden.

apc.mmap_file_mask string

apc.slam_defense integer

Auf einem sehr ausgelasteten Server kommt es unabhängig davon, ob Sie einen Dienst starten oder eine Datei ändern, zu einem Wettlauf mehrerer Prozesse, die gleichzeitig versuchen, dieselbe Datei zwischenzuspeichern. Diese Option legt den Prozentsatz fest, bei dem der Prozess Versuche überspringt, eine nicht zwischengespeicherte Datei zwischenzuspeichern. Oder stellen Sie sich dies als die Wahrscheinlichkeit vor, dass ein einzelner Prozess den Cache überspringt. Wenn Sie beispielsweise apc.slam_defense auf 75 setzen, bedeutet dies, dass der Prozess eine 75-prozentige Chance hat, nicht zwischengespeicherte Dateien nicht zwischenzuspeichern. Je höher die Einstellung, desto wahrscheinlicher ist es daher, die Wahrscheinlichkeit einer Cache-Kollision zu verringern. Auf 0 setzen, um diese Funktion zu deaktivieren.

apc.file_update_protection integer

Wenn Sie eine Datei auf einem laufenden Server ändern, sollten Sie atomare Vorgänge ausführen. Das heißt, schreiben Sie zuerst eine temporäre Datei und benennen Sie die Datei dann in ihren endgültigen Speicherort um (mv), wenn Sie fertig sind. Viele Texteditoren, cp, tar und einige andere ähnliche Programme funktionieren nicht auf diese Weise. Dies bedeutet, dass die Möglichkeit besteht, auf die Datei zuzugreifen und sie zwischenzuspeichern, während die Datei noch geschrieben wird. Die Einstellung von apc.file_update_protection führt dazu, dass der Cache das Markieren neuer Dateien verzögert. Der Standardwert ist 2, was bedeutet, dass die Datei nicht zwischengespeichert wird, wenn festgestellt wird, dass die Änderungszeit der Datei weniger als 2 Sekunden ab der Zugriffszeit beträgt. Unglückliche Benutzer, die auf eine halb geschriebene Datei zugreifen, werden ein bizarres Verhalten feststellen, das jedoch zumindest nicht dauerhaft auftritt. Wenn Sie sicher sind, dass Sie zum Aktualisieren Ihrer Dateien häufig atomare Operationen verwenden, können Sie diesen Schutz deaktivieren, indem Sie diesen Parameter auf 0 setzen. Wenn Ihr System mit E/A-Vorgängen überlastet ist und der Aktualisierungsvorgang mehr als 2 Sekunden dauert, müssen Sie diesen Wert möglicherweise erhöhen.

apc.enable-cli integer

dient hauptsächlich zum Testen und Debuggen, um die APC-Funktionalität für die CLI-Version von PHP zu aktivieren. Im Allgemeinen werden Sie nicht bei jeder CLI-Anfrage daran denken , Portieren und Verwerfen des APC-Cache, aber für verschiedene Testsituationen ist es einfach, APC für die CLI-Version zu aktivieren

Verwandte Empfehlungen: >Beispielcode für die Verwendung des APC-Cache in PHP

Memcached PHP Memcached + APC + Datei-Cache-Kapselungs-Implementierungscode

Detaillierte Einführung in PHP OPCode Cache APC

Das obige ist der detaillierte Inhalt vonBeispiel für die Freigabe von PHP mithilfe des APC-Moduls zur Implementierung des Upload-Fortschrittsbalkens. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

Wie analysiert und verarbeitet man HTML/XML in PHP? Wie analysiert und verarbeitet man HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

7 PHP-Funktionen, die ich leider vorher nicht kannte 7 PHP-Funktionen, die ich leider vorher nicht kannte Nov 13, 2024 am 09:42 AM

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge Feb 07, 2025 pm 12:12 PM

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Apr 03, 2025 am 12:03 AM

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.

See all articles