v2.5.2
Giriş yap

Php ile çekilen api verileri hızlandırma

erdal42
477 defa görüntülendi ve 2 kişi tarafından değerlendirildi

Merhabalar,
Php ile çektiğim 2 3 tane servis var. Arama yapılırken 3 4 saniye hatta 6 saniye de buluyor. Bu altyapıları hızlandırabilmek için ayrı kodlar var mı ?

Cevap yaz
Cevaplar (4)
erdal42
759 gün önce

@ebykdrms Evet, apiler çalışmayınca boş bir sayfa geliyor. Ne yazık ki dediğiniz gibi apileri işlemiyorum. Denedim her türlü ama çalışmadı. Sağlık olsun.

ebykdrms
762 gün önce

API istekleri için özellikle yazılmış bir makale var mı bilmiyorum.
Genel olarak sayfalarınızı nasıl cache'leyebileceğinizle ilgili aşağıdaki yazıyı buldum:
https://insta.gen.tr/php-cache-yapimi-tarayici-onbellekleme-kullanimi/
Burada API isteklerinizi değil sayfalarınızı cache'liyorsunuz. Daha detaylı bir açıklama yazmak için benim vaktim yok ne yazık ki.

erdal42
764 gün önce

@ebykdrms bilgi için teşekkür ederim. Cache yapabilmek için bir php veya html'in içine nasıl bir kod koyabilirim ? Örnek olarak o kaydedilen cache dosyaların olduğu bölgeler vs. Bunun için bir örnek kod var mı ?

ebykdrms
764 gün önce

Merhaba. Verilerin daha hızlı gelmesini sağlamanız sizin tarafınızda pek mümkün değil. Yani sunucunuzun internet hızını artırabilirsiniz belki ama geç cevap verme çoğunlukla api'nin sunucularından kaynaklıdır.
Şöyle bir öneri sunabilirim:
Kendinize bir cache mekanizması kurabilirsiniz. API'a attığınız aynı isteklere aynı yanıtlar dönüyorsa tekrar tekrar istek atmanız gerekmez. Gelen isteğin yanıtını bir dosyaya kaydedersiniz ve mesela 1 saat boyunca aynı isteği atmak yerine bu dosyanızdaki veriyi okursunuz. Böylece kendi sunucunuzda bulunan dosyadan veri okumak, API'dan veri okumaktan çok çok daha hızlı sonuç verir.
Kendinize bir fonksiyon oluşturmalısınız. Bu fonksiyon,

  • API'a atılmak istenen isteği alacak.
  • Yeni bir istek atıp atmayacağını belirleyen bir değişken başlangıçta false değeri alacak.
  • Daha önce atılan istekleri kaydettiği dosyadan bu isteğin daha önce atılıp atılmadığını bulacak.
  • İstek daha önce atılmışsa
    • Atılan isteğin zamanının dolup olmadığını kontrol edecek.
    • Eğer isteğin zamanı henüz dolmamışsa:
      • İsteğin sonucunu hangi dosyaya yazdığını alacak.
      • Sonuç olarak fonksiyon bu dosyanın içeriğini return edecek ve fonksiyon sonlanacak.
    • Eğer isteğin zamanı dolmuşsa:
      • İsteğin sonucunu yazdığı dosyayı silecek.
      • Kendisinde de bu isteği barındıran veriyi silecek.
      • Yeni istek atılması gerektiğini belirten değişken true yapılacak.
  • Daha önce istek atılmamışsa
    • Yeni istek atılması gerektiğini belirleyen değişken true yapılacak.
  • Yeni istek atılması gerektiğini belirleyen değişken true ise
    • API'a istek atacak.
    • İsteğin yanıtını bir dosyaya kaydedecek.
    • İsteğin kendisini, yanıtını yazdığı dosyayı ve isteğin geçerlilik süresini (örn 1 saat) istekleri tuttuğu dosyaya kaydedecek.
    • API sonucunu return edecek ve fonksiyon sonlanacak.

Bu algoritmayı sadece anlık değişmeyen API endpoint'leri için kullanabilirsiniz. Eğer API'dan gelen veri aynı isteği yapmanıza rağmen her seferinde farklı bir yanıt verebilecekse bu yöntemi kullanamazsınız çünkü kullanıcıya eski veri göstermiş olursunuz.