Golang Go语言与PHP最佳交互方式?
Golang Go语言与PHP最佳交互方式?
尝试过 goridge 可每次调用只能通过 string 方式返回 信息太少了 好像是通过指针类型的参数返回 string 的
也尝试过 go 启动服务 以 php 写 fsockopen http 请求方式结合 这种方式也不好
现在我就 exec 或 passthru 启动进程方式结合
它们之间用写文件的方式来交互
go 有什么东西写到文件上
前端 ajax 请求 php 去查看文件
以此来输出日志或 go 进度
14 回复
关键任务用 go 做 比如上万个 api http 请求 php 调用 go 显示进度
goridge 返回 string,可以是返回一个 json 字符串,你想返回啥就返回啥
*unix 系统有 ipc 通信方法,共享内存、队列等,http 不行也可以换其他打包形式和传输协议。
不过我觉得只是显示个进度,何必还启个 php 服务呢?直接 go 解决了就完事了,太冗余了。
把 go 程序当 cgi 应用,让 apache 去调用呢?
go 编译一个 c 的 shared library,然后写一个链接到这个库的 php extension
消息队列 数据库 redis
果断上 rpc
rpc 库。
显示进度写成 http 服务,nginx 或者 php 做一次代理
针对Golang(Go语言)与PHP的最佳交互方式,以下是一些专业建议:
- API接口通信:PHP作为前端语言,与用户交互并调用Go语言编写的后端API接口进行数据交互。这种方式灵活且易于扩展,适用于大多数Web应用场景。PHP可以使用cURL库或Guzzle等HTTP客户端库来调用Go API。
- 共享数据库:PHP和Go可以共享同一个数据库进行数据交互。这种方式简化了数据同步问题,但需注意数据库访问的并发控制和事务管理。PHP和Go都有丰富的数据库访问库,如PDO、MySQLi和GORM等。
- 消息队列:对于需要处理大量异步任务的场景,消息队列是一个有效的选择。PHP将任务发送到消息队列中,Go监听并处理这些任务。RabbitMQ、Kafka等消息队列系统均支持PHP和Go的客户端库。
- RPC框架:RPC(远程过程调用)框架如gRPC、Thrift等,可以实现跨语言的函数调用和远程过程调用。这种方式适用于需要高效、低延迟的跨语言通信场景。
综上所述,选择哪种交互方式取决于具体的应用场景和需求。在实际应用中,可以根据项目特点、团队技术栈和性能要求来权衡选择。