Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Melaksanakan Proses PHP yang Memakan Masa di Latar Belakang Tanpa Menyekat Pengguna?

Bagaimanakah Saya Boleh Melaksanakan Proses PHP yang Memakan Masa di Latar Belakang Tanpa Menyekat Pengguna?

Barbara Streisand
Barbara Streisandasal
2024-12-25 11:23:10119semak imbas

How Can I Execute Time-Consuming PHP Processes in the Background Without Blocking the User?

Melaksanakan Proses Latar Belakang dalam PHP

Melaksanakan proses yang memakan masa, seperti penyalinan direktori, tanpa menghentikan pengalaman pengguna boleh menjadi satu cabaran. Artikel ini memperkenalkan penyelesaian yang membolehkan tugasan sedemikian dijalankan di latar belakang.

Pelaksanaan Proses Latar Belakang

Untuk memulakan salinan direktori tanpa gangguan pengguna, pertimbangkan langkah berikut:

  1. Gunakan exec() untuk Melancarkan Perintah:
    Gunakan eksekutif untuk melancarkan arahan salin, mengubah hala output ke fail ($outputfile) dan menambahkan ID proses ke fail lain ($pidfile). Ini memastikan pemantauan berterusan.

    exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $cmd, $outputfile, $pidfile));
  2. Status Proses Pantau:
    Laksanakan fungsi isRunning untuk menjejak status proses berdasarkan PIDnya.

    function isRunning($pid){
        try{
            $result = shell_exec(sprintf("ps %d", $pid));
            if( count(preg_split("/\n/", $result)) > 2){
                return true;
            }
        }catch(Exception $e){}
    
        return false;
    }

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Proses PHP yang Memakan Masa di Latar Belakang Tanpa Menyekat Pengguna?. 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