PHP与Golang之间的通信

I would like to start to use golang. To do that, I gave me a little project. I already have a website (classical php, mysql, css, html).

I would like to export some traitment to a golang script. (like calculate Pi.).

Actually, when I click on a button, a PHP algo do the job. Is there a best practice to use php and golang.

I was thinking about socket. (server golang, client php) or a database. But it will be result with a lot a SQL requests.

I hope you will help me,

Thanks

The best solution is to use the socket. Any other "patterns" would use a socket. For example you can use to interact ZMQ processes. ZMQ will give you access to the low level sockets at a high (socket on steroids).

Using the database - will not be considered as an asynchronous solution, but it can also be used.... It should be based on the available resources and tasks.

ZMQ PHP binding

ZMQ Go Binding

P.S. I had an experience combining php + Erlang. So my solution - universally.

A few lines of GoLang can trivially create an HTTP server. Using the Echo framework on-top of this will make for a fast way to interact with a long-standing process.

From there, PHP can send it requests.

As you port your application, the web clients can hit the server directly, using CORS. Ex: www.site.com getting content from golang.site.com

Optional: The GoLang webserver has a CGI package (FastCGI offered by others) that you could use to run PHP code from GoLang code, but the chore of converting your Apache configuration may make this impractical.

Either way you'll have an idiomatic server producing lightning-fast responses.

You can start building a simple REST server in Golang, which return JSON as a general format as follows: http://www.alexedwards.net/blog/golang-response-snippets

In the PHP side, say APIs request, you can use cURL to send a simple request to call REST server as follows: http://codular.com/curl-with-php

As you can a simple REST APIs in Golang that return some JSON data, it allows you to use almost of the modern programming languages to communicate and make interoperability with your REST APIs such as Javascript, Java, Python, Ruby and so on.