PHP arka uç hizmetleri Paylaşılan / toplanmış bağlantıları

2 Cevap php

Ben PHP çeşitli arka uç hizmetleri (- Ben genel bir çözüm istiyorum, örneğin Amazon S3 veya herhangi diğer rasgele web hizmetleri) konuşurken olduğunda kaynak kullanımını en aza indirmek için en iyi şekilde anlamaya çalışıyorum. İdeal olarak, bazı önbelleğe alma ile arka uç tek bir kalıcı bağlantıyı (kalıcı bağlantıların ya da belki küçük bir havuz), ve sonra PHP tüm görevleri paylaşmak olmasını istiyorum. Biz salt okunur bu sorunun amaçlar için tüm düşünebilirsiniz. PHP bunu bana nasıl belli değil. Orada mysql_pconnect gibi veritabanı özgü şeyler (), ama bu gerçekten benim için bunu yapmaz.

Görünüyor yaşadım Bir fikir, biraz suboptimal görünüyor (ama hala her isteği yeni bir bağlantı oluşturmak ve yok olan daha iyidir) etkili havuzu ve önbelleğe alma yapacağını (ayrı bir işlemde) yerel bir önbellek proxy kullanmaktır . PHP hala açılması ve her istek için bir bağlantıyı kapatmadan, ama en azından yerel bir süreç olacaktır, bu yüzden (ve backendleri üzerindeki yükü azaltacak) biraz daha hızlı olmalı olacaktır. Delilik bu tür zorunlu olması gerektiği gibi ama görünmüyor. Olmalı daha iyi bir yolu olmalı. Bu, diğer dillerde kolaydır. Kaçırdığım ne söyle lütfen!

2 Cevap

Çeşitli web teknolojileri arasında büyük bir ideolojik kesmek var. Bazı arka planda tam çalışma zamanı daemons ki esas olan, ve kendi üzerinde geçti istekleri işlemek. Her zaman çalışan bir işlem var, çünkü zaten açık mevcut çalışma bağlantıları bir havuza sahip olabilir.

PHP (ve normal CGI betikleri) perde arkasında bir cini yok. Bir istek gelir her zaman, PHP interpreter is started up with a clean slate, komut derler ve bayt kodu çalışır. Hiçbir kalıcılık yok. Kalıcı bağlantılarını destekleyen PHP veritabanı fonksiyonları web server child level (yani mod_php bir Apache sürecine bağlı) de bağlantı kurmak. Sen sadece kendi sürecine bağlı kalıcı bağlantı gördüğünüz gibi bu, tam bir bağlantı havuzu değil.

Kaynaklarını dağıtmak için perde arkasında oturan bir cini ya da benzer bir süreci kalmadan, real bağlantı havuzu almazsınız.

most hizmetlerine most yeni bağlantıları ağır olmadığını akılda tutmak ve ağır sigara veritabanı bağlantıları bir bağlantı havuzu kavramına dost olmayabilir.

Eğer zaten çözülmüş bir sorun olabilir ki, bu gibi şeyler ele akılda tutmak için kendi PHP tabanlı daemon yazmayı düşünüyorum önce. Python Rack denilen Ruby benzer bir uygulama ile, WSGI denilen bir şey geldi. Perl da oldukça benzer bir şey var ama benim başın üst kapalı onun adını hatırlayamıyorum. Google'da hızlı bir bakış WSGI herhangi bir PHP uygulamaları yoktu, ama onlar yok anlamına gelmez ...

S3 ve diğer webservices onların ulaşım olarak HTTP kullanır, çünkü bağlantıyı önbelleğe anlamlı bir fayda almazsınız.

  • Eğer S3 Documentation bakarak bir ilk adım olarak doğrulamak için görünen bir API kullanarak olsa da, doğrulama her isteği ile olur - yani hiçbir yararı bir kez kimlik doğrulaması ve bir bağlantısını yeniden in
  • HTTP üzerinden Web hizmet istekleri hafif ve tipik vatansız. İsteğiniz yanıtladı edildikten sonra, hiçbir kaynak (bağlantı veya Sesson devlet) sunucuda tüketilir. Bu web hizmeti uygulayıcısı belli bir sunucudaki kaynakları ipe olmadan isteğini cevaplamak için birçok makine kullanmanızı sağlar