Cara cepat mendapatkan banyak data dari Bitrix24 melalui REST API

Seringkali, saat bekerja dengan Bitrix24 REST API, Anda perlu segera mendapatkan konten bidang tertentu dari semua elemen daftar (misalnya, prospek). Cara tradisional untuk melakukannya adalah dengan menghubungi server melalui metode *.list



(misalnya, crm.lead.list



untuk prospek) dengan parameter yang select



mencantumkan daftar bidang wajib. Selain itu, semakin besar ukuran daftar dan semakin banyak bidang yang Anda unggah, semakin lama server membutuhkan waktu untuk membuat tanggapan.





Selain itu, karena fakta bahwa informasi disediakan oleh server halaman demi halaman, ada beberapa strategi untuk mendapatkan seluruh daftar, dan beberapa di antaranya memungkinkan Anda untuk mempercepat proses dengan urutan besarnya dibandingkan dengan permintaan berurutan.





Strategi

Di bawah ini kami menjelaskan tiga strategi, yang sementara kami beri nama "filter ID", "Mulai kenaikan" dan "Daftar + dapatkan".





Dua strategi pertama ("ID filter" dan "Start increment") diusulkan dalam dokumentasi resmi Bitrix24 , tetapi di bawah ini kami mengusulkan untuk "mengencangkan" keduanya.





Filter ID

Permintaan dikirim ke server secara berurutan dengan parameter "order": {"ID": "ASC"}



(mengurutkan dalam urutan menaik berdasarkan ID), dan setiap permintaan berikutnya menggunakan hasil dari yang sebelumnya (memfilter menurut ID, di mana ID> ID maksimum dalam hasil permintaan sebelumnya).





start = -1



( total



), *.list



.





: , , ID . , , , throttling.





Start increment

, start



, .





, , , ( , start



, ).





, ( total



), .





, . ( 50 .) , .





24 REST API . .





, , . .





get_all()



fast_bitrix24



( - ).





List + get

, "Start increment" ID *.list



( , ID - 'select': ['ID']



) , *.get



ID. " " " ".





, ( ).





( crm.lead.list



) 3 ( "ID filter" - ID). 1, 50, 100 200 .





fast_bitrix24 24.





7- REST API ~35000 .





Getting 1 pages:
ID filter: 0.3 sec.
Start increment: 0.73 sec.
Getting ID list for the 'list+get' strategy, method crm.lead: 2.17 sec.

List + get: 2.61 sec.

Getting 50 pages:
ID filter: 12.8 sec.
Start increment: 21.39 sec.
List + get: 1.84 sec.

Getting 100 pages:
ID filter: 49.67 sec.
Start increment: 39.97 sec.
List + get: 3.28 sec.

Getting 200 pages:
ID filter: 99.67 sec.
Start increment: 78.05 sec.
List + get: 6.36 sec.
      
      



, , ("Start increment" "List + get"), .





, , "List + get" , , . (, 24 ?)





Saya tidak yakin tentang keberadaan pustaka PHP tingkat tinggi yang memungkinkan pengguna untuk mengimplementasikan strategi semacam itu tanpa repot-repot mengemas permintaan ke dalam batch dan mengatur permintaan paralel dengan kontrol kecepatannya. Tetapi jika Anda menulis dengan Python - Anda dapat menggunakannya fast_bitrix24



(lihat halaman di Github ), yang memungkinkan Anda mengunduh data dari Bitrix24 dengan kecepatan hingga ribuan elemen per detik.








All Articles