PHP mempunyai pelbagai jenis aplikasi, terutamanya dalam pembangunan program web Menurut statistik Wikipedia terkini, pada April 2013, PHP telah dipasang Terdapat lebih banyak lagi daripada 244 juta tapak web dan 2.1 juta pelayan, dan menurut laporan W3Techs, sehingga September 2021, 78.9% tapak web menggunakan PHP. Jadi PHP adalah bahasa nombor satu di dunia, sekurang-kurangnya dalam bidang pembangunan web, yang bukan jenaka.
Dari segi pemilihan teknologi, PHP terutamanya menggunakan LAMP (nama penuh Linux apache mysql php) atau LNMP (nama penuh Linux nginx mysql php ini menggalakkan kemakmuran ekosistem pembangunan web PHP). dan kejayaan perniagaan.
Dalam model pembangunan tradisional, pembangun sendiri perlu memasang, menyelenggara dan menaik taraf pelbagai perisian:
Jika anda seorang pengguna perusahaan, jika volum perniagaan meningkat atau untuk kestabilan dan ketersediaan persekitaran pengeluaran, menggunakan pengimbangan beban ialah pilihan yang tidak dapat dielakkan:
Pada masa ini, pembangun PHP atau pelajar operasi dan penyelenggaraan dalam talian mempunyai lebih banyak perkara yang perlu dibimbangkan:
Setiap mesin pengeluaran tambahan perlu dipasang semula Untuk perisian yang berkaitan, buat nginx yang sama konfigurasi dan konfigurasi php-fpm, dan mengekalkan kemas kini keselamatan untuk setiap mesin pengeluaran
Jika aplikasi yang dibangunkan memerlukan sambungan baharu, pengisian manusia mungkin diperlukan setiap kali Tambah pengembangan pada setiap mesin
Pengimbang beban dinaik taraf apabila perniagaan berubah, dan mesin Pekerja seterusnya menutup telefon Cara mengendalikan operasi dan penyelenggaraan
Cara berurusan. dengan kemuncak dan palung perniagaan untuk meningkatkan penggunaan sumber
...
Jika anda seorang pengguna perusahaan dengan bilangan ahli pembangunan yang besar dalam pasukan projek, adakah tidak perlu mengkonfigurasi mesin Linux dengan NLP dipasang untuk setiap pembangunan sebagai mesin pembangunan dan ujian (atau berbilang orang berkongsi mesin)?
Jika anda seorang ISV, syarikat penyumberan luar atau syarikat permulaan yang menyediakan pembangunan laman web dan pengehosan, dan pelanggan saya adalah portal bagi perusahaan kecil dan sederhana, bagaimana saya boleh meningkatkan bahagian belakang saya penggunaan sumber mesin dan lebih baik menyediakan perkhidmatan tersuai?
Jika anda seorang pelajar atau sedang bersiap untuk mempelajari pembangunan PHP dan hanya mempunyai komputer Windows secara tempatan, bolehkah anda terus mendapatkan persekitaran LNP (Linux Nginx PHP) untuk pembelajaran secara hampir percuma?
...
Dengan soalan ini, mari kita terokai cara Tanpa Pelayan menyelesaikan masalah kesakitan ini.
Apakah itu Tanpa Pelayan?
Serverless = Faas (Fungsi sebagai perkhidmatan) Baas (Backend as a service), kita boleh dengan cepat memahami konsep berkaitan melalui dua rajah:
Mod tradisional
Mod tanpa pelayan
CDN dan OSS dalam gambar adalah perkhidmatan BaaS, dan FC ialah platform FaaS dengan logik fungsi tersuai melalui perbandingan ini, kami boleh mendapatkan ciri dan faedah FaaS dengan cepat:
Anda hanya perlu menumpukan pada pembangunan kod perniagaan dan menulis logik yang sepadan
Skala keanjalan muktamad, tidak perlu mengurus pelayan
Bayar semasa anda pergi , setiap panggilan dibilkan dalam milisaat
...
Tanpa pelayan yang dibincangkan kemudian dalam artikel ini terutamanya merujuk kepada FaaS , seperti yang ditunjukkan dalam rajah berikut, beberapa Selepas baris kod ditulis dan disimpan ke platform FaaS vendor awan, API Web yang fleksibel dan sangat tersedia telah siap.
PHP ialah bahasa yang sangat besar untuk komuniti pembangunan, FaaS vendor awan utama, seperti Alibaba Cloud's Function Compute, AWS's Lambda (melalui sokongan Tidak Langsung Custom Runtime ), Tencent's SCF, dsb. semuanya telah melancarkan sokongan untuk bahasa PHP Menghadapi amalan inovasi teknologi tanpa pelayan dalam medan bahagian hadapan (jika anda berminat, lihat lampiran pada akhir artikel ini), phper tidak boleh kurang. pemurah. Mengambil Alibaba Cloud Function Computing sebagai contoh, terdapat banyak pembangun PHP yang mempunyai banyak amalan menarik:
Gunakan sambungan gd atau ImageMagick secara langsung untuk mencapai imej yang fleksibel dan sangat tersedia, tera air, dsb. Sejenis API intensif CPU
Gunakan tika prestasi ffmpeg secara langsung untuk membuat panggilan stateful tak segerak untuk melengkapkan perkhidmatan pemprosesan audio dan video seperti penyuntingan dan sintesis video
Gunakan HTTP Fungsi yang dilaksanakan oleh pencetus dibenamkan dalam platform pengiklanan untuk merealisasikan perniagaan pembelian dengan ketersediaan tinggi dengan cepat
Pindahkan API WEB yang dilaksanakan sebelum ini berdasarkan rangka kerja ( seperti ThinkPHP) ke platform FaaS , tidak lagi perlu risau tentang masa henti dan isu operasi dan penyelenggaraan
...
Walaupun FaaS menyelesaikan masalah phper berikut dengan baik:
Perniagaan baharu atau pembangunan API web baharu
Dalam perniagaan sedia ada, beberapa API yang Intensif CPU atau memerlukan keanjalan yang tinggi diasingkan secara berasingan FaaS
Walau bagaimanapun, model pembangunan tradisional atau perniagaan sedia ada mempunyai kos tertentu untuk pembangun untuk memulakan dan mengubah Sebagai contoh, Faas tertentu contoh antara muka pengaturcaraan PHP Runtime vendor:
function handler($event, $context) { $eventObj = json_decode($event, $assoc = true); // do your thhings // .... return $eventObj['key']; }
Tetapi bolehkah kita pergi satu langkah lebih jauh lagi? secara tradisinya dijalankan pada LAMP atau LNMP ke FaaS?
Jawapannya ialah ya
Waktu Jalan Tersuai Alibaba Cloud Function Compute dan model pengaturcaraan minimalisnya berdasarkan protokol HTTP berada di barisan hadapan bagi semua vendor awan.
Apabila Function Compute memulakan persekitaran pelaksanaan Custom Runtime, ia akan memanggil fail bootstrap secara lalai (atau parameter Args yang anda tetapkan semasa mencipta fungsi) untuk memulakan HTTP tersuai anda Pelayan, dan kemudian Pelayan HTTP ini mengambil alih semua permintaan daripada sistem pengkomputeran fungsi, iaitu, semua permintaan panggilan fungsi anda.
Sistem asas persekitaran pelaksanaan masa jalan Tersuai Function Compute ialah Linux dan mempunyai nginx/1.10.3 dan php-fpm7.4 terbina dalam Untuk aplikasi PHP, anda boleh menggunakannya secara langsung
untuk menggunakan Mengambil projek wordpress sebagai contoh, anda hanya perlu membungkus direktori berikut terus ke dalam pakej zip untuk mencipta fungsi pada platform pengkomputeran fungsi:
- bootstrap - nginx.conf - php-fpm.conf - php.ini-production - wordpress
di mana direktori wordpress adalah yang sepadan projek web, dan bootstrap adalah untuk memulakan nginx dan Skrip php-fpm boleh digunakan:
... echo "start php-fpm" php-fpm7.4 -c /code/php.ini-production -y /code/php-fpm.conf echo "start nginx" nginx -c /code/nginx.conf ...
bootstrap Untuk butiran, sila rujuk WordPress dalam FC
Jadi, selepas menggunakan produk Function Compute Serverless dan pembangunan PHP tradisional, anda tidak boleh lagi Tidak perlu memikirkan tentang pengimbangan beban, tidak perlu memikirkan pengembangan dan pengecutan, tidak perlu mengurus mesin, tidak perlu risau tentang masa henti, dsb. Anda hanya perlu membangunkan kod perniagaan dengan ketenangan fikiran.
Seperti yang dapat dilihat dari gambar di atas: pembangun hanya perlu membangunkan kod perniagaan mereka sendiri Satu-satunya perkara yang perlu dipertimbangkan ialah bahagian pengkomputeran fungsi tidak sepatutnya kembangkan terlalu banyak. Jika ia terlalu kuat (contohnya, menetapkan secara langsung bilangan kejadian maksimum yang fungsi itu boleh muncul di bawah tetapan platform pengkomputeran fungsi), ia akan memberi tekanan yang terlalu tinggi pada pangkalan data MySQL hiliran.
Sudah tentu, apabila berhijrah sepenuhnya daripada aplikasi web PHP tradisional asal kepada platform pengkomputeran fungsi tanpa pelayan, isu kegigihan data mungkin perlu dipertimbangkan dalam beberapa senario, kerana pengkomputeran fungsi adalah tanpa kewarganegaraan. , ketekunan data boleh dilengkapkan dengan bantuan NAS, Redis dan perkhidmatan lain Mengambil NAS sebagai contoh, carta alir adalah seperti berikut:
<🎜. >Mengambil WordPress sebagai contoh, Imej latar belakang yang dimuat naik oleh sistem atau fungsi Sesi perlu dikekalkan ke cakera.
.
比如将 wordpress 工程不作为函数的代码包的一部分, 而已提前上传到 NAS 盘, 只需要设置好 nginx.conf 中的 root 能知道 web 工程即可, 如上面的 nginx.conf, /mnt/auto 表示挂载的 NAS 目录,mnt/auto/wordpress 则表示在 NAS 上的 web 工程。
此时对您来说, 函数再也不用变了, 您可能只是需要开发新的业务代码, 然后上传到 NAS 上即可(或者直接使用 git 直接在 NAS 操作,实现 web 工程的版本和 git 上的 commit 绑定, 使用 git 实现代码的快速升级和混滚)
但是从安全生产的角度来说, 还是建议您 web 工程变更最好和函数的变更相关联
小结
从上面的讨论和陈述中, 我们不难发现, PHP 遇见 Serverless 是一件令人兴奋的事情, 让 phper 有了更大的想象空间。 Serverless 的理念和 PHP 这个语言出现的理念也是一致的: 即让开发者最大精力集中在自己的业务价值。 PHP 语言一直是 web 领域最好的生产力代表, 而 Serverless 将会让 PHP 如虎添翼。
我们最后来一一解答下前言中提出的问题:
如果您是一个企业用户, 业务体量变大或者为了生产环境的稳定和可用性, 如何做?
如上面陈述, 使用函数计算和传统的 PHP 开发相结合后, 您再也不用考虑负载均衡的事情, 不用考虑扩缩容的事情, 不用管理机器、担心宕机的事情等等, 只需要安安心心把业务代码开发好即可。
如果您是项目组开发成员比较多的企业用户,能不能不需要给每个开发配置一个安装的 NLP 的 Linux 机器作为开发测试机器(或者多人共享一个机器)?
是的, 每个开发者在函数计算上创建一个自己的 Service/函数即可, Service/函数配置开发测试环境的 VPC,实现内网安全访问数据库等其他下游服务。 函数调用的时候, 函数计算会拉一个 NLP 的执行环境来运行您分支上正在开发的 PHP 代码。
每个执行环境是相互隔离的
按调用次数计费, 不需要预留机器, 免除了机器成本上的浪费
也可以很方便进行压测等各种事宜
如果您是一个提供网站开发和托管的 ISV 、外包公司或者创业公司, 我的客户都是一些中小企业的门户网站, 我怎么提高我后端机器资源利用率以及更好提供定制化服务?
通常来说, 很多企业门户网站访问量不大, 但是网站挂掉了会引起客户投诉。每个客户的网站通过service 或者函数区分, 通过函数名或者service去区分您自己的客户: i. 管理方便 ii. 做定制化方便 iii. 做不同vip等级服务方便。 举个例子, 您可以快速通过某个函数的调用指标情况, 可以看出哪个客户的网站访问量大,可以做出客户画像以及制定不同的收费和 vip 服务级别。
如果您是一个学生或者准备学习 PHP 开发,本地只有 Windows 电脑, 能不能直接近乎免费的方式获取 LNP(Linux+Nginx+PHP) 的环境用来学习呢?
是的, 只要将如下的文件和文件夹打包成 zip 包去函数计算控制台创建函数即可
- bootstrap - nginx.conf - php-fpm.conf - php.ini-production - myweb | - hello.php
这里构建了一个钉钉群: 31897696, 如果您对 PHP 落地 Serverless 感兴趣,您有观点、想法或者想吐槽的, 可以和大家一起交流。
本文作者:罗松(西流)
阿里云函数计算技术专家
负责阿里云函数计算产品功能开发(runtime 开发、事件源集成以及企业级 Serverless 解决方案落地等),目前专注在 Serverless 开发者工具链的建设,是云原生 Serverless Dev Tools 研发负责人,主导了 S/fc 等组件的开发工作,关注 Serverless 最新技术动态以及企业级解决方案的落地,致力于推动 Serverless 在开发者群体的流行。
Atas ialah kandungan terperinci PHP bertemu Tanpa Pelayan untuk membantu anda menyelesaikan masalah kesakitan ini!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!