Python做爲PHP的擴展——ppython簡介

許多人在糾結WEB快速開發到底是採用PHP,仍是採用Python,兩者一樣是腳本語言,但特色鮮明:
PHP: Web專用開發利器,有10多年的經驗積累,但其餘領域基本不涉及,擴展性不強,企業應用少。
Python: 面向對象、簡單高效、可擴展性強,但Web開發積累少,成熟度低。
ppython開源項目既是結合使用PHP和Python兩種語言,取其所長、補其所短,面向企業WEB領域的開發技術。此技術能夠理解爲PHP和Python相結合的技術,也可稱爲PHP和Python混合編程技術,或者PHP調用Python服務的技術,也有人習慣稱之爲前臺PHP後臺Python的技術框架。
本項目是LAJP項目的語言環境的拓展,變化是將LAJP中的Java語言變動爲Python語言,所以LAJP的技術、文檔對本項目有參考做用。LAJP的官方網頁:http://code.google.com/p/lajp
特色php

優點互補: PHP和Python都是流行的腳本語言,PHP很是適合網頁編程;而Python能夠看成輕量級JAVA,兩者結合可發揮各自優點。
高效穩定:Apache+PHP組合可帶來優異的WEB服務穩定性,而Python的語言能力可補充如鏈接池、事物管理、分佈式、對象模型等高端特性。
通訊機制 PHP和Python間的通信方式採用TCP Socket和Unix Socket兩種機制,兼顧通信效率和分佈式。
數據類型自動轉換機制 PHP數據和Python數據可準確地自動匹配和轉換,無須程序員編寫解析代碼。
易用:安裝配置簡單,PHP端和Python端編程符合各自的編程習慣。
輕量級:架構很是輕量級,除了最基本的PHP和Python環境,不須要任何擴充的、第三方的組件、容器。
PHP和Python的互通python

 

PHP和Python是兩種不一樣的語言,通信中採用兩種socket機制。程序員

1、TCP Socket
傳統的TCP/IP通信。編程

2、UNIX Domain Socket
Unix/Linux本地socket,相對於TCP Socket,有如下特色:安全

只能在同一臺主機中通信(IPC),不能跨網絡
傳輸速度,大於TCP Socket
服務端只向本機提供服務(沒有對外偵聽端口),相對安全,易於管理。
數據類型轉換網絡

PHP和Python各有其語言內部定義的數據類型,當PHP數據傳送到Python,或Python數據傳送到PHP時,傳統上須要轉碼處理,而使用本技術程序員無需進行任何的此類工做。多線程

 

詳細內容請瀏覽wiki文檔:http://code.google.com/p/ppython架構

提升Python的多線程效率框架

Python因其語言GIL特性,多線程效率不高。在PHP+Python的混搭機制中,Python端能夠多進程方式部署,從而提升Python的總體工做效率。socket

示例

示例程序表現了一個簡單的PHP頁面調用Python的加法函數程序片斷。

<?php
  require_once("php_python.php"); //框架提供的程序腳本

  $p1 = 2;     
  $p2 = 3; 

  //"ppython"是框架"php_python.php"提供的函數,用來調用Python端服務
  //調用Python的testModule模塊的add函數,並傳遞2個參數。
  $ret = ppython("testModule::add", $p1, $p2);

  echo "返回信息:".$ret;    //打印 5
?>

Python端程序,文件名testModule.py

# -*- coding: UTF-8 -*-

def add(a, b):
  return a + b
相關文章
相關標籤/搜索