2009-08-10 2 views
2

이전 PHP 광고 관리 시스템을 (Django) Python 기반 웹 응용 프로그램에 통합하려고합니다. PHP와 Python 코드는 모두 동일한 호스트에 설치되며 PHP는 mod_php5 및 Python은 mod_wsgi 사이에서 실행됩니다.Python에서 PHP 코드를 호출하십시오.

이제 파이썬 코드 내에서 가장 효율적인 방법으로이 PHP 광고 관리 코드를 호출하는 것이 가장 좋습니다. 광고 관리 코드는 각 페이지마다 여러 번 호출해야합니다. 광고 관리 코드에 대한 PHP에서

  1. 쓰기 SOAP 인터페이스는 다음 해당 함수를 호출 파이썬에서 SOAP 클라이언트를 쓰기 :

    솔루션은 I는 다음과 같다, 지금까지 함께했다.

    내가보기에 문제는 파이썬 코드의 실행 속도가 상당히 느려질 것이기 때문입니다. 각 페이지가 제공 될 때 백그라운드에서 여러 SOAP 클라이언트 요청이 필요하기 때문입니다.

  2. PHP 명령 행 인터페이스를 사용하여 os.execvp() 또는 subprocess.Popen()을 통해 PHP 코드를 호출하십시오.

    여기의 문제는 PHP 코드가 Apache 환경 ($ _SERVER vars 및 다른 슈퍼 전역)을 사용한다는 점입니다. 이것이 정확하게 시뮬레이션 될지 확신 할 수 없습니다.

  3. 파이썬에서 광고 관리 코드를 다시 작성하십시오.

    이것은 아마도 최후의 수단 일 것입니다. 이 광고 관리 코드는 실행 및 실행,이에 대한 코드의 조각을 쓴 나머지 아무도 없다 : 나는이 작업을 수행하는 것은 매우 두려워 할 것)

다른 아이디어 나 힌트 방법이 할 수 있니?

감사합니다.

+1

필수 사항 : 모든 것에 파이썬을 사용하고, 파이썬에서 PHP 부분을 다시 작성하십시오. – nosklo

+0

맞습니다. 이것이 세 번째 옵션이지만 _huge_ 작업이 될 것입니다. – Haes

답변

4

브라우저에서 AJAX를 사용하여 광고를로드하는 방법은 어떻습니까? 예를 들어

은 (jQuery를 사용하여) :

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

이 당신이 PHP 응용 프로그램에서 응용 프로그램을 거의 완전히 분리를 유지할 수 있습니다.

+1

흥미로운 솔루션, 나는 그것을 생각하지 않았다. 물론 Javascript가 비활성화되어 있으면이 기능이 작동하지 않으므로 요구 사항인지 확인해야합니다. – Haes

+0

또는 파이썬에서 직접 PHP 응용 프로그램에 요청할 수 있습니다. urllib2를 사용해보세요. http://docs.python.org/library/urllib2.html – Mark

2

최상의 솔루션은 서버 측 포함을 사용하는 것입니다. 대부분의 웹 서버가이를 지원합니다.

예를 들어이 그것의 nginx에서 수행 될 방법입니다

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

웹 서버는 동적으로 PHP 백엔드에서 요청 클라이언트로 이동 응답에 삽입합니다. 자바 스크립트가 필요없고 전적으로 투명합니다.

당신은 또한 사용할 수 있습니다 제가 아파치를 통해 직접 PHP 부분을 제공하여 과거에 이런 짓을 한 경계선 <iframe>

+0

iframe 사용은 권장하지 않습니다. –

0

. 미디어 파일 (/ site_media/php /) 또는 미디어 서버 (lighttpd 등)에 좀 더 가벼운 것을 사용하고 싶다면 아파치를 통과하는 사이트의 다른 부분을 설정할 수 있습니다 PHP가 활성화되었습니다.

거기에서 템플릿의 ajax 경로를 취하거나 urllib (2) 또는 httplib (2)를 사용하여 뷰에서 PHP를로드 할 수 있습니다. 더 나은 방법은 urllib2 호출을 templatetag에 랩핑하고 템플릿에서 호출하는 것입니다.

관련 문제