API Veri agregadır Nasıl?

2 Cevap php

Ben 2 popüler API'leri bağlayan bir sistem var. Daha sonra paginated bir sonuç her bir birleşik verileri toplamak için gerekir. Projenin kapsamı sistemi API'leri 10 destekliyoruz bitebileceğini anlamına gelir.

Her API istek başına 50 sonuç maksimum sınırı uygular.

Güvenilir, yani vb, hiçbir çiftleri sipariş böylece ne bu verileri toplayarak en iyi yoludur

Ben bir lamba ortamında CakePHP framework kullanıyorum, ancak, bu soru, tüm programlama dilleri ile ilgilidir düşünüyorum.

Benim yaklaşım bugüne kadar her sağlayıcının arama API sorgulamak ve daha sonra bir MySQL tablo doldurmak için. Bu elde edilen sonuçlar Ancak, paginated vb sipariş edilir, benim sorunum performans: API iletişim, ayrıştırma, ekleme ve daha sonra bir yürütme tüm okuma.

Ben bir şey eksik, herkes başka bir fikir var mı? Ben bu kadar çok alternatif çözümler ile ortak bir sorun olduğundan emin değilim.

Herhangi bir yardım büyük mutluluk duyacağız.

Thanks, Paul

2 Cevap

Evet, bu ortak bir sorundur.

Gibi sorular için SO ara http://stackoverflow.com/search?q=%5Bphp%5D+background+processing

Bu çalışır Herkes veriler için diğer siteleri çağrısında yavaş olduğunu anlar. Ilk bir veya iki hızlı görünüyor, ama diğer siteler kesin (ve app sonları) ve diğer siteler yavaş (ve app yavaş)

Sen arka ucundan ön uç kesmek zorunda.

Seçenek 1 - basitçe alır ve veritabanını yükler bir arka plan işlemi ile verileri önceden sorgulamak.

Seçenek 2 - uzun süren bir arka plan işlemi başlatmak ve henüz bitmiş olup olmadığını görmek için bir JavaScript işlevi tekrar kontrol edin.

Seçim 3 - Kullanıcının ilk isteği plan işlemi olarak çoğaltılır - iş bittiğinde onlar geri böylece sonra onları bir bağlantı e-posta.

Ben sadece RSS / Atom beslemelerini 100 üzerinde yaptığını bir site var, bu ben ne olduğunu:

  1. i beslemeleri bir listesini ve bunların üzerinde dolaşır, yaklaşık her 5 20 dakika kadar beslemeleri tüm aracılığıyla i döngüsü anlamı, bir dakika, besleyen bir cron işi var.
  2. url varsa ben yem kaldırın ve veritabanına her girişi eklemek için deneyin, benzersiz bir alan olarak url kullanarak, ben sokmayın. giriş tarih benim şimdiki sistem saati ve benim uygulama tarafından eklenir, rss tarih alanları güvenilir olamaz gibi, bazı durumlarda, hatta ayrıştırıldı olamaz.
  3. Bazı yayınların, sadece experiece ben de yinelenen başlıkları aramak, hangi söyleyebilirim için, bazı web siteleri kendi nedenlerle adresler değiştirin.
  4. öğeleri artık tüm sorgulanacak hazır, aynı veritabanı tablosuna yerleştirilir.

Son bir düşünce: Uygulama üretim sırasında eklenen yeni beslemeleri olması muhtemeldir eğer bir besleme (yani: db hiçbir önceki girişleri vardır) "yeni" ise, gerçekten de kontrol etmelisiniz bu ise, tüm işaretlemek gerekir Eğer bir yem eklediğinizde inaktif olarak mevcut bağlantıları, aksi halde, hepsi aynı tarih ve saati ile bu yem makalelerin bir blok olacak. (Basitçe: i açıklanan yöntem yalnızca yem gelecek eklemeler için, makaleleri mevcut olmayacaktır geçmiş).

Bu yardımcı olur umarım.