# 更新日志
* 继承指定文件夹里的模块 -- 2017-05-11
* 新增LOAD_TYPE,可以动态加载包,不需要每次都重启ppython服务 -- 2017-09-22
* 新增日志记录,脚本控制启动/重启/停止,支持supervisor管理ppython进程 -- 2019-03-29
* 优化日志记录方式,新增ipv 6 支持,且不再将python部分放入项目代码库,应单独管理 -- 2019-04-03
* 更新使用说明,明确表示ppython没问题,不会导致请求发送两次。
# 终于将内奸揪了出来
~~1. 如果在调用ppython时,最后PHP有打印形式的输出,则对应的python脚本会被执行两遍,这也是为什么日志打印两遍的原因,目前未找到解决方法。~~
**导致请求两次的内奸终于找到了:** 原来是`chrome`上的`jsonView jsonViewer json formatter 格式化`插件导致`get`请求会发送两次ಥ_ಥ。停用该插件即可!
![supervisor](./jsonview.png)
# 令人惊喜的更新
1. 利用`ppython.sh` 来替换`screen`或`tmux`
> 请注意:这种方式和`supervisor`互斥
# 开启ppython服务
sh ppython/ppython.sh
# 停止ppython服务
sh ppython/ppython.sh stop
2. 所有重要信息都会被记录在日志里 `ppython/log/python/all.log` ,默认按天进行分割,保留最近10天日志,追错/排查不再抓瞎
![supervisor](./ppythonlog.png)
3. 强烈建议使用`supervisor`来管理你的`ppython`服务
**supervisor简介**
C/S架构的进程控制系统,可使用户在类UNIX系统中监控、管理进程。常用于管理与某个用户或项目相关的进程。
官网地址:http://www.supervisord.org
**组成部分**
supervisord:服务守护进程
supervisorctl:命令行客户端
Web Server:提供与supervisorctl功能相当的WEB操作界面
XML-RPC Interface:XML-RPC接口
**使用方法**
* 安装`supervisor`
~~~
# 注意,supervisor不支持python3,如果你默认是python3请使用pip2 isntall supervisor来安装
pip install supervisor
~~~
* 修改配置文件
①在`supervisor/supervisord.conf`搜索 `/Users/liuzhen20/work/2019/php-python/ppython/` ,然后将这几处替换成你的`ppython`所在位置
②修改`supervisor/supervisord.conf`第22~25行
~~~
[inet_http_server] ; inet (TCP) server disabled by default
port=127.0.0.1:8886 ; 这里改为你的IP地址和端口
username=admin ; 默认用户名
password=admin2019 ; 默认密码
~~~
③在`supervisor/ppython.ini`搜索 `/Users/liuzhen20/work/2019/php-python/ppython/` ,然后将这几处替换成你的`ppython`所在位置
* 启动服务
~~~
sh ppython/supervisord/super_update.sh
~~~
* 访问服务
打开上面配置的IP+端口号 http://127.0.0.1:8886
![supervisor](./super.png)
**Enjoy it!**
# 一、`ppython` 简述
> 本类库基于年久已不再维护的`ppython`改写,为了表达对它的敬意,我决定沿用原名称。
### 站在巨人的肩膀上
*********************
> `ppython`是一个令人兴奋的项目,但是已经在14年停止维护和更新。以下部分文字摘自原`ppython`介绍,原文地址 http://www.oschina.net/p/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`的技术、文档对本项目有参考作用。
> 特点
**优势互补:** `PHP`和`Python`都是流行的脚本语言,`PHP`非常适合网页编程;而`Python`可以当作轻量级`JAVA`,二者结合可发挥各自优势。
**高效稳定:** `Apache+PHP`组合可带来优异的`WEB`服务稳定性,而`Python`的语言能力可补充如连接池、事物管理、分布式、对象模型等高端特性。
**通信机制:** `PHP`和`Python`间的通讯方式采用`TCP Socket`和`Unix Socket`两种机制,兼顾通讯效率和分布式。
**数据类型自动转换机制:** `PHP`数据和`Python`数据可准确地自动匹配和转换,无须程序员编写解析代码。
**易用:** 安装配置简单,`PHP`端和`Python`端编程符合各自的编程习惯。
**轻量级:** 架构非常轻量级,除了最基本的`PHP`和`Python`环境,不需要任何扩充的、第三方的组件、容器。
**PHP和Python的互通:**
![](http://static.oschina.net/uploads/img/201309/19082326_A2Sp.png)
**提高`Python`的多线程效率**
`Python`因其语言`GIL`特性,多线程效率不高。在`PHP+Python`的混搭机制中,`Python`端可以多进程方式部署,从而提高`Python`的整体工作效率。
### 新`ppython`可以做什么?有什么优势?
*********************
**相对于已经年久失修且各种报错的旧版`ppython`,我做了相应的优化和修正,您可以很容易的集成在任意PHP项目中!**
新的`ppython`主要改进了以下内容:
* 将原生代码封装成可供调用的类库,开发者不需要关注深入的代码逻辑即可方便的使用;
* 改正了原项目中很多错误,精简了代码,去除无用代码;
* 将方法调用逻辑优化,从只传入`文件名`改为默认需传入`文件夹/文件名`,这样使开发者可以更好的管理`Python`文件;
### 注意事项
*********************
* 确保`PHP`已经打开`socket`相关模块
* 确保你的服务器上有`Python3`及以上版本
# 二、使用方法(以`ThinkPHP5`为例)
### 类库端的操作
*********************
1. 克隆代码放到`example`的`extend`目录下。
2. 在`python`目录下新建文件目录和文件,例:`test/test.py`。
3. `python`文件的基本写法和以前没有区别,其实就是将对外部访问的部分封装成方法,最终要将结果返回一个字符串或数组。
在`test.py`中写入你要调用的方法,例:
~~~
# 无参数
def hello():
return 'Hi , Tommy'
# 传递参数
def hello_name(name):
return 'Hi , ' + name
# 返回数组
def return_arr():
user = {}
user['name'] = 'Tommy'
user['age'] = 24
return user
# 由于PHP传过来的参数都会被处理成字符串类型,所以需要使用数字类型的地方请自行转换,如若是其他类型数据做类似处理,否则会报错。
# 但是由Python传给PHP的结果的数据类型不受限制
def dosum(num1 , num2):
return int(num1) + int(num2)
~~~
4. 使用终端用`python3`运行类库下的`php_python.py`文件
~~~
python3 php_python.py
~~~
看到以下输出,证明启动成功
~~~
-------------------------------------------
- PPython Service
- Time: 2017-08-04 13:24:13
-------------------------------------------
Listen port: 21230
charset: utf-8
Server startup...
~~~
### 在控制器中如何使用
*********************
* 头部要引用该类库
~~~
use ppython\Ppython;
~~~
* 示例代码
~~~
<?php
namespace app\index\controller;
use ppython\Ppython;
class Index
{
// 不带参数
public function py()
{
$python = new Ppython();
$data = $python->py("sayhi.hi::hello");
dump($data);
}
//带参数的方法
public function py_with_something($name)
{
$python = new Ppython();
// 更多�
没有合适的资源?快使用搜索试试~ 我知道了~
用PHP调用Python程序,实用且非常容易地集成到你的PHP项目中。-php-python.zip
共207个文件
php:157个
md:5个
tpl:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 197 浏览量
2024-01-31
20:30:23
上传
评论
收藏 577KB ZIP 举报
温馨提示
用PHP调用Python程序,实用且非常容易地集成到你的PHP项目中。-php-python
资源推荐
资源详情
资源评论
收起资源包目录
用PHP调用Python程序,实用且非常容易地集成到你的PHP项目中。-php-python.zip (207个子文件)
supervisord.conf 9KB
hiddeninput.exe 9KB
.gitignore 43B
.gitignore 14B
.gitignore 14B
.gitignore 14B
.htaccess 224B
.htaccess 13B
.htaccess 13B
favicon.ico 1KB
ppython.ini 595B
composer.json 869B
composer.json 598B
LICENSE 1KB
LICENSE 1KB
supervisord.log 1B
all.log 1B
ppython_error.log 1B
ppython.log 0B
README.md 12KB
README.md 5KB
CONTRIBUTING.md 4KB
README.md 216B
README.md 29B
Query.php 90KB
Model.php 67KB
Route.php 60KB
Request.php 50KB
Template.php 46KB
Validate.php 40KB
Process.php 31KB
Builder.php 30KB
Connection.php 30KB
Cx.php 24KB
Console.php 21KB
App.php 21KB
Loader.php 19KB
helper.php 18KB
BelongsToMany.php 18KB
Url.php 13KB
Input.php 13KB
TagLib.php 13KB
Descriptor.php 12KB
Console.php 12KB
Session.php 11KB
Command.php 11KB
Merge.php 11KB
File.php 11KB
Autoload.php 11KB
convention.php 10KB
Definition.php 10KB
Ask.php 10KB
OneToOne.php 10KB
Paginator.php 9KB
HasMany.php 9KB
MorphMany.php 9KB
config.php 9KB
Response.php 9KB
Collection.php 9KB
MorphTo.php 9KB
Handle.php 8KB
Socket.php 8KB
Build.php 8KB
MorphOne.php 7KB
Cookie.php 7KB
BelongsTo.php 7KB
Debug.php 7KB
File.php 7KB
Lang.php 7KB
View.php 7KB
Db.php 7KB
HasOne.php 7KB
Style.php 6KB
Controller.php 6KB
Windows.php 6KB
Cache.php 6KB
Sqlite.php 6KB
Config.php 6KB
Console.php 6KB
Output.php 6KB
Log.php 6KB
Option.php 6KB
Think.php 6KB
Memcached.php 6KB
Formatter.php 6KB
Driver.php 6KB
Bootstrap.php 5KB
Php.php 5KB
Redis.php 5KB
Builder.php 5KB
Unix.php 5KB
Question.php 5KB
Memcache.php 5KB
Lite.php 5KB
Jump.php 5KB
HasManyThrough.php 5KB
Choice.php 5KB
Hook.php 5KB
File.php 5KB
Schema.php 5KB
共 207 条
- 1
- 2
- 3
资源评论
武昌库里写JAVA
- 粉丝: 3399
- 资源: 1986
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功