php调用脚本或者系统函数
来源:互联网 发布:sql 添加默认值 编辑:程序博客网 时间:2024/05/23 21:40
都知道调用系统函数式exec或者system这两个方法,至于其他的我还不知道,学识有限。
至于这两个函数个人喜好,我觉得没什么区别,不过建议调用系统函数使用system,调用脚本什么使用exec至于为什么,只是个人按单词字面理解,
今天说的是exec,刚好项目使用的抓取,前面用php curl方式,但是老长了,维护起来也是特纠结。有python这么好的抓取利器不能浪费了,反正centos里面自带不是
exec调用方法
exec('python ' . dirname(dirname(__FILE__)). '/\python2/\getPay.py "' . $id . '" '.$url, $array, $ret);
这个是带了两位参数,$array是返回值,$ret是执行状态,如果python报没有找到,这时候$ret报的好像是127吧,可能你是docker环境,会遇到这个问题,应为你当前容器并不具备python只是系统底层具备
所以你可以有两种方式解决,curl方式单独开一个容器,这个容器也有php环境和python环境。在配置映射目录建一个php文件,调用通过curl端口加上这个新建的php文件,就好
还有一个这个新建文件调用返回数据大都是echo json_encode($data);这样的吧!注意这样curl抓取的bom头,你直接json_decode($output);是解析不出来的
$postData=array('pythontype'=>'getPay','id'=>$id,'url'=>$url); // $url = ""; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://172.0.0.1/getpython.php'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);// post数据 curl_setopt($ch, CURLOPT_POST, 1);// post的变量 curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); $output = curl_exec($ch); curl_close($ch);
if(preg_match('/^\xEF\xBB\xBF/',$output)){ $output = substr($output,3);}$output = json_decode(trim($output),true);
差不多就是这样的了,这样做也有一个不好处就是端口暴露在外面,那就改成智能内部服务调用就好curl地址改一下就ok.
阅读全文
0 0
- php调用脚本或者系统函数
- python调用php脚本和函数
- PHP调用Linux系统的常用函数
- PHP调用Linux系统的常用函数
- C++ 调用 PHP 脚本
- php 调用python 脚本
- java中调用linux命令或者脚本
- java调用Linux的命令或者脚本
- 系统调用、函数调用
- 系统调用&函数调用
- php中使用exec,system等函数调用系统命令
- php中使用exec,system等函数调用系统命令
- php中使用exec,system等函数调用系统命令
- php中使用exec,system等函数调用系统命令
- php中使用exec,system等函数调用系统命令
- php中使用exec,system等函数调用系统命令
- php中使用exec,system等函数调用系统命令
- PHP中各个系统调用函数的区别
- dubbo Thread pool is EXHAUSTED-故障排除
- [PAT]1013. Battle Over Cities (25)@Java
- 武汉淘宝,面试感受
- Python 多线程 Selenium 跨浏览器测试
- FastDFS分布式文件系统
- php调用脚本或者系统函数
- php消息队列
- C++学习笔记:友元函数和友元类
- codility Nesting
- Linux 吊炸天的总结
- 文章标题
- 关于点击popupwindow以外区域 popupwindow自动消失问题
- Javaweb基础----过滤器filter(转发)
- Linux高手入门:Linux五种I/O模型