Rumah  >  Artikel  >  rangka kerja php  >  Muat naik dan muat turun fail berprestasi tinggi pelaksanaan fungsi pembangunan swoole

Muat naik dan muat turun fail berprestasi tinggi pelaksanaan fungsi pembangunan swoole

王林
王林asal
2023-08-05 14:25:121077semak imbas

Muat naik dan muat turun fail berprestasi tinggi pelaksanaan fungsi pembangunan Swoole

Pengenalan:
Dalam aplikasi web moden, muat naik dan muat turun fail adalah salah satu fungsi penting. Walau bagaimanapun, kaedah muat naik dan muat turun fail tradisional mungkin menghadapi kesesakan prestasi semasa memproses fail besar, yang menjejaskan kelajuan respons tapak web. Swoole ialah enjin komunikasi rangkaian tak segerak dan serentak PHP berprestasi tinggi Ia boleh membantu kami menyelesaikan masalah ini dan mencapai muat naik dan muat turun fail berprestasi tinggi.

1. Persediaan persekitaran yang diperlukan
Pertama, kita perlu menyediakan persekitaran asas.

  1. Pasang sambungan Swoole
    Mula-mula pastikan PHP dipasang dan versinya melebihi 7.0. Kemudian, pasang sambungan Swoole menggunakan arahan berikut.

    pecl install swoole
  2. Tulis fail server.php
    Buat fail server.php dalam direktori akar projek sebagai pelayan muat naik dan muat turun kami. Kodnya adalah seperti berikut:

    <?php
    $server = new SwooleHTTPServer("0.0.0.0", 9501);
    $server->on('request', function ($request, $response) {
        // 处理文件上传请求
        if(isset($request->files['file'])){
            $file = $request->files['file'];
            $file['file_data'] = file_get_contents($file['tmp_name']);
            file_put_contents('./uploads/'.$file['name'], $file['file_data']);
            $response->end('File uploaded successfully');
        }
        // 处理文件下载请求
        elseif(isset($request->get['file_name'])){
            $file_name = $request->get['file_name'];
            $file_path = './uploads/'.$file_name;
            if(file_exists($file_path)){
                $response->header('Content-Type', 'application/octet-stream');
                $response->header('Content-Disposition', 'attachment; filename="'.$file_name.'"');
                $response->sendfile($file_path);
            }else{
                $response->end('File not found');
            }
        }
    });
    $server->start();
  3. Jalankan pelayan.php
    Buka terminal, masukkan direktori akar projek dan jalankan arahan berikut untuk memulakan pelayan.

    php server.php

2. Laksanakan muat naik fail
Kini, kita boleh menggunakan Swoole untuk mencapai muat naik fail berprestasi tinggi. Buat borang dalam penyemak imbas untuk memuat naik fail ke pelayan. Kodnya adalah seperti berikut:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>File Upload</title>
</head>
<body>
    <form action="http://localhost:9501" method="post" enctype="multipart/form-data">
        <input type="file" name="file">
        <input type="submit" value="Upload">
    </form>
</body>
</html>

3 Laksanakan muat turun fail
Untuk melaksanakan fungsi muat turun fail, kami boleh membuat pautan dalam pelayar dan klik pautan untuk mencetuskan operasi muat turun. Kodnya adalah seperti berikut:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>File Download</title>
</head>
<body>
    <a href="http://localhost:9501/?file_name=test.txt">Download</a>
</body>
</html>

Ringkasan:
Melalui langkah di atas, kami berjaya melaksanakan fungsi muat naik dan muat turun fail berprestasi tinggi berdasarkan Swoole. Mekanisme tidak menyekat asynchronous Swooole membolehkan kami mengendalikan pemindahan fail besar dan meningkatkan kelajuan tindak balas tapak web. Jika anda mempunyai keperluan prestasi yang lebih tinggi, anda boleh menggunakan lebih banyak ciri dan fungsi yang disediakan oleh Swoole untuk pengoptimuman.

Contoh kod: https://github.com/example/swoole-file-upload-download

Atas ialah kandungan terperinci Muat naik dan muat turun fail berprestasi tinggi pelaksanaan fungsi pembangunan swoole. 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