Rumah >pembangunan bahagian belakang >tutorial php >Cara Mempercepat Penggunaan API Aplikasi Anda '
Apabila membangunkan aplikasi PHP, anda mungkin menghadapi situasi di mana anda perlu berinteraksi dengan sumber atau perkhidmatan terpencil. Untuk melanjutkan fungsi aplikasi anda, anda boleh menggunakan pelbagai perkhidmatan API untuk mendapatkan data jauh, sambungkan ke akaun pengguna laman web lain, atau menukar sumber yang dikongsi oleh aplikasi anda. Laman web ProgrammableWeb menunjukkan bahawa pada masa ini terdapat lebih daripada 10,000 API yang terdapat di web, jadi anda dapat mencari banyak perkhidmatan untuk memperluaskan fungsi aplikasi PHP anda. Walau bagaimanapun, penggunaan API yang salah dapat dengan cepat menyebabkan masalah prestasi dan memperluaskan masa pelaksanaan skrip. Jika anda ingin mengelakkan ini, pertimbangkan untuk melaksanakan beberapa penyelesaian yang diterangkan dalam artikel ini.
yang direka untuk melakukan ini. curl_multi
adalah serupa dengan menggunakan perpustakaan curl untuk membuat permintaan tipikal dalam PHP. Satu -satunya perbezaan ialah anda perlu menyediakan satu set permintaan untuk dilakukan (bukan hanya satu), gunakan fungsi curl_multi
dan lulus ke fungsi curl_init
. Kemudian, memanggil fungsi curl_multi_add_handle
akan melaksanakan permintaan secara serentak, dan curl_multi_exec
akan membolehkan anda mendapatkan hasil setiap panggilan API. Sila baca di sini untuk melihat contoh kod yang melaksanakan logik. curl_multi_getcontent
dalam aplikasi PHP anda, terdapat beberapa perkara penting yang perlu diperhatikan. Pertama, masa pelaksanaan fungsi curl_multi
akan selagi panggilan API yang paling lambat dalam set permintaan yang diluluskan ke fungsi curl_multi_exec
. Oleh itu, hanya masuk akal untuk menggunakan curl_multi_add_handle
apabila masa yang diambil untuk setiap panggilan API adalah sama. Sekiranya terdapat permintaan dalam set curl_multi
yang jauh lebih perlahan daripada yang lain, skrip anda tidak akan dapat meneruskan pelaksanaan sehingga permintaan paling lambat selesai. curl_multi
juga penting bahawa anda perlu menentukan bilangan permintaan selari yang boleh dilaksanakan pada satu masa. Ingatlah bahawa jika laman web anda mengendalikan banyak trafik dan setiap pengguna mencetuskan panggilan API serentak ke pelayan jauh, jumlah permintaan yang dilaksanakan pada satu masa dapat dengan cepat mendapat tinggi. Pastikan anda menyemak sekatan yang dinyatakan dalam dokumentasi API dan pelajari bagaimana perkhidmatan akan bertindak balas apabila anda mencapai sekatan ini. Apabila anda mencapai had, pelayan jauh boleh menghantar kod respons atau mesej ralat HTTP tertentu. Permohonan anda harus mengendalikan situasi sedemikian dengan betul atau meletakkannya dalam log supaya anda dapat mendiagnosis masalah dan mengurangkan bilangan permintaan.
Jika anda ingin menyimpan aplikasi web anda responsif dan elakkan melayani halaman pemuatan perlahan, sejumlah besar panggilan API ke pelayan terpencil boleh membuat tugas ini lebih sukar. Jika semua permintaan dibuat dalam aliran aplikasi utama, pengguna akhir tidak akan melihat halaman yang diberikan sehingga skrip PHP menerima respons API dan memproses data. Sudah tentu, terdapat banyak perkhidmatan API yang dihoskan di pelayan cepat dan boleh mengendalikan permintaan dengan cepat. Walau bagaimanapun, aplikasi anda mungkin kadang -kadang diperlahankan oleh kelewatan sambungan atau beberapa faktor rawak yang mempengaruhi proses sambungan atau pelayan jauh itu sendiri.
Jika anda ingin melindungi pengguna akhir dari masalah tersebut, anda perlu memisahkan bahagian aplikasi yang bertanggungjawab untuk mengendalikan permintaan dari proses utama ke dalam skrip berasingan. Ini bermakna panggilan API akan dilaksanakan dalam benang berasingan yang tidak mengganggu bahagian kod yang bertanggungjawab untuk memaparkan tapak.
Untuk melaksanakan penyelesaian sedemikian, anda boleh menulis skrip PHP yang berasingan dan melaksanakannya menggunakan fungsi exec()
, sama seperti mana -mana aplikasi baris arahan. Rangka kerja PHP yang berbeza sering menyediakan modul yang memudahkan skrip baris perintah menulis dan membolehkan anda dengan mudah mengintegrasikannya ke dalam model atau komponen aplikasi sedia ada. Cukup periksa komponen Konsol Symfony2 atau CakePHP untuk melihat beberapa contoh. Pelbagai platform PHP (bukan sekadar kerangka) juga boleh menyediakan alat yang membuat skrip baris perintah menulis lebih mudah, seperti WP CLI (antara muka baris arahan untuk WordPress).
Jika anda mencari cara yang lebih berkuasa untuk mengendalikan panggilan API dalam proses yang berasingan, pertimbangkan untuk menyediakan pelayan kerja, seperti Gearman. Pelayan kerja adalah penyelesaian lengkap yang melaksanakan semua operasi yang diperlukan untuk memisahkan tugas tertentu (pekerjaan) ke dalam proses yang berasingan. Baca Alireza Rahmani Khalili Bermula dengan Artikel Gearman untuk mengetahui bagaimana ia berfungsi dan bagaimana melaksanakannya dalam PHP. Jika anda bekerja di platform Zend Server, anda boleh menggunakan komponen giliran kerja Zend, yang menyediakan fungsi yang sama. Contoh -contoh fungsinya dan penggunaannya diterangkan dalam artikel "Penjadualan dengan Zend Job Queue" yang ditulis oleh Alex Stetsenko.
Tidak kira penyelesaian yang anda pilih untuk memisahkan panggilan API, anda perlu mempertimbangkan bagaimana bahagian -bahagian yang berbeza dari aplikasi anda berkomunikasi antara satu sama lain. Pertama, anda harus meletakkan data yang anda terima dari panggilan API di mana seluruh bahagian aplikasi boleh diakses (seperti jadual pangkalan data atau fail). Anda juga mesti berkongsi status pelaksanaan skrip individu. Permohonan utama mesti tahu sama ada panggilan API yang dilaksanakan secara luaran sedang berjalan, jika ia telah selesai lama atau jika ia telah gagal. Jika anda sedang mempertimbangkan untuk menggunakan penyelesaian pelayan kerja, ia mungkin memberikan keupayaan untuk memantau status pekerjaan. Walau bagaimanapun, jika anda hanya mahu melekat untuk menulis skrip baris arahan PHP yang mudah, anda perlu melaksanakan logik jenis ini sendiri.
Permintaan HTTP berganda atau pelbagai thread?
Oleh itu, penyelesaian mana yang lebih baik - untuk melaksanakan permintaan HTTP berganda sekaligus menggunakan fungsi curl_multi
, atau untuk memisahkan panggilan API dari proses permohonan utama? Ia bergantung kepada konteks pertanyaan pelayan jauh. Anda mungkin mendapati bahawa keseluruhan panggilan API mengambil masa yang lama untuk memproses skrip, bukan sahaja kerana permintaan itu. Terdapat juga sejumlah besar kod yang bertanggungjawab untuk memproses data yang diterima, terutamanya apabila memproses fail yang diubah atau melaksanakan sejumlah besar pangkalan data menulis. Dalam kes ini, menggunakan fungsi curl_multi
mungkin tidak mencukupi untuk mempercepatkan aplikasi. Menjalankan benang berasingan yang bertanggungjawab untuk keseluruhan data operasi dan pemprosesan yang diterima dari hos jauh boleh menghasilkan hasil yang lebih baik dalam prestasi aplikasi. Sebaliknya, jika anda perlu melaksanakan banyak panggilan API mudah yang tidak melibatkan pemprosesan data berat di sisi anda, melekat dengan fungsi curl_multi
mungkin cukup untuk menjadikan aplikasi anda lebih cepat.
Sudah tentu, terdapat penyelesaian ketiga - mencampurkan dua kaedah di atas. Oleh itu, anda boleh menjalankan thread berasingan yang bertanggungjawab untuk mengendalikan panggilan API dan kemudian cuba membuatnya berjalan lebih cepat dengan membuat beberapa permintaan sekaligus. Ini mungkin lebih cekap daripada melaksanakan skrip berasingan untuk setiap permintaan. Walau bagaimanapun, ia juga memerlukan analisis yang lebih mendalam tentang bagaimana aliran skrip direka supaya eksekusi skrip yang berbeza dan panggilan API yang berlainan yang dilaksanakan pada satu masa tidak mengganggu satu sama lain dan tidak mengulangi kerja masing -masing.
Satu lagi penyelesaian untuk mempercepatkan aplikasi yang sangat bergantung pada penggunaan API adalah untuk membina enjin cache pintar. Ia menghalang skrip anda daripada membuat panggilan yang tidak perlu, kerana kandungan yang terletak di pelayan yang berbeza tidak berubah. Cache yang betul juga boleh mengurangkan jumlah data yang dipindahkan antara pelayan dalam panggilan API tunggal.
Untuk menulis enjin cache yang berfungsi dan mengembalikan data yang sah, anda perlu memastikan tindak balas pelayan jauh tetap tidak berubah, jadi anda tidak perlu mendapatkannya setiap kali. Ini mungkin berbeza -beza mengikut perkhidmatan API tertentu, tetapi idea keseluruhannya adalah untuk mencari satu set parameter (yang sedang diluluskan dalam permintaan) yang memberikan respons yang sama dalam tempoh masa tertentu. Sebagai contoh, jika anda mendapat kadar pertukaran mata wang harian dari perkhidmatan jauh, anda boleh menentukan bahawa kadar pertukaran untuk mata wang tertentu (ini adalah parameter) tetap tidak berubah selama sehari. Oleh itu, kunci cache yang digunakan untuk menyimpan data yang diterima dari API tertentu ini mesti mengandungi kedua -dua mata wang dan tarikh. Jika permohonan anda mesti mendapatkan kadar pertukaran khusus ini pada masa akan datang, anda boleh merujuk kepada data yang disimpan dalam cache (seperti pangkalan data atau fail) dan elakkan permintaan HTTP.
Senario di atas mengandaikan bahawa permohonan anda menganggap semua tanggungjawab memeriksa keadaan di mana data yang diterima oleh perkhidmatan terpencil boleh di -cache, jadi anda perlu melaksanakan logik caching yang betul. Walau bagaimanapun, terdapat juga kes di mana perkhidmatan API menjejaki data yang dikongsi bersama dan mengembalikan bidang tambahan yang mengandungi metadata yang dikaitkan dengan sumber tertentu. Metadata mungkin terdiri daripada nilai seperti tarikh yang diubah suai terakhir, nombor semakan, atau nilai hash yang dikira berdasarkan kandungan sumber. Menggunakan data jenis ini boleh menjadi cara yang baik untuk meningkatkan prestasi aplikasi PHP, terutamanya apabila berurusan dengan sejumlah besar data. Daripada mendapatkan seluruh sumber setiap kali anda menyambung ke API, anda hanya perlu membandingkan nilai timestamp atau hash ke nilai yang diterima terakhir. Jika mereka sama, ia hanya bermakna bahawa anda boleh menggunakan data yang anda ambil lebih awal, kerana kandungan jauh tidak berubah. Penyelesaian sedemikian menganggap bahawa anda menggunakan enjin cache dalam aplikasi anda, tetapi anda tidak perlu bimbang sama ada data yang disimpan dalam cache adalah sah. Oleh kerana anda bergantung pada metadata yang dikembalikan oleh perkhidmatan API, anda hanya perlu membandingkan nilai metadata yang disediakan oleh pelayan jauh.
Menggunakan metadata sumber jauh amat bermanfaat apabila menggunakan API perkhidmatan hosting fail. Mengendalikan folder dan fail jauh sering bermakna memindahkan sejumlah besar data, yang boleh menyebabkan masalah prestasi. Untuk memberi contoh bagaimana untuk mengelakkan ini, izinkan saya menerangkan penyelesaian yang digunakan dalam API Dropbox. Perkhidmatan API Dropbox mengembalikan data khusus yang digunakan untuk memeriksa sama ada fail jauh telah diubah. Pertama, kaedah metadata (pulangan folder dan maklumat fail, seperti namanya, saiz, atau laluan) mengandungi medan hash yang mewakili nilai hash sumber yang dikembalikan. Jika anda memberikan nilai hash dari permintaan sebelumnya sebagai parameter dalam permintaan baru dan data jauh tidak berubah antara permintaan, API hanya akan mengembalikan respons HTTP 304 (tidak diubahsuai). API Drobox juga menyediakan kaedah delta yang digunakan secara khusus untuk memaklumkan perubahan pada folder atau fail tertentu. Nilai hash dan kaedah delta disyorkan dalam dokumentasi API kerana ia dapat meningkatkan prestasi aplikasi anda dengan ketara.
Ini mungkin terdengar jelas, tetapi dalam beberapa kes, pembacaan dokumentasi API yang teliti dapat memberi anda beberapa penyelesaian khusus tentang cara membuat panggilan API lebih efisien. Penggunaan API Dropbox yang diterangkan di atas adalah contoh yang sangat jelas. Walau bagaimanapun, mungkin ada cara lain untuk mengurangkan jumlah data yang dihantar dalam tindak balas (mis., Pilih beberapa bidang tertentu yang dikembalikan oleh API dan bukannya menerima keseluruhan dataset). Anda juga boleh menyemak sama ada tindakan yang anda lakukan dalam permintaan berasingan boleh dilakukan sekaligus. Sebagai contoh, kaedah terjemahan API Terjemahan Google (digunakan untuk mendapatkan terjemahan teks dalam bahasa yang berbeza) boleh mengembalikan pelbagai terjemahan dalam satu permintaan. Dengan lulus beberapa rentetan teks untuk diproses dalam satu panggilan API, anda boleh mengelakkan membuat pelbagai permintaan, yang boleh menjimatkan beberapa masa pelaksanaan permohonan.
Seperti yang anda lihat, terdapat banyak cara untuk meningkatkan prestasi aplikasi PHP yang sangat bergantung pada menggunakan API jauh. Anda boleh melakukan pelbagai permintaan sekaligus -sama ada menggunakan fungsi curl_multi
, atau menjalankan thread aplikasi berasingan. Penyelesaian lain adalah untuk melaksanakan enjin caching yang menghalang anda daripada membuat panggilan API yang tidak perlu atau mengurangkan jumlah data yang dipindahkan antara pelayan. Akhirnya, pendekatan yang disediakan oleh API Services dapat memberikan anda penyelesaian yang luar biasa untuk meningkatkan prestasi, seperti melakukan pelbagai operasi dalam satu permintaan.
Saya harap jawatan ini memberi anda gambaran tentang cara mengendalikan permintaan API dengan berkesan. Sekiranya anda mempunyai sebarang komen mengenai perkara utama yang dibangkitkan dalam artikel atau petua lain tentang cara mempercepat penggunaan API, jangan ragu untuk menyiarkannya di bawah. Anda juga boleh menghubungi saya secara langsung melalui Google Plus.
Prestasi API dipengaruhi oleh pelbagai faktor. Pertama sekali, kelajuan pemprosesan pelayan, yang menentukan kelajuan di mana pelayan memproses meminta dan mengembalikan respons. Latihan Rangkaian (iaitu, masa yang diperlukan untuk data kembali dari klien ke pelayan) juga memainkan peranan penting. Faktor lain termasuk kecekapan kod API, beban pada pelayan, dan bilangan penggunaan API Mengikut format. Mengoptimumkan faktor -faktor ini dapat meningkatkan prestasi API dengan ketara.
Terdapat beberapa strategi untuk mengoptimumkan API anda untuk prestasi yang lebih baik. Pertama, anda boleh menggunakan amalan pengekodan yang cekap untuk mengurangkan masa pemprosesan pada pelayan. Kedua, anda boleh menggunakan rangkaian penghantaran kandungan (CDN) untuk mengurangkan latensi rangkaian. Ketiga, anda boleh menggunakan cache untuk menyimpan data yang sering diakses dan mengurangkan beban pada pelayan. Akhirnya, anda boleh menggunakan mampatan data untuk mengurangkan saiz data yang dihantar, dengan itu mengurangkan masa yang diperlukan untuk menghantar dan menerima data.
Menggunakan API bermaksud menggunakan API yang disediakan oleh pihak ketiga dalam aplikasi anda. Ini termasuk menghantar permintaan kepada API dan respons pemprosesan. API menyediakan satu set fungsi yang boleh digunakan oleh aplikasi anda untuk berinteraksi dengan sistem atau perkhidmatan yang diwakili oleh API.
Terdapat beberapa cara untuk mempercepatkan penggunaan API aplikasi. Pertama, anda boleh menggunakan panggilan tak segerak untuk mengelakkan menyekat benang utama. Kedua, anda boleh menggunakan paging untuk mengehadkan jumlah data yang dikembalikan oleh API. Ketiga, anda boleh menggunakan cache untuk menyimpan data yang sering diakses dan mengurangkan bilangan permintaan ke API. Akhirnya, anda boleh menggunakan mampatan data untuk mengurangkan saiz data yang dihantar, dengan itu mengurangkan masa yang diperlukan untuk menghantar dan menerima data.
Rangkaian Pengedaran Kandungan (CDN) memainkan peranan penting dalam meningkatkan prestasi API. Ia mengurangkan latensi rangkaian dengan mengedarkan kandungan ke pelbagai pelayan yang terletak di lokasi geografi yang berbeza. Apabila pelanggan menghantar permintaan, CDN mengarahkannya ke pelayan terdekat, mengurangkan masa yang diperlukan untuk data kembali dari klien ke pelayan.
Cache meningkatkan prestasi API dengan menyimpan data yang sering diakses dalam cache. Apabila pelanggan menghantar permintaan data, pelayan pertama memeriksa cache. Jika data berada dalam cache, pelayan mengembalikannya dengan segera, mengurangkan masa pemprosesan dan beban pada pelayan. Jika data tidak berada di dalam cache, pelayan mengambilnya dari pangkalan data, memprosesnya, dan menyimpannya dalam cache untuk permintaan masa depan.
Mampatan data meningkatkan prestasi API dengan mengurangkan saiz data yang dihantar. Ini mengurangkan masa yang diperlukan untuk menghantar dan menerima data, dengan itu meningkatkan kelajuan API. Mampatan data amat berfaedah apabila memproses sejumlah besar data.
Amalan terbaik untuk menggunakan API termasuk menggunakan panggilan tak segerak untuk mengelakkan menyekat benang utama, menggunakan paging untuk mengehadkan jumlah data yang dikembalikan oleh API, menggunakan cache untuk menyimpan data yang sering diakses, dan menggunakan mampatan data untuk mengurangkan saiz data yang dihantar .
Anda boleh menggunakan pelbagai metrik untuk mengukur prestasi API anda, seperti masa tindak balas, kadar ralat, dan throughput. Masa tindak balas adalah masa yang diperlukan untuk API untuk mengembalikan respons. Kadar ralat adalah peratusan permintaan yang mengakibatkan kesilapan. Output adalah bilangan permintaan API boleh memproses setiap unit masa. Metrik ini boleh diukur menggunakan alat pemantauan API.
Prestasi API mempunyai kesan yang signifikan terhadap pengalaman pengguna. Sekiranya API perlahan, ia akan menyebabkan masa pemuatan perlahan, yang boleh menggagalkan pengguna dan menyebabkan mereka meninggalkan aplikasi. Sebaliknya, API yang cepat dan responsif dapat memberikan pengalaman pengguna yang lancar dan menyenangkan. Oleh itu, mengoptimumkan prestasi API adalah penting untuk meningkatkan pengalaman pengguna.
Atas ialah kandungan terperinci Cara Mempercepat Penggunaan API Aplikasi Anda '. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!