Rumah > rangka kerja php > Swoole > Mengapa tidak boleh swooole menggunakan tidur?

Mengapa tidak boleh swooole menggunakan tidur?

WBOY
Lepaskan: 2022-04-13 15:09:28
asal
2743 orang telah melayarinya

Kerana dalam swoole, menggunakan fungsi tidur akan menyebabkan proses jatuh ke dalam sekatan tidur; hanya isyarat boleh mengganggu proses tidur Memandangkan isyarat swoole adalah berdasarkan signalfd, tidur tidak boleh diganggu walaupun isyarat dihantar . Sistem pengendalian tidak akan menghidupkan semula proses semasa sehingga masa yang ditetapkan.

Mengapa tidak boleh swooole menggunakan tidur?

Persekitaran pengendalian tutorial ini: sistem Windows 10, versi Swoole 4, komputer DELL G3

Mengapa sleep tidak boleh digunakan dengan swoole

dalam Dalam program IO tak segerak, sleep/usleep/time_sleep_until/time_nanosleep tidak boleh digunakan. (sleep digunakan di bawah untuk merujuk kepada semua fungsi sleep)

  • Fungsi tidur akan menyebabkan proses jatuh ke dalam sleep blocking

  • sehingga masa yang ditentukan selepas sistem pengendalian Hanya selepas itu proses semasa akan dibangkitkan semula

  • Semasa proses tidur, hanya isyarat boleh mengganggu

  • Sejak isyarat Swoole pemprosesan adalah berdasarkan signalfd , jadi tidur tidak boleh diganggu walaupun isyarat dihantar

swoole_event_add, swoole_timer_tick, swoole_timer_after, swoole_process::signal, dan swoole_process::signal akan disediakan oleh Swoolen yang berfungsi selepas proses tidur. swoole_server tidak lagi boleh mengendalikan permintaan baharu.

Program contoh

$serv = new swoole_server("127.0.0.1", 9501);
$serv->set(['worker_num' => 1]);
$serv->on('receive', function ($serv, $fd, $from_id, $data) {
    sleep(100);
    $serv->send($fd, 'Swoole: '.$data);
});
$serv->start();
Salin selepas log masuk

Fungsi tidur dilaksanakan dalam acara onReceive dan pelayan tidak boleh menerima sebarang permintaan pelanggan lagi dalam masa 100 saat.

Pembelajaran yang disyorkan: tutorial swole

Atas ialah kandungan terperinci Mengapa tidak boleh swooole menggunakan tidur?. 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