Rumah >rangka kerja php >Workerman >Pembangunan pekerja: Bagaimana untuk melaksanakan sistem pemprosesan fail kelompok berdasarkan protokol HTTP

Pembangunan pekerja: Bagaimana untuk melaksanakan sistem pemprosesan fail kelompok berdasarkan protokol HTTP

PHPz
PHPzasal
2023-11-07 12:16:501035semak imbas

Pembangunan pekerja: Bagaimana untuk melaksanakan sistem pemprosesan fail kelompok berdasarkan protokol HTTP

Pembangunan pekerja: Bagaimana untuk melaksanakan sistem pemprosesan fail kelompok berdasarkan protokol HTTP, contoh kod khusus diperlukan

Dengan pembangunan Internet dan teknologi digital, pemprosesan data menjadi semakin penting, terutamanya dalam perusahaan. Kadangkala, kita perlu memproses sejumlah besar fail, seperti gambar, video, audio, dsb. Pada masa ini, operasi manual bukan sahaja memakan masa dan intensif buruh, tetapi juga terdedah kepada kesilapan. Bagaimana untuk melaksanakan sistem pemprosesan fail kelompok adalah topik yang akan dibincangkan dalam artikel ini.

Workerman ialah rangka kerja soket berprestasi tinggi yang dibangunkan dalam PHP, yang mudah digunakan ialah ia menyediakan model pengaturcaraan dipacu peristiwa. Artikel ini akan menumpukan pada cara menggunakan Workerman untuk membangunkan sistem pemprosesan fail kelompok berdasarkan protokol HTTP. Kami boleh mencapai fungsi seperti muat naik kelompok, pemampatan dan transkod fail melalui sistem ini.

1. Sediakan persekitaran pembangunan
Pertama, kita perlu memasang PHP, Komposer dan Pekerja. Berikut ialah pengenalan kepada cara memasang Komposer. Buka alat baris arahan anda dan masukkan arahan berikut:

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"#🎜 🎜#$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"

Selepas pemasangan selesai, kita perlu menjalankan perkara berikut dalam direktori projek Perintah untuk memasang Pekerja:

$ komposer memerlukan pekerja/pekerja

2. Buat struktur projek dan direktori

Kami mencipta sistem pemprosesan fail kelompok projek, nama projek ialah fail batch, struktur direktori adalah seperti berikut:

├─applications #Application Directory

│ ├─app #Application Directory
│ ││ ││ Direktori Aplikasi HTTP
│ | fail
├─awam # Direktori akar web
│ ├─css #direktori fail CSS
│ ├─js #direktori fail JS
│ │ entri fail laman web
├─start.php #System startup file
└─composer.json #Dependency management file

Kami mencipta direktori aplikasi dalam struktur direktori, yang mengandungi direktori seperti Config , Pengawal, Acara, Perpustakaan, Model, dsb. Direktori ini digunakan untuk mengurus komponen aplikasi. Sebagai contoh, direktori Pengawal digunakan untuk mengurus kelas pengawal, dan direktori Model digunakan untuk mengurus kelas model data, dsb.

Kami mencipta fail index.php dalam direktori awam, iaitu fail masuk laman web kami. Kami akan menyediakan fail ini dalam langkah seterusnya.

3. Tulis skrip permulaan
Rangka kerja Workerman menggunakan mod Soket dan tidak boleh diakses melalui penyemak imbas. Jadi kita perlu menyimpan fail permulaan sebagai fail PHP yang berasingan. Buka fail start.php dan masukkan kod berikut:

use WorkermanWorker;require_once

DIR

/ . php';


$http_worker = Pekerja baharu("http://0.0.0.0:9000");

$http_worker->count = 4;# 🎜🎜 #
$http_worker->onWorkerStart = function($worker) {

require_once __DIR__ . '/applications/app/Http/routes.php';
};

Worker:#Worker:#runAll();#🎜🎜 #🎜 🎜#Dalam kod di atas, kami mencipta tika Worker bernama $http_worker dan memuatkan laluan fail route.php melalui acara onWorkerStart.

4. Tulis laluan

Buka fail /applications/app/Http/routes.php dan masukkan kod berikut:

$http->onMessage = function($connection, $data) {

$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

");#🎜reee 🎜🎜 #");

    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

};

Dalam kod di atas, kami menghuraikan data permintaan melalui protokol Http, memuatkan pengawal yang sepadan mengikut laluan permintaan, dan akses kaedah pengawal.

5. Tulis pengawal

Buka fail /applications/app/Http/Controllers/BatchfileController.php dan masukkan kod berikut:

namespace AppHttpControllers;

use WorkermanProtocolsHttp;

use WorkermanProtocolsHttpResponse;#🎜🎜Protokol Kerja#🎜🎜 🎜🎜#class BatchfileController

{# 🎜🎜#
    Http::end("404 Not Found");
    return;
}
$controller->$method();

}

Dalam kod di atas, kami menulis pengawal BatchfileController, yang mentakrifkan kaedah index() dan uploadFiles(Request $request).

6. Terima permintaan muat naik fail

Buka fail /applications/app/Http/Controllers/BatchfileController.php dan masukkan kod berikut dalam kaedah uploadFiles:

#🎜🎜 #public function uploadFiles(Minta $request)
{

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.',
    ]));
}

}

Dalam kod di atas, kami memperoleh fail yang dimuat naik melalui fail $request-> (), Gunakan kaedah move_uploaded_file untuk mengalihkan fail yang dimuat naik ke direktori muat naik tersuai kami, kemudian simpan maklumat fail ke dalam tatasusunan, dan akhirnya mengembalikan hasilnya.

7. Jalankan ujian
Dalam mod baris arahan, masukkan direktori projek dan laksanakan arahan php start.php untuk memulakan perkhidmatan Workerman. Jika semuanya normal, masukkan http://localhost:9000 dalam bar alamat penyemak imbas dan anda akan melihat output "Hello world". Keputusan yang dijalankan adalah seperti berikut:

Jika anda ingin menguji fungsi muat naik fail, anda boleh menggunakan arahan Posman atau curl untuk ujian simulasi. Kod sampel permintaan adalah seperti berikut:

curl -X POST
http://localhost:9000/file/upload
-H 'cache-control: no-cache'
-H 'content-type: multipart/form- data; sempadan =----WebKitFormBoundary7MA4YWxkTrZu0gW'
-F 'file1=@/path/to/file1.png'
-F 'file2=@/path/to/file2.jpg'

Pada ketika ini, kita ada berjaya menggunakan Workerman untuk membangunkan sistem pemprosesan fail kelompok berdasarkan protokol HTTP dan melaksanakan fungsi muat naik fail. Kami boleh mengembangkan lagi berdasarkan ini untuk mencapai pemampatan fail, transkod dan fungsi lain. Model pengaturcaraan dipacu peristiwa bagi rangka kerja Workerman membolehkan kami meluaskan fungsi aplikasi dengan mudah.

Atas ialah kandungan terperinci Pembangunan pekerja: Bagaimana untuk melaksanakan sistem pemprosesan fail kelompok berdasarkan protokol HTTP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn