栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

钻石OTC跑分系统开发

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

钻石OTC跑分系统开发

  

php调用python服务


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


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


  popen('python test.py[参数]','r');


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


  当然,这是有解决的办法的,就是windows下转换一下字符的编码,linux不用转换。再来python接收参数的时候肯定也要转换编码了,烦不烦?


  cmd命令或者shell命令是有长度限制的,传的参数过长的时候,接收到的参数就不会完整。


  执行shell命令是有危险的,万一参数里面多了个啥,你知道的。


  这也能解决,php中的函数escapeshellarg,嗯哼先给他escape一下。


  那怎么办呢?


  python socket server


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


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


  import sys,json


  import traceback


  import SocketServer


  from daemon import Daemon


  import jsbeautifier

  php调用python服务


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


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


  popen('python test.py[参数]','r');


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


  当然,这是有解决的办法的,就是windows下转换一下字符的编码,linux不用转换。再来python接收参数的时候肯定也要转换编码了,烦不烦?


  cmd命令或者shell命令是有长度限制的,传的参数过长的时候,接收到的参数就不会完整。


  执行shell命令是有危险的,万一参数里面多了个啥,你知道的。


  这也能解决,php中的函数escapeshellarg,嗯哼先给他escape一下。


  那怎么办呢?


  python socket server


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


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


  import sys,json


  import traceback


  import SocketServer


  from daemon import Daemon


  import jsbeautifier


  class Todo:

  


  pc_base::load_sys_class('format','',0);


  $show_header='';


  $model_cache=getcache('model','commons');


  if(!isset($_GET['modelid'])){


  showmessage(L('please_select_modelid'));


  }


  else{


  $page=intval($_GET['page']);


  $modelid=intval($_GET['modelid']);


  $this->db->set_model($modelid);


  $where='';


  if($_GET['catid']){


  $catid=intval($_GET['catid']);


  $where.='catid=''.$catid.''';


  }


  $where.=$where?'AND status=99':'status=99';


  if(isset($_GET['keywords'])){


  $keywords=trim($_GET['keywords']);


  $field=$_GET['field'];


  if(in_array($field,array('id','title','keywords','description'))){


  if($field=='id'){


  $where.='AND`id`=''.$keywords.''';


  }


  else{


  $where.='AND`'.$field.'`like'%'.$keywords.'%'';


  }


  }


  }


  }

  ef handle(self):


  while True:


  try:


  data=self.request.recv(2*1024*1024)


  if not data:


  print('end')


  break


  data=json.loads(data)


  res=getattr(self._object,data['func'],'error')(data['args'])


  if not res:


  res=''


  res=str(len(res)).rjust(8,'0')+str(res)


  self.request.send(res)


  except:


  print('error in ThreadedTCPRequestHandler:%s,res:%s'%(traceback.format_exc(),data))


  class ThreadedTCPServer(SocketServer.ThreadingMixIn,SocketServer.TCPServer):


  pass


  class Server(Daemon):


  def conf(self,host,port,obj):


  self.host=host


  self.port=port


  self.obj=obj


  ThreadedTCPServer.allow_reuse_address=True


  def run(self):


  ThreadedTCPRequestHandler._object=self.obj


  server=ThreadedTCPServer((self.host,self.port),ThreadedTCPRequestHandler)


  server.serve_forever()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/232146.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号