精华内容
下载资源
问答
  • PHP调用PythonPHPPython发送数据

    千次阅读 2019-06-12 11:36:47
    一、python文件位于项目中,非远程外部。 1、定义一个python测试文件 test.py #!/usr/bin/env python #-*- coding: UTF-8 -*- print "这是一个测试" ...$output = exec("python /home/vagrant/code/php...

    一、python文件位于项目中,非远程外部。

    1、定义一个python测试文件

    test.py
    
    #!/usr/bin/env python
    #-*- coding: UTF-8 -*-
    print "这是一个测试"

    2、定义一个url去访问一个php方法(我直接在laravel框架里测试的)

    $output = exec("python  /home/vagrant/code/php-dms/test.py");  // 1
    //        $output = shell_exec("python  /home/vagrant/code/php-dms/test.py"); // 2
    //        $output = system("python  /home/vagrant/code/php-dms/test.py"); // 3
    //        $output = passthru("python  /home/vagrant/code/php-dms/test.py"); // 4
    //        $handle = popen("python  /home/vagrant/code/php-dms/test.py",'r');
    //        $output = fread($handle,4096); // 5
            dump($output);exit;
    
    解析:
    exec ( string $command [, array &$output [, int &$return_var ]] ) : string
    
    备注: exec有3个参数,第一个是要执行的命令,第二个是参数是一个数组,数组的值是由第一个命令执行后生成的,第三个参数执行的状态,0表示成功,其他都表示失败。
    
    查看具体信息需要使用 2>&1, 命令就会输出shell执行时的错误到$output变量, 输出该变量即可分析。
    例如:
    
    exec('ls 2>&1', $output, $return_val); 
    print_r($output); 
    
    exec参考链接:https://mp.csdn.net/postedit/91494115

     

    1、2、3、4、5 分别对应输出:

    总结:先说明一下,python在linux系统里是全局变量,所以执行shell可以直接调起python解释器去执行python文件。如果是windows,需要将python改为python.exe安装的地址。

    从结果来看:

    1、exec和shell_exec和popen差不多。

    2、system会自动输出结果,所以其实无需打印。

    3、passthru也是会自动输出结果,但不会将变量赋值。

    具体它们之间有何差异,重建线程还是覆盖原有线程等,在此不再赘述,自行查阅资料吧,不过我项目里用的最多的就是exec。

    参考:https://mp.csdn.net/postedit/91494115

     

    请求发送方式curl、stream流、socket等。

    二、PHP主动向python发送数据 socket

    python要主动向PHP发送数据,很简单,通过http方式调用接口即可(常见),而PHP要向python发送数据,则需要使用到php的socket相关功能(不常见)。

    /*socket收发数据
    @host(string) socket服务器IP
    @post(int) 端口
    @str(string) 要发送的数据
    @back 1|0 socket端是否有数据返回
    返回true|false|服务端数据
    */
    function sendSocketMsg($host,$port,$str,$back=0){
        $socket = socket_create(AF_INET,SOCK_STREAM,0);
        if ($socket < 0) return false;
        $result = @socket_connect($socket,$host,$port);
        if ($result == false)return false;
        socket_write($socket,$str,strlen($str));
        
        if($back!=0){
            $input = socket_read($socket,1024);
            socket_close ($socket);    
            return $input;
        }else{
            socket_close ($socket);    
            return true;    
        }    
    }

    socker_read的第二个参数用以指定读入的字节数,你可以通过它来限制从客户端获取数据的大小。
        注意:socket_read函数会一直读取壳户端数据,直到遇见\n,\t或者\0字符,PHP脚本把这些字符看做是输入的结束符。

    附:php的socket编程

    三、PHP主动向python发送数据 stream流

    可以使用 file_get_contents() 发送 HTTP POST 请求,使用一个流上下文对象即可实现。学院君stream

    //测试已实现数据发送
    <?php
    $requestBody = '{"username":"nonfu"}';
    $context = stream_context_create([
        'http' => [
            'method' => 'POST',
            'header' => "Content-Type: application/json;charset=utf-8;\r\nContent-Length: " . mb_strlen($requestBody),
            'content' => $requestBody
        ]
    ]);
    $response = file_get_contents('https://my-api.com/users', false, $context);
    ?>
    
    //这个是php.net的example
    <?php
    $opts = array(
      'http'=>array(
        'method'=>"GET",
        'header'=>"Accept-language: en\r\n" .
                  "Cookie: foo=bar\r\n"
      )
    );
    
    $context = stream_context_create($opts);
    
    /* Sends an http request to www.example.com
       with additional headers shown above */
    $fp = fopen('http://www.example.com', 'r', false, $context);
    fpassthru($fp);
    fclose($fp);
    ?>
    
    
    //最后这个请忽视
    <?php
    $fp = stream_socket_client("tcp://www.example.com:80", $errno, $errstr, 30);
    if (!$fp) {
        echo "$errstr ($errno)<br />\n";
    } else {
        fwrite($fp, "GET / HTTP/1.0\r\nHost: www.example.com\r\nAccept: */*\r\n\r\n");
        while (!feof($fp)) {
            echo fgets($fp, 1024);
        }
        fclose($fp);
    }
    ?>

    扩展:

    ppython :传送门

    开源项目既是结合使用PHP和Python两种语言,取其所长、补其所短,面向企业WEB领域的开发技术。此技术可以理解为PHP和Python相结合的 技术,也可称为PHP和Python混合编程技术,或者PHP调用Python服务的技术,也有人习惯称之为前台PHP后台Python的技术框架。 

    展开全文
  • python调用PHP

    千次阅读 2017-09-09 21:00:12
    python调用PHP
    . 调用php

    方法一:
    import subprocess
    
    #simple caller, disguard output
    
    subprocess.call("php /path/to/my/old/script.php")
    
    # if you want output
    
    proc = subprocess.Popen("php /path/to/my/script.php", shell=True,
    stdout=subprocess.PIPE)
    
    script_response = proc.stdout.read()

    方法二:
    # shell execute PHP
    def php(code):
      # open process
      p = Popen(['php'], stdout=PIPE, stdin=PIPE, stderr=STDOUT, close_fds=True)
    
      # read output
      o = p.communicate(code)[0]
    
      # kill process
      try:
        os.kill(p.pid, signal.SIGTERM)
      except:
        pass
    
      # return
      return o

    To execute a particular file do this:

    width = 100
    height = 100
    
    code = """<?php
    
      include('/path/to/file.php');
      echo start(""" + width + """, """ + height + """);
    
    ?>
    """
    res = php(code)
    展开全文
  • PythonPHP

    万次阅读 2011-05-06 11:52:00
    由于本人是PHP出生,故跟PHP进行进行比较。 1、 速度方面。Python的速度比较慢,这个是被大家证实的。比起php的速度,无法相比。 2、 Php虽然有手机开发版、桌面开发版,但真真应用很少。在网站编程确实...

    零零落落的学习了Python已经快半年了,最近有花了点时间认真的学习了一下。虽认真学习半个多月,有点小体会。由于本人是PHP出生,故跟PHP进行进行比较。

    1、  速度方面。Python的速度比较慢,这个是被大家证实的。比起php的速度,无法相比。

    2、  Php虽然有手机开发版、桌面开发版,但真真应用很少。在网站编程确实是强大。相对phpPython更多是一个全能型的,啥都能做。从做传统的桌面软件到互联网编程,到手机应用开发到嵌入式开发,都有它的身影,真是无所不能。

    3、  Php国内应用很多,国内大小型公司都有对php的应用,各种资料比较齐全,人才也相对比较多。Python国内用的公司比较少,绿盟科技、豆瓣等公司有应用。资料少,人才少。但最近几年Python在国内逐渐的流行起来了。

    4、  Pythonphp都是解释型语言。但他们却有很大的区别。Php在速度方面继承了C的优势,速度快,从语法上来说跟C也差不多。很多人都说,只要学过C,对php就没问题。在面向对象方面,php在很大程度上学习了JAVA思想。PythonJAVA,从整个构架到运行速度等。但是它的语法风格上很严谨。有JAVA的痕迹,但也更像JAVASCRIPT.

    5、  Pythonweb开发商的Django的框架真是把我征服,很强大。但同时也很臃肿。Php在这方面就稍微弱点。

    鄙人愚见,如有雷同,不胜高兴。若有不多,请赐教。

    展开全文
  • PHP调用python

    千次阅读 2013-03-17 18:22:45
    今天突发奇想想用PHP接受POST表单,用python做运算,毕竟python灵活度更高,工作也需要用到,顺便用于练习了。 有几种方法: 1. 用php自带函数  exec()、 system()、 passthru() php手册中有介绍,貌似都需要...

    今天突发奇想想用PHP接受POST表单,用python做运算,毕竟python灵活度更高,工作也需要用到,顺便用于练习了。

    有几种方法:

    1. 用php自带函数 

    exec()、 system()、 passthru()  php手册中有介绍,貌似都需要注意安全性问题,因为很有可能允许用户执行系统命令。python响应有延时时,system()和passthru()也都能成功,也就是说,php会等待程序执行完成才返回结果。使用起来非常方便,但是程序执行错误不容易发现。调试非常麻烦!


    期间还遇到一个问题,就是由于运行目录变化,遇到python提示文件不存在的问题,只要给sys.path加入py脚本文件所在目录,并且把运行环境目录改为该脚本所在目录即可:

       

    curpath=os.path.normpath(os.path.join(os.getcwd(),os.path.dirname(__file__)))
    sys.path.append(curpath)
    os.chdir(curpath)


    另外编码的问题耗费了好长时间,擦泪啊,搞了好久,最终解决办法是套了原先的测试模板.....不添加以外的编码代码,如下:

    some.py
    ------------------------------------------

    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    import sys
    
    def do_some(a):
        return "dosome:%s" % a
    
    if __name__ == '__main__':
        a = sys.argv[1]
    if a:
        T = do_some(a)
    print T


    -------------------------------------------
    t.php

    <?php
    $k = $_REQUEST['k'];
    if (!empty($k))
    {
    $k = trim($k);
    //    $a = array();
    //    exec('python ./some.py '.$k, $a);
    //    echo $a[0];
    passthru('python ./some.py '.$k);
    }


    编码问题太恶心了,涉及apache2配置、php5配置、html配置、系统配置、python配置。。。。。。一大堆地方,说明自己还不够精通。


    2. 使用socket,或者上thrift,因为前几天刚好看了thrift,thrift的好处是只要写一次,什么语言都一样支持了。

    简单的PHP与Python间Socket通信

    python如何为php写后端

           

    还是尝试了thrift,首先安装python环境,要在thrift下载下来的lib文件夹中执行py文件,相关的例子网上很多

    再安装php环境,感觉这个有些奇怪,

    1.copy lib/php/src 和 lib/php/lib/Thrift下所有文件到了 var/lib/Thrift中,后面这个目录是自己选择的;

    2.进入 /thrift/lib/php/src/ext/thrift_protocol 下,运行

    phpize
    ./configure --enable-thrift_protocol
    make
    make install
    
    
    
    
    
    然后折腾了好一会儿。。。。。。最后解决办法是按照tutorial中的目录结构,文件原封不动复制过去。。。遇到一些命名空间的问题,加 些空间的‘//’ 解决了!!!!


    终于搞定,效率大大提高,有空继续优化一下

    3. 还查到一个开源项目ppython

        见 https://code.google.com/p/ppython/ 也是采用的socket通信


    全文参考:

    http://www.dewen.org/q/10007/php%E4%BC%A0%E9%80%92%E5%8F%82%E6%95%B0%E7%BB%99python

    展开全文
  • PythonPhp的比较

    千次阅读 2018-08-22 16:55:28
    1. python不是脚本语言,虽然他是动态解释的。他可以完成系统级的开发。 2. python是跨平台的,你可以运用python在mac,在...4. web开发上,PHP应用较广,有很多现成的代码和模版,python这方面欠缺,虽然他有很...
  • PHP运行Python脚本

    千次阅读 2019-06-05 16:33:39
    注:本次问题产生的环境是建议在windows环境下,利用IIS+PHP去调用Python脚本失败的前提下。如果你的环境与本次问题的环境不符。请自动规避。 在产品需求分析到一定阶段,各个部门之间需要一定的协调。然后我们做...
  • PythonPHP的区别

    千次阅读 2018-10-17 14:50:41
    PythonPHP和其他编程语言一样,都有各自的优缺点,受欢迎程度取决于其是否迎合了时代的发展,不同的编程语言有其不同的特点,适应不同的场景,以下是PythonPHP的对比! 从开发的角度来看,PHP是面向web的语言,...
  • pythonphp对比

    千次阅读 2017-09-04 17:47:30
    php比较熟悉,最近开始学些python,总是搞混,特记录下来,用于熟悉python: 1、python数组和php不同,php相对简单统一,即array(包括普通数组和关联数组两部分),python可分为列表[],元组(),字典{},格式不一...
  • PHP如何调用python

    千次阅读 2018-12-22 17:28:35
    实用代码  php代码 &lt;?php #header("Content-type: text/html; charset=utf-8"...$output = shell_exec('python test.py'); $array = explode(',', $output); echo $array[0]; foreach ($arr...
  • php调用python程序

    千次阅读 2017-04-24 09:56:50
    方法一,同步调用:<?php $cmd = system('python test.py',$ret); ?>有一个缺点,因为同步的原因,若python程序执行时间超过30秒,会报错Fatal error: Maximum execution time of 30 seconds exceeded in XXX以至于...
  • php调用python文件

    千次阅读 2019-03-14 19:00:42
    关于PHP调用Python数据传输问题 这是以前大学时做项目出现的问题,现在把它挪上来,希望给遇到问题的未来大佬给出一些小的思路,请大佬们不要大意的帮我改正,如果出现问题或者有更好的解决方法,希望大家可以给出...
  • php调用python

    千次阅读 2017-10-19 18:22:56
    $program="/usr/bin/python ./a.py "; #注意使用绝对路径 $g='b'; $p=exec($program.$g);echo $p; pythond文件:#!usr/bin/env python import sys def gg(a): return a if __name__ == '__main__':  
  • PHP 调用python 脚本实现python功能

    万次阅读 2016-03-31 00:46:39
    本人需要使用php调用python PIL 函数,将文本粘贴到图片上。 所以使用php中的exec函数。 在exec中第一个参数后添加 2>&1。如果python运行错误,将会把出错信息传递给$arr变量,然后就可以将arr变量的值输出到web端...
  • PHPPython的比较 (PHP vs Python)

    万次阅读 2008-02-13 12:26:00
    在这里,我节录了一些关于PHPPython比较的文章和讨论,让我们能从另外一个 角度来看待PHP的优点和缺点。同样作为一种脚本语言,底层同样是由C语言来开发的,Python是OO的,现在PHP也OO了。Python是多用途的(可用于...
  • PHP接收Python的传值

    千次阅读 2018-06-01 01:30:58
    因为博客之前都是用PHP写的后端,现在想应用一下Python爬虫到的豆瓣数据,于是就需要在PHP中得到Python的运行结果。建立联系首先,将PHPPython建立起联系的,就是在PHP中使用shell_exec()函数:&lt;?php $...
  • Python调用PHP的函数

    千次阅读 2013-09-06 21:35:03
    Python调用PHP
  • 想要理解PHPPython的差别,我们可以从二者的定义、利益和短少以及受众人群三个方面的停止分析。PHPPython的差别之一:定义不同。PHP是一种通用开源脚本言语,语法混合了C、Java、Perl以及PHP自创的语法,因而...
  • PHP中调用python程序

    万次阅读 2015-07-31 13:40:48
    php在很多方面远没有python强大,但是在web开发过程中,有很多需要实施计算的数据,我们希望他们能够实时的显示在网页上。 这就需要在PHP中调用python程序。具体实现步骤如下: 1, 将php文件,python文件放在通过...
  • Python、Java、PHP中的foreach

    万次阅读 2019-04-20 09:36:45
    // Python中的for遍历: /* for num in num_list: print(num) */ // Java中的foreach: /* ArrayList<int> list = new ArrayList<int>(); list.add(1); list.add(2); list.add(3); for(int i : list...
  • Python

    千次阅读 多人点赞 2009-04-10 10:42:00
    Pythonpython目录 英文简介 Python的特色 Python的Hello World程序 Python的历史 Python的设计理念 Python的不适之处 Python的缺点和补救措施 Python的前景 Python的应用 Python的库 python资源: Python的应用 ...
  • Python vs. PHP

    千次阅读 2010-12-08 23:15:00
    PythonPHP的共同之处: 1. 都是解释型的,它们都是有动态类型的高级语言(动态语言)。 2. 都是开源的,(当然,要除掉Zend的几个产品)。 3. 都有大量开发者社区来支持。 4. 都易学,比Java容易学,甚至比...
  • Phppython简单比较

    千次阅读 2015-10-16 16:55:31
    就如各种其他语言一样,完完全全的讨论phppython哪种语言好是完全没有必要的,每种语言都有各自的优缺点,被使用的广泛程度则取决于他是是否迎合了时代的发展而已。使用的场景不同各种语言的适用程度也是不一样的...
  • pythonphp交互

    千次阅读 2013-12-22 20:35:01
    方法一: php中可以真接 $result=exec(phtyon XXX.py); 但经常会因返回含编码问题和含html标识,被忽略 方法二: 保存共同文本 ...2)python中用到pickle,php中再调用python 反序列 http://stac
  • php 调用python 脚本

    千次阅读 2016-11-01 14:37:15
    这篇文章主要介绍如果利用PHP操作执行Python脚本 现在假设你已经有了一个可以执行PHP脚本的服务器环境,这篇教程的目的是告诉你如何利用PHP从一个Python脚本获取数据 The Python Script: 下面是一个简单的示例,...
  • 有关于PHP的索引数组和关联数组,相信每一个PHPer都是熟悉的不能再熟悉了,然而对照与python来说,PHP的索引数组就相当于python中的列表以及元组,而关联数组就相当于python中的字典。 有关于python中的列表以及...
  • PythonPHP:有什么区别?

    万次阅读 2019-02-19 10:48:04
    什么是Python?   Python是一种高级的面向对象的编程语言。它具有内置的数据结构,结合动态类型和绑定,使其成为快速应用程序开发的理想选择。Python还提供对模块和包的支持,允许系统模块化和代码重用。   它是...
  • PythonPHP之比较

    万次阅读 2009-09-08 22:13:00
    偶尔做个简单的WEB服务测试程序,我还是喜欢采用PHP。简洁,风格和C/C++接近,上手快,而且库也很齐全。以前为广东移动做移动行业终端的演示程序时,采用国内一个...虽然最近用的比较多的是Python,但总感觉Python在Web
  • Python安装教程:

    万次阅读 多人点赞 2021-03-10 14:23:10
    Python安装教程: ...Python简介:菜鸟教程官方解释。 Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言...类似于PHP和Perl语言。 Python 是交互式语言: 这意味着,您可以在一个 Python 提示符
  • 一:php调用python脚本 并传入参数,并接收返回值  php调用python脚本可以用 system(),exec()和passthru() 函数,本篇文章主要介绍exec 函数   exec有三个参数,第一个参数为一个字符串,包括三个子串,起...
  • 一般我们执行python文件的方法是 python xxx.py, 那么,对于PHP来执行的话,同样是python xxx.py 但是PHP不知道我们python在哪,所以需要加绝对路径PATH, xxx.py也同样需要绝对路径  这里的命令解读为: system('...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 286,704
精华内容 114,681
关键字:

python跟php

python 订阅