Python调用PHP的函数

发布时间:2019-09-15 09:56:12编辑:auto阅读(1465)

    应用需求:

            在电子商务的web平台中有可能存在这样的需求,在月末进行分红账务结算,这样就需要在web服务器下写脚本定时执行数据库的操作,这里有很多种可选的方案,Python调

    用PHP函数只是其中的一种处理方式。

    Python端代码:

    #!/usr/bin/python
    
    import subprocess
    
    method="prom_timing_exec"
    
    proc=subprocess.Popen(['php -f /var/www/html/vsdev/model/Keke_witkey_prom_timing_exec.php '+method],shell=True,stdout=subprocess.PIPE);
    
    response=proc.stdout.read();
    
    print(response);

    这里需要注意一点:参数是添加在url后面的,且需要用空格隔开。即使是调用某个函数,其函数名也是需要通过参数传递。

    PHP端代码:

    <?php
       /*
        * @ author: Houqd
        * @ date  : 2013-09-06
        * @ des   : This file contains all function that need timing execute in Python script.
        **/
       $method = $argv[1];
    
       class db_op
       {
            public $_conn;
            public $_select;
            public $_dbname;
            public $_tablename;
            public $_sql;
            public $_where;
    
    
            function db_op($dbname)
            {
                 $this->_dbname = $dbname;
                 $this->_tablename = "keke_witkey_prom_event";
            }
    
            function db_connect()
            {
                 $this->_conn = @mysql_connect("192.168.1.50","root","dell_456");
            }
    
            function db_select()
            {
                 $this->_select = @mysql_select_db($this->_dbname , $this->_conn);
            }
    
            function setWhere($where)
            {
                 $this->_where = $where;
            }
    
            function execute($sql)
            {
                $result = mysql_query($sql);
                if($result){
                      while($row = mysql_fetch_array($result))
                      {
                           $return[] = $row;
                      }
                      return $return;
                }
    
                return false ;
            }
    
    
            function query()
            {
                 if(!$this->_conn){
                      $this->db_connect();
                 }
    
                 if(!$this->_select){
                      $this->db_select();
                 }
    
                 if(isset($this->_where)){
                       $sql = "select * from %s.".$this->_tablename." where ".$this->_where;
                 }else{
                       $sql = "select * from %s.".$this->_tablename;
                 }
    
                 return $this->execute(sprintf($sql , $this->_dbname));
    
            }
       }
    
       function prom_timing_exec()
       {
           $db_op = new db_op("keke_witkey");
           $exec_result = $db_op->query();
           print_r($exec_result);
       }
    
       if(isset($method) && $method != ""){
            return $method();
       }else{
            echo "No function to call.";
       }
    ?>

    注意:这里在PHP中接收传过来的参数是用:$argv变量来接收的,$argv[0]是php文件名,$argv[1]是第一个参数,$argv[2]是第二个参数....

    好久没有写文章了,坚持每天的学习。

关键字