PHP调用python
来源:互联网 发布:怎么找淘宝刷手 编辑:程序博客网 时间:2024/04/27 22:56
今天突发奇想想用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 sysdef do_some(a): return "dosome:%s" % aif __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_protocolmakemake 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
- PHP调用python
- php调用python
- php调用python
- php 调用python 脚本
- php调用python程序
- python调用PHP
- php调用python
- Python调用PHP的函数
- python调用php上传图片
- php 调用python 脚本方法
- PHP中调用python程序
- PHP 调用python 脚本实现python功能
- python调用php脚本和函数
- php调用Python接口的方法
- PHP文件中调用Python脚本
- PHP调用Python失败的解决办法
- php 调用 python脚本的方法
- PHP +python +Apache (在PHP 项目中 调用 python 接口)
- ubuntu10.04下安装windows7
- 黑马程序员——java编程那些事儿____IO流(一)
- struts2学习笔记模型驱动
- 找出100个50位数之和的前十位数字。
- POJ 1006
- PHP调用python
- 谷歌三大核心技术(二)Google MapReduce中文版
- Windows不能在本地计算机启动OracleDBConsoleorcl
- 海量数据处理(一)
- cp命令的源前后加引号导致错误
- 一对多
- 时间类
- Web Server 性能计数器
- POJ-3414-Pots