Rumah > rangka kerja php > Swoole > teks badan

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

王林
Lepaskan: 2023-08-05 14:25:12
asal
1128 orang telah melayarinya

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
    Salin selepas log masuk
  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();
    Salin selepas log masuk
  3. Jalankan pelayan.php
    Buka terminal, masukkan direktori akar projek dan jalankan arahan berikut untuk memulakan pelayan.

    php server.php
    Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan