Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara mengendalikan masa pelaksanaan PHP melebihi ralat had dan menjana gesaan ralat yang berkaitan

Cara mengendalikan masa pelaksanaan PHP melebihi ralat had dan menjana gesaan ralat yang berkaitan

王林
王林asal
2023-08-06 17:29:062741semak imbas

Cara mengendalikan ralat apabila masa pelaksanaan PHP melebihi had dan menjana gesaan ralat yang berkaitan

Apabila membangun menggunakan PHP, kadangkala anda akan menghadapi masalah: masa pelaksanaan melebihi had PHP, mengakibatkan ralat. Ralat ini akan menjana kod status HTTP Ralat Pelayan Dalaman 500 secara lalai. Sudah tentu, manifestasi ralat ini mungkin juga bergantung pada pelayan web yang anda gunakan.

Biasanya, had masa pelaksanaan PHP lalai kepada 30 saat. Walau bagaimanapun, apabila memproses sejumlah besar data, permintaan yang lama atau operasi yang berjalan lama, masa pelaksanaan mungkin melebihi had. Untuk menyelesaikan masalah ini dan memberi pengguna gesaan mesra, kami boleh mengambil kaedah berikut.

1. Tetapkan had masa pelaksanaan PHP

Kita boleh menggunakan fungsi set_time_limit() untuk menetapkan had masa pelaksanaan PHP. Fungsi ini menerima parameter integer yang mewakili had masa dalam saat. Sebagai contoh, kita boleh menetapkan had masa pelaksanaan kepada 60 saat dengan kod berikut:

set_time_limit(60);

Selepas melaksanakan fungsi ini, had masa pelaksanaan PHP akan ditetapkan kepada 60 saat.

2. Mengesan masa pelaksanaan dan menamatkan program secara aktif

Kami boleh secara aktif mengesan masa pelaksanaan dalam kod dan menamatkan program melalui fungsi exit() apabila melebihi had. Sebagai contoh, kita boleh menggunakan fungsi microtime() untuk mendapatkan cap masa semasa Kodnya adalah seperti berikut:

$start = microtime(true);
// 执行需要耗时较长的操作
$end = microtime(true);

$executionTime = $end - $start;
if ($executionTime > 30) {
    exit('执行时间超过了限制');
}

Dalam kod di atas, pembolehubah $start digunakan untuk menyimpan cap masa apabila operasi bermula, dan $end. pembolehubah digunakan untuk menyimpan masa apabila operasi tamat. Dengan mengira perbezaan antara keduanya, masa pelaksanaan operasi diperolehi.

Apabila masa pelaksanaan melebihi 30 saat, iaitu, had masa pelaksanaan PHP melebihi, program akan ditamatkan dan mesej ralat akan dikeluarkan.

3. Gunakan pengendali pengecualian berdaftar

PHP juga menyediakan kaedah pemprosesan, iaitu menggunakan pengendali pengecualian berdaftar untuk menangkap pengecualian tamat masa pelaksanaan dan mengendalikannya dengan sewajarnya. Kami boleh menyesuaikan kelas pengendalian pengecualian, kodnya adalah seperti berikut:

class TimeLimitException extends Exception {
    public function __construct($message, $code = 0, Exception $previous = null) {
        parent::__construct($message, $code, $previous);
    }
    public function __toString() {
        return __CLASS__ . ": [{$this->code}]: {$this->message}
";
    }
}

Dalam kod di atas, kami mentakrifkan kelas pengecualian bernama TimeLimitException, yang mewarisi daripada kelas Pengecualian PHP. Dengan menyesuaikan kelas pengecualian, kami boleh menangkap dan mengendalikan pengecualian apabila ia berlaku.

Kemudian, dalam kod kami, kami boleh menggunakan pernyataan try-catch untuk menangkap pengecualian tamat masa pelaksanaan Kod sampel adalah seperti berikut:

try {
    // 执行需要耗时较长的操作
    if (操作超时) {
        throw new TimeLimitException('执行时间超过了限制');
    }
} catch (TimeLimitException $e) {
    // 处理超时异常
    echo $e->getMessage();
}

Dalam kod di atas, kami melakukan operasi yang panjang dalam blok cuba. Apabila operasi tamat, kami membuang pengecualian jenis TimeLimitException melalui pernyataan lontaran. Kemudian tangkap pengecualian ini dalam blok tangkapan dan kendalikannya dengan sewajarnya, seperti mengeluarkan mesej ralat.

4. Hasilkan gesaan ralat yang berkaitan

Selain mengendalikan ralat apabila masa pelaksanaan PHP melebihi had, kami juga boleh menjana gesaan ralat yang berkaitan untuk rujukan pengguna. Kami boleh mendayakan fungsi paparan ralat dengan menetapkan parameter display_errors dalam fail konfigurasi php.ini. Sebagai contoh, menetapkan parameter display_errors kepada Hidup bermakna menghidupkan fungsi paparan ralat. Kemudian, kita juga perlu menetapkan parameter error_reporting untuk menentukan jenis ralat yang perlu dipaparkan. Contoh kod adalah seperti berikut:

// 开启错误显示功能
ini_set('display_errors', 'On');
// 显示所有错误
error_reporting(E_ALL);

Dengan tetapan di atas, PHP akan memaparkan mesej ralat pada halaman untuk rujukan pengguna apabila ralat berlaku apabila masa pelaksanaan melebihi had.

Ringkasan

Apabila berurusan dengan masa pelaksanaan PHP yang melebihi ralat had, kita boleh menggunakan fungsi set_time_limit() untuk menetapkan had masa pelaksanaan PHP. Kami juga boleh mengendalikannya dengan mengesan masa pelaksanaan dan menamatkan program secara aktif, atau dengan mendaftarkan pengendali pengecualian. Selain itu, kami juga boleh menetapkan parameter paparan ralat untuk menjana gesaan ralat yang berkaitan untuk rujukan pengguna. Tidak kira kaedah pemprosesan yang digunakan, ia akan membolehkan kami mengendalikan ralat dengan lebih baik apabila masa pelaksanaan PHP melebihi had dan memberikan pengguna gesaan mesra.

Atas ialah kandungan terperinci Cara mengendalikan masa pelaksanaan PHP melebihi ralat had dan menjana gesaan ralat yang berkaitan. 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