Python, PHP kodu arayın

3 Cevap php

Ben (Django) Python tabanlı web uygulaması içine eski bir PHP reklam yönetim sistemi entegre çalışıyorum. PHP ve Python kodu iki aynı ana bilgisayarlara yüklenir, PHP genellikle, mod_wsgi ile mod_php5 ve Python tarafından yürütülür.

Şimdi en verimli şekilde benim Python kodu içinde bu PHP reklam yönetimi kod çağırmak için en iyi yolu (reklam yönetimi kod her sayfa için birden çok kez çağrılacak vardır) ne acaba?

Ben bugüne kadar geldi çözümler şunlardır:

  1. Reklam yönetimi kodu PHP SOAP arayüzü yazmak ve sonra uygun işlevleri çağıran Python bir SOAP istemci yazmak.

    Gördüğüm sorun her sayfası servis için birden fazla SOAP istemci istekleri arka planda gerekli beri önemli ölçüde Python kod yürütme yavaşlatabilir erecek.

  2. PHP komut satırı arabirimini kullanarak os.execvp yoluyla PHP kodu () veya subprocess.Popen () arayın.

    Burada sorun, PHP kodu Apache ortamı ($ _SERVER vars ve diğer superglobals) kullanımını sağlamasıdır. Ben bu doğru simüle edilebilir emin değilim.

  3. Python reklam yönetim kodu yeniden.

    Bu muhtemelen son çare olacak. Bu reklam yönetimi kod sadece çalışır ve çalışır, ve bunun için bir kod parçası yazdı kim kalan kimse yok :) Ben bu ;) yapmak için oldukça korkuyor olurdu

Diğer fikir ve ipuçları bu nasıl yapılabilir?

Teşekkürler.

3 Cevap

Nasıl reklamları yüklemek için tarayıcı AJAX kullanarak?

Örneğin (JQuery kullanarak):

$(document).ready(function() { $("#apageelement").load("/phpapp/getads.php"); })

Bu PHP app app neredeyse tamamen ayrı tutmak için izin verir.

En iyi çözüm, sunucu tarafı içerir kullanmaktır. Çoğu websunucu bu destek.

Örneğin bu, nginx yapılabilir olacak nasıl:

<!--# include virtual="http://localhost:8080/phpapp/getads.php" -->

Webserverınız sonra dinamik php end'deki talep ve müşteriye gider tepki içine eklersiniz. Hayır, gerekli javascript ve tamamen şeffaf.

Ayrıca Kenarlıksız <iframe> kullanabilirsiniz

Ben Apache üzerinden doğrudan PHP bölümlerini hizmet ederek geçmişte bunu yaptık. Siz, medya dosyaları ile onları koymak olabilir ya (/ site_media / php /) veya (lighttpd gibi) medya sunucusu için daha hafif bir şey kullanmayı tercih ederseniz, ile apache geçer sitenin başka bir bölümünü kurabilirsiniz PHP sağladı.

Oradan, size şablonları ajax yol alabilir, ya sen (2) veya httplib (2) urllib kullanarak görüşlerinden PHP yükleyebilirsiniz. Daha da iyisi, bir templatetag yılında urllib2 çağrı sarın, ve şablonları diyoruz.