Rumah > Artikel > rangka kerja php > Apakah faedah swoole
Faedah swole: 1. Pekerja web berbilang dan pekerja tugas yang berasingan, supaya kod boleh ditangguhkan; 2. Sokongan Coroutine; 3. Tidak perlu memasang pelayan web lain; .
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi Swoole 4, komputer DELL G3
Apakah itu Swooole?
Swoole ialah rangka kerja pengaturcaraan PHP tak segerak berdasarkan coroutine.
Ia dibangunkan terutamanya oleh pembangun China yang mengusahakan aplikasi berskala besar yang menyasarkan pasaran China. Oleh itu, ia telah diuji tekanan dan disahkan dalam persekitaran pengeluaran trafik tinggi. Ini adalah teknologi yang anda boleh bergantung sepenuhnya dan ia menarik untuk digunakan!
Faedah Swoole
Swoole mempunyai banyak faedah termasuk berbilang pekerja web dan pekerja tugas berasingan, sokongan coroutine dan paparan Dengan keupayaan untuk meningkatkan had permintaan.
Sokong berbilang Pekerja Web
Sokong pekerja tugas berasingan
Sokongan Coroutine
Tiada pelayan web diperlukan
Boleh meningkatkan had permintaan
Pelayan kerja web berbilang dan berasingan pekerja tugas
Seperti yang dinyatakan di atas, Swoole mempunyai berbilang pekerja web dan pekerja tugas yang berasingan, membenarkan kod ditangguhkan. Menangguhkan proses yang berjalan lama membuka pintu kepada banyak kaedah yang sebelum ini tidak boleh dicapai dalam API dan aplikasi anda, seperti menangguhkan pemprosesan sehingga selepas respons dihantar.
Sokongan Coroutine
Sokongan Coroutine Swoole bermakna walaupun anda melakukan banyak I/O yang mahal (cth. bercakap dengan pangkalan data, menggunakan sistem fail, mengeluarkan Permintaan HTTP), anda juga boleh mengendalikan banyak permintaan.
Bootstrap hanya dimuatkan sekali, jadi anda tidak membayar cukai 15% hingga 25% untuk setiap permintaan. Kerana ini adalah sebahagian daripada permulaan, ini bermakna anda menggunakan lebih sedikit sumber pada setiap permintaan, termasuk RAM dan CPU. Untuk sesetengah aplikasi ini mungkin bermakna anda memerlukan lebih sedikit pelayan, yang mungkin disebabkan oleh masa jalan tak segerak.
Tiada pelayan web tambahan diperlukan
Bercakap tentang lebih sedikit pelayan, anda tidak memerlukan pelayan web kerana Swoole ialah pelayan web. Anda boleh memulakan bekas Docker yang hanya memasang PHP dan tidak memerlukan NGINX dipasang di hadapannya.
Anda tidak perlu menulis NGINX atau Apache dalam bekas yang sama, ia hanya boleh menjadi PHP. Dan jika anda akan melakukan apa-apa jenis kontena, memiliki bekas proses tunggal ini semuanya dalam satu bahasa adalah standard emas.
Siling Keperluan Lebih Tinggi
Menariknya, ahli Rangka Kerja Zend dan komuniti Laminas percaya bahawa pelayan async mampu mengendalikan empat permintaan yang boleh dicapai oleh persediaan standard tujuh kali.
Pasti, anda boleh menala Apache dan NGINX menjadi sangat pantas, tetapi anda boleh menjadi lebih pantas dengan pelayan tak segerak, dan Node telah membuktikannya berulang kali.
Kelemahan
Walaupun faedah yang disenaraikan di atas boleh membawa manfaat yang ketara kepada aplikasi PHP, Swoole masih mempunyai beberapa kelemahan yang ketara .
Kelemahan ini mungkin termasuk:
Pemasangan semula kod
Nyahpepijat
Seorang pendengar setiap acara
Kaedah "end()" Respons Swoole
API permintaan/tindak balas bukan standard
Memuat Semula Kod
Sebagai pembangun PHP, kami biasa membuat perubahan pada kod kami dan kemudian memuatkan semula penyemak imbas untuk melihat kesan perubahan.
Malangnya, keupayaan untuk memuat semula kod tiada dalam Swoole. Itu kerana ia adalah proses yang panjang. Jadi apabila ia dimuat semula, ia menggunakan kod yang sama seperti sebelum perubahan.
Terdapat beberapa fungsi muat semula kod panas dalam Swoole, tetapi pada masa ini tiada cara untuk memuat semula apa-apa yang diperlukan untuk bootstrap contoh pelayan sebenar (fikirkan contoh aplikasi, bekas DI, konfigurasi) itu sendiri.
Nyahpepijat
Nyahpepijat boleh menjadi satu cabaran memandangkan sokongan coroutine Swoole tidak serasi dengan Xdebug dan Xhprof. Anda perlu membiasakan diri dengan pembalakan.
Kaedah "tamat" balas
Dalam Swoole, jika anda terlupa memanggil "$response->end()", sambungan akan kekal terbuka sehingga A network tamat masa berlaku. Ini bermakna bahawa proses semasa kekal terbuka, yang bermaksud gelung peristiwa tidak lagi wujud. Akhirnya ini akan menyebabkan tamat masa, dan tamat masa akan diperoleh, tetapi tamat masa masih menjadi isu.
Jadi jika anda boleh abstrak daripada itu, anda boleh mengelakkan sakit kepala. (Fungsi ini diperlukan supaya Swoole tahu apabila respons selesai dan boleh membebaskan pekerja untuk mengendalikan permintaan lain; namun, dari perspektif pengguna, ini adalah masalah kerana mudah terlupa untuk memanggilnya.)
Jadi ini adalah ciri yang sangat berguna dan mudah dalam masa jalan Swoole, tetapi adalah lebih baik jika anda boleh mengelak daripada melakukannya dalam kod anda sendiri.
API permintaan/tindak balas bukan standard
Kaedah "$response->end()" ialah contoh API permintaan/tindak balas bukan standard dalam Swoole. Ia tidak mengikut spesifikasi PSR-7 (antara muka pemesejan HTTP PHP) atau bahkan sebarang pelaksanaan rangka kerja seperti HTTPKernel atau laminas-http Symfony.
Jadi, jika anda menulis Swoole secara langsung tetapi masih mahu menggunakan rangka kerja anda sendiri, anda perlu menyesuaikan diri - tetapi ini boleh menjadi masalah.
Pembelajaran yang disyorkan: tutorial swole
Atas ialah kandungan terperinci Apakah faedah swoole. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!