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.