国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

php通過ice通信引擎調用python服務

2020-03-22 16:30:53
字體:
來源:轉載
供稿:網友
  • PHP調用python,有很多種方式,查閱了下,大致有以下方式:

    system、exec、shell_exec、passthrupopen、proc_opensocketppythonPHPRPCpip(python in php)XMLRPC、jsonrpc

    當然,還有ice這種通信組件,今天配置了下ice、然后運行了簡單的php和python通信、python和python通信的示例程序。

    下載和安裝參見http://www.zeroc.com/download.html的Packages for Ubuntu 13.04 (Raring Ringtail) and 14.04 (Trusty Tahr)和Install instructions for Ubuntu 13.04 (Raring Ringtail)兩部分,安裝過程只碰到一個問題:E: Unable to locate package db5.3-utils,后來發現是程序包名錯了,應該是db5.3-util

    ——————————————————————————

    用python寫服務端和客戶端程序,通過ice進行通信

    ——————————————————————————

    1、Writing a Slice Definition:hello.ice

    module Demo {    interface Printer {        void printString(string s);    };};

    2、Compiling a Slice Definition for Python

    slice2py hello.ice

    3、Writing a Server in Python:server.py

    import sys, traceback, Iceimport Democlass PrinterI(Demo.Printer):    def printString(self, s, current=None):        print sstatus = 0ic = Nonetry:    ic = Ice.initialize(sys.argv)    adapter = ic.createObjectAdapterWithEndpoints("SimplePrinterAdapter", "default -p 10000")    object = PrinterI()    adapter.add(object, ic.stringToIdentity("SimplePrinter"))    adapter.activate()    ic.waitForShutdown()except:    traceback.print_exc()    status = 1if ic:    # Clean up    try:        ic.destroy()    except:        traceback.print_exc()        status = 1sys.exit(status)

    4、Writing a Client in Python:client.py

    import sys, traceback, Iceimport Demostatus = 0ic = Nonetry:    ic = Ice.initialize(sys.argv)    base = ic.stringToProxy("SimplePrinter:default -p 10000")    printer = Demo.PrinterPrx.checkedCast(base)    if not printer:        raise RuntimeError("Invalid proxy")    printer.printString("python client say hello!")except:    traceback.print_exc()    status = 1if ic:    # Clean up    try:        ic.destroy()    except:        traceback.print_exc()        status = 1sys.exit(status)

    5、運行server端

    python server.py

    6、運行client端

    python client.py

    7、服務端運行結果如下圖:服務端接收到了客戶端消息

    wKiom1NXvoHQkj5-AABJ0ShiwuM853.jpg

    ————————————————————————————

    用上邊的hello.ice、server.py

    用php寫客戶端程序,通過ice進行通信

    ————————————————————————————

    1、Compiling a Slice Definition for PHP

    slice2php hello.ice

    2、Writing a Client in PHP:client.php

    <?phprequire 'Ice.php';require 'hello.php';$ic = null;try{    $ic = Ice_initialize();    $base = $ic->stringToProxy("SimplePrinter:default -p 10000");    $printer = Demo_PrinterPrxHelper::checkedCast($base);    if(!$printer)        throw new RuntimeException("Invalid proxy");    $printer->printString("php client say hello!");}catch(Exception $ex){    echo $ex;}if($ic){    // Clean up    try    {        $ic->destroy();    }    catch(Exception $ex)    {        echo $ex;    }}?>

    3、執行php或訪問php

    php -f client.php

    4、服務端運行結果如下圖:服務端接收到了客戶端消息

    wKiom1NXv-3wQJWFAABk7FPBcH8630.jpg

    參考資料:

    http://www.zeroc.com/download.html

    http://doc.zeroc.com/display/Ice/Writing+a+Slice+Definition

    http://doc.zeroc.com/display/Ice/Writing+an+Ice+Application+with+Python

    http://doc.zeroc.com/display/Ice/Writing+an+Ice+Application+with+PHP

    注:我的環境是ubuntu kylin 13.04/apache2.2.22/python2.7.4/ice3.5

    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 中江县| 邻水| 桃园县| 屏山县| 丹东市| 安顺市| 辽阳市| 朝阳区| 峨眉山市| 平罗县| 大冶市| 五峰| 吴江市| 弥渡县| 开平市| 内江市| 扎鲁特旗| 敖汉旗| 赣州市| 定远县| 绍兴市| 霞浦县| 莱芜市| 鄂州市| 汶上县| 进贤县| 吉木萨尔县| 涪陵区| 黄石市| 屏南县| 绥化市| 忻城县| 南郑县| 永泰县| 花垣县| 丰顺县| 上蔡县| 伊宁县| 库车县| 昌乐县| 万盛区|