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.
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi Swoole 4, komputer DELL G3
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();
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!