为什么PHP用popen异步调用python popen脚本没有异步?


os.popen() 方法用于从一个命令打开一个管道。

popen()方法语法格式如下:


  
  • bufsize -- 指明了文件需要的缓冲大小:0意味着无缓冲;1意味着行缓冲;其它正值表示使用参数大小的缓冲(大概值,以字节为单位)。负的bufsize意味着使用系统的默认值,一般来说,对于tty设备,它是行缓冲;对于其它文件,它是全缓冲。如果没有改参数,使用系统的默认值。

返回一个文件描述符号为fd的打开的文件对象

以下实例演示了 popen() 方法的使用:


  

执行以上程序输出结果为:


}

侃侃:公司用的php的popen以命令的形式调用python,首先说说这样做的缺点。

php执行命令行调用python的缺点

  1. 缺点一:windows默认的是gbk编码,当php中传utf-8中文参数的时候,python接收到的参数会有问题。

    #当然,这是有解决的办法的,就是windows下转换一下字符的编码,linux不用转换。再来python接收参数的时候肯定也要转换编码了,烦不烦?
  2. cmd命令或者shell命令是有长度限制的,传的参数过长的时候,接收到的参数就不会完整。
  3. 执行shell命令是有危险的,万一参数里面多了个啥,你知道的。

不多说,不清楚的百度"socket",下面上代码(写的一个php调用python服务美化javascript的应用,服务器端python):

#代码中引用的模块将会在附件中给出

解释一下,上面这些代码是用python创建一个socket服务器,并且加入系统的守护进程。Todo里面实现策略工厂啥的,你懂的。使用方法:

#接着设为系统启动项就O了。
//代码中引用的文件将会在附件中给出,附件中还给出了php并发的写法
/* 美化:格式化代码,使之容易阅读 */
/* 净化:去掉代码中多余的注释、换行、空格等 */
/* 压缩:将代码压缩为更小体积,便于传输 */
/* 解压:将压缩后的代码转换为人可以阅读的格式 */
/* 如果有用,请别忘了推荐给你的朋友: */
/* 以下是演示代码 */
 
 
}

我要回帖

更多关于 python popen 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信