Php 在另一个lagnauge中调用函数
我正在用php编写一个程序,它几乎完成了所有需要做的事情,但有一次我需要使用python编写的函数,使用mechanize库,这两个脚本将托管在同一台服务器上 我最初的想法是执行一个Php 在另一个lagnauge中调用函数,php,python,curl,cross-language,Php,Python,Curl,Cross Language,我正在用php编写一个程序,它几乎完成了所有需要做的事情,但有一次我需要使用python编写的函数,使用mechanize库,这两个脚本将托管在同一台服务器上 我最初的想法是执行一个CURL调用,其中包含从php脚本到python脚本的任何参数,然后使用CURL再次将函数结果返回给php脚本 我对编程很陌生,也不确定做这样的事情时有什么最佳约定,我使用CURL设置工作流是通常的方式还是有其他方式?如果脚本在同一台服务器上,您可以始终使用php()中的exec函数 但是,请确保您知道自己在做什么,
CURL
调用,其中包含从php脚本到python脚本的任何参数,然后使用CURL
再次将函数结果返回给php脚本
我对编程很陌生,也不确定做这样的事情时有什么最佳约定,我使用
CURL
设置工作流是通常的方式还是有其他方式?如果脚本在同一台服务器上,您可以始终使用php()中的exec
函数
但是,请确保您知道自己在做什么,因为该函数功能强大,如果使用错误,可能会非常糟糕。如果脚本位于同一服务器上,您可以始终使用php()中的
exec
函数
但是,请确保您知道自己在做什么,因为该函数功能强大,如果使用错误,可能会非常糟糕。如果脚本位于同一服务器上,您可以始终使用php()中的
exec
函数
但是,请确保您知道自己在做什么,因为该函数功能强大,如果使用错误,可能会非常糟糕。如果脚本位于同一服务器上,您可以始终使用php()中的
exec
函数
但是,请确保您知道自己在做什么,因为该功能非常强大,如果使用错误,可能会非常糟糕。如果您需要能够独立分发PHP代码和Python代码,将它们部署在单独的服务器上,等等,那么将Python代码作为web服务是合理的,让PHP代码调用该web服务,就完成了
但是,如果Python脚本总是在本地运行,那么通常更容易在程序向其传递命令行参数和/或标准输入并检索其标准输出时运行它。PHP有几种不同的方法来实现这一点——
system
、popen
、exec
、passthru
——它们都有不同的优点和缺点
例如,使用
exec
,您只需对每个参数调用escapeshellarg
,将它们放在一个带脚本路径的空格分隔的字符串中,调用exec
,就可以返回结果。如果您需要能够独立分发PHP代码和Python代码,将它们部署在不同的服务器上,等等,这样做是合理的,您将Python代码作为web服务,将PHP代码调用该web服务,就完成了
但是,如果Python脚本总是在本地运行,那么通常更容易在程序向其传递命令行参数和/或标准输入并检索其标准输出时运行它。PHP有几种不同的方法来实现这一点——
system
、popen
、exec
、passthru
——它们都有不同的优点和缺点
例如,使用
exec
,您只需对每个参数调用escapeshellarg
,将它们放在一个带脚本路径的空格分隔的字符串中,调用exec
,就可以返回结果。如果您需要能够独立分发PHP代码和Python代码,将它们部署在不同的服务器上,等等,这样做是合理的,您将Python代码作为web服务,将PHP代码调用该web服务,就完成了
但是,如果Python脚本总是在本地运行,那么通常更容易在程序向其传递命令行参数和/或标准输入并检索其标准输出时运行它。PHP有几种不同的方法来实现这一点——
system
、popen
、exec
、passthru
——它们都有不同的优点和缺点
例如,使用
exec
,您只需对每个参数调用escapeshellarg
,将它们放在一个带脚本路径的空格分隔的字符串中,调用exec
,就可以返回结果。如果您需要能够独立分发PHP代码和Python代码,将它们部署在不同的服务器上,等等,这样做是合理的,您将Python代码作为web服务,将PHP代码调用该web服务,就完成了
但是,如果Python脚本总是在本地运行,那么通常更容易在程序向其传递命令行参数和/或标准输入并检索其标准输出时运行它。PHP有几种不同的方法来实现这一点——
system
、popen
、exec
、passthru
——它们都有不同的优点和缺点
例如,使用
exec
,您只需对每个参数调用escapeshellarg
,将它们放在一个空格分隔的字符串中,并带有脚本的路径,调用exec
,您就可以得到结果。我不知道这有多好(我没有亲自尝试过),但您可以尝试一下: