Wenn Sie mit der Bitrix24 REST-API arbeiten, ist es häufig erforderlich, den Inhalt bestimmter Felder aller Elemente einer Liste (z. B. Leads) schnell abzurufen. Die herkömmliche Methode hierfür besteht darin, den Server über eine Methode *.list
(z. B. crm.lead.list
für Leads) mit einem Parameter zu kontaktieren, der select
die Liste der erforderlichen Felder auflistet. Je größer die Liste und je mehr Felder Sie hochladen, desto länger dauert es, bis der Server eine Antwort erstellt.
Aufgrund der Tatsache, dass die Informationen Seite für Seite vom Server bereitgestellt werden, gibt es verschiedene Strategien, um die gesamte Liste abzurufen. Mit einigen davon können Sie den Prozess im Vergleich zu sequentiellen Anforderungen um Größenordnungen beschleunigen.
Strategien
Im Folgenden beschreiben wir drei Strategien, die wir vorläufig als "ID-Filter", "Startinkrement" und "List + Get" bezeichnet haben.
Die ersten beiden Strategien ("ID-Filter" und " Startinkrement ") werden in der offiziellen Bitrix24-Dokumentation vorgeschlagen. Im Folgenden wird jedoch vorgeschlagen , sie zu "verschärfen".
ID-Filter
Anforderungen werden nacheinander mit einem Parameter an den Server gesendet "order": {"ID": "ASC"}
(Sortierung in aufsteigender Reihenfolge nach ID), und jede nachfolgende Anforderung verwendet die Ergebnisse der vorherigen (Filterung nach ID, wobei ID> maximale ID in den Ergebnissen der vorherigen Anforderung).
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 ?)
Ich bin mir nicht sicher, ob es PHP-Bibliotheken auf hoher Ebene gibt, mit denen der Benutzer solche Strategien implementieren kann, ohne sich darum kümmern zu müssen, Anforderungen in Stapel zu packen und parallele Anforderungen unter Kontrolle ihrer Geschwindigkeit zu organisieren. Wenn Sie jedoch in Python schreiben, können Sie diese gerne verwenden fast_bitrix24
(siehe Seite auf Github ), mit der Sie Daten von Bitrix24 mit einer Geschwindigkeit von bis zu Tausenden von Elementen pro Sekunde herunterladen können.