Heim > Artikel > PHP-Framework > Workerman-Entwicklung: So implementieren Sie ein Batch-Dateiverarbeitungssystem basierend auf dem HTTP-Protokoll
Entwickelt von Workerman: Für die Implementierung eines Batchdateiverarbeitungssystems basierend auf dem HTTP-Protokoll sind spezifische Codebeispiele erforderlich.
Mit der Entwicklung des Internets und der digitalen Technologie ist die Datenverarbeitung insbesondere in Unternehmen immer wichtiger geworden . Manchmal müssen wir eine große Anzahl von Dateien verarbeiten, z. B. Bilder, Videos, Audios usw. Derzeit ist die manuelle Bedienung nicht nur zeit- und arbeitsintensiv, sondern auch fehleranfällig. Die Implementierung eines Batch-Dateiverarbeitungssystems ist das Thema, das in diesem Artikel behandelt wird.
Workerman ist ein in PHP entwickeltes, leistungsstarkes Socket-Framework, das einfach zu verwenden ist und ein ereignisgesteuertes Programmiermodell bietet. Dieser Artikel konzentriert sich auf die Verwendung von Workerman zur Entwicklung eines Batchdateiverarbeitungssystems basierend auf dem HTTP-Protokoll. Mit diesem System können wir Funktionen wie Batch-Upload, Komprimierung und Transkodierung von Dateien erreichen.
1. Richten Sie eine Entwicklungsumgebung ein
Zunächst müssen wir PHP, Composer und Workerman installieren. Hier finden Sie eine Einführung in die Installation von Composer. Öffnen Sie Ihr Befehlszeilentool und geben Sie den folgenden Befehl ein:
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php -r "unlink('composer-setup.php');"
2. Erstellen Sie das Projekt und die Verzeichnisstruktur
Wir erstellen ein Batch-Dateiverarbeitungssystemprojekt, der Projektname ist Batchfile, die Verzeichnisstruktur ist wie folgt:
│ ├─App #Anwendungsverzeichnis
│ │ └─Http #Http-Anwendungsverzeichnis
│ │ ├─Config #Konfigurationsverzeichnis
│ │ ├─Controller #Controller-Verzeichnis
│ │ ├─Events #Event-Verzeichnis
│ │ ├─Bibliotheken #Bibliothek
│ │ ├─Modelle #Modellverzeichnis
│ │ ├ ─Aufgaben #Aufgabenverzeichnis
│ │ └─Ansichten #Verzeichnis anzeigen
│ └─config #Globale Konfigurationsdatei
├─öffentliches #Web-Stammverzeichnis
│ ├─css #CSS-Dateiverzeichnis
│ ├ ─js #JS-Dateiverzeichnis
│ └─index.php #Website-Eintragsdatei
├─start.php #Systemstartdatei
└─composer.json #Abhängigkeitsverwaltungsdatei
Das Workerman-Framework verwendet den Socket-Modus und kann nicht über den Browser aufgerufen werden. Daher müssen wir die Startdatei als separate PHP-Datei speichern. Öffnen Sie die Datei start.php und geben Sie den folgenden Code ein:
require_once __DIR__ . '/applications/app/Http/routes.php';};Worker::runAll(); Mit dem obigen Code haben wir eine Worker-Instanz namens $http_worker erstellt und die Routing-Datei „routes.php“ über das Ereignis „onWorkerStart“ geladen. 4. Routen schreiben
Öffnen Sie die Datei /applications/app/Http/routes.php und geben Sie den folgenden Code ein:
$request_data = Http::requestData($data); $request_path = $request_data['path']; if (($pos = strpos($request_path, '?')) !== false) { $request_path = substr($request_path, 0, $pos); } $controller_action = str_replace('/', '\', $request_path); $controller_action = ucfirst(strtolower($controller_action)); $controller_action = str_replace('-', '', $controller_action); $controller_action = trim($controller_action, '\'); $controller_action = 'App\Http\Controllers\' . $controller_action . 'Controller'; if (!class_exists($controller_action)) { Http::header("HTTP/1.1 404 Not Found");
Http::end("404 Not Found"); return; } $controller = new $controller_action(); $method = isset($request_data['query']['method']) ? $request_data['query']['method'] : 'index'; if (!method_exists($controller, $method)) { Http::header("HTTP/1.1 404 Not Found");
Http::end("404 Not Found"); return; } $controller->$method();};Im obigen Code analysieren wir die Anforderungsdaten über das HTTP-Protokoll, laden den entsprechenden Controller entsprechend der Anforderungsroute und Greifen Sie auf die Controller-Methode zu. 5. Schreiben Sie den Controller
Öffnen Sie die Datei /applications/app/Http/Controllers/BatchfileController.php und geben Sie den folgenden Code ein:
use WorkermanProtocolsHttpResponse;
use WorkermanProtocolsHttpRequest ;
{
public function index() { return new Response('Hello world'.PHP_EOL); } public function uploadFiles(Request $request) { $files = $request->file(); if(empty($files)){ return new Response(json_encode([ 'message' => 'No files were uploaded.', ])); } //处理你需要处理的逻辑 return new Response(json_encode([ 'message' => 'Files uploaded successfully.', ])); }}Im obigen Code haben wir einen BatchfileController-Controller geschrieben, der die Methoden index() und uploadFiles(Request $request) definiert. 6. Datei-Upload-Anfrage empfangen
Öffnen Sie die Datei /applications/app/Http/Controllers/BatchfileController.php und geben Sie den folgenden Code in die uploadFiles-Methode ein:
{
$files = $request->file(); if(empty($files)){ return new Response(json_encode([ 'message' => 'No files were uploaded.', ])); } $result = []; foreach ($files as $name => $file) { $path = 'uploads/' . $file['name']; if(move_uploaded_file($file['tmp_name'], $path)){ $result[] = [ 'name' => $file['name'], 'type' => $file['type'], 'size' => $file['size'], 'path' => $path, ]; } } //处理你需要处理的逻辑 return new Response(json_encode([ 'message' => 'Files uploaded successfully.', 'files' => $result, ]));} Im obigen Code erhalten wir die hochgeladene Datei über die Methode $request->file(), verwenden die Methode move_uploaded_file, um die hochgeladene Datei in unser benutzerdefiniertes Upload-Verzeichnis zu verschieben, speichern dann die Dateiinformationen in einem Array und schließlich das Ergebnis zurückgeben.
7. Führen Sie den Test aus
Geben Sie im Befehlszeilenmodus das Projektverzeichnis ein und führen Sie den Befehl php start.php aus, um den Workerman-Dienst zu starten. Wenn alles normal ist, geben Sie http://localhost:9000 in die Adressleiste des Browsers ein und Sie sehen die Ausgabe „Hallo Welt“. Die laufenden Ergebnisse lauten wie folgt:
Wenn Sie die Funktion zum Hochladen von Dateien testen möchten, können Sie Postman- oder Curl-Befehle für Simulationstests verwenden. Der Anforderungsbeispielcode lautet wie folgt:
curl -X POST
http://localhost:9000/file/upload
-H 'cache-control: no-cache'
-H 'content-type: multipart/form- data; border =----WebKitFormBoundary7MA4YWxkTrZu0gW'
-F 'file1=@/path/to/file1.png'
-F 'file2=@/path/to/file2.jpg'
An diesem Punkt haben wir Workerman wurde erfolgreich für die Entwicklung eines Batch-Dateiverarbeitungssystems verwendet, das auf dem HTTP-Protokoll basiert und die Funktion zum Hochladen von Dateien implementiert. Auf dieser Basis können wir weiter ausbauen, um Dateikomprimierung, Transkodierung und andere Funktionen zu erreichen. Das ereignisgesteuerte Programmiermodell des Workerman-Frameworks ermöglicht es uns, die Funktionalität der Anwendung einfach zu erweitern.
Das obige ist der detaillierte Inhalt vonWorkerman-Entwicklung: So implementieren Sie ein Batch-Dateiverarbeitungssystem basierend auf dem HTTP-Protokoll. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!