php - 从 PHP 运行 Go 脚本

标签 php go

我有一个带有 PHP 文件的主机,它获取请求,从中获取一个字符串并必须提供给 Go (GoLang) 脚本。我该怎么做?

包主 我的 GO 脚本:

package main

import (
"log"
"fmt"
"io/ioutil"
"strings"
ivona "github.com/jpadilla/ivona-go"
)

func main() {
    client := ivona.New("GDNAICTDMLSLU5426OAA", "2qUFTF8ZF9wqy7xoGBY+YXLEu+M2Qqalf/pSrd9m")
    text, err := ioutil.ReadFile("/Users/Igralino/Desktop/text.txt")
    if err != nil {
        log.Fatal(err)
    }

    arrayOfParagraphs := strings.Split(string(text), "\n\n")
    i := 0
    for _,paragraph := range arrayOfParagraphs {
        paragraph = strings.TrimSpace(paragraph)
        if (len(paragraph) < 1) { // against empty lines
            continue
        }
        log.Printf("%v\n", paragraph)
        options := ivona.NewSpeechOptions(paragraph)
        options.Voice.Language = "ru-RU"
        options.Voice.Name = "Maxim"
        options.Voice.Gender = "Male"
        options.OutputFormat.Codec = "MP3"
        r, err := client.CreateSpeech(options)
        if err != nil {
            log.Fatal(err)
        }

        i++
        file := fmt.Sprintf("/Users/Igralino/Desktop/tts%04d.MP3", i) // files like 0001.ogg
        ioutil.WriteFile(file, r.Audio, 0644)
    }
}

最佳答案

Go 不是脚本语言!这是一个编译的。

编译型语言

A compiled language is a programming language whose implementations are typically compilers (translators that generate machine code from source code), and not interpreters (step-by-step executors of source code, where no pre-runtime translation takes place).

所以“脚本”一词的使用是非常错误的!

如何从其他程序与Go程序通信。

您必须首先构建并安装您的程序。如果您已经准备好并配置了 Go 环境,这很容易:

$go install github.com/user/hello

因为它已安装到操作系统,所以您可以从命令行调用它。

$hello

如果您的程序需要参数,请使用 flag包来声明它。

$hello -name <value>

显然,您可以使用 system 函数或任何可能的方式从 PHP 调用它(我对 PHP 一无所知)。

另一种方法是将您的 Go 程序设计为守护进程,并通过端口等直接与其通信。您的 Go 程序必须持续运行并监听端口。不错answer关于 Go 程序的守护进程。

关于php - 从 PHP 运行 Go 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41385156/

相关文章:

php - 减少链接 (URL) 大小

php - 使用 phpexcel 设置一系列单元格的样式

php - Paypal Payflow专业图书馆

go - 在 Golang 中将字符串放在两个 % 之间

api - 如何使用 go 登录以使用你的谷歌日历?

go - 如何创建只播放一次的 gif 动画

php - Mysql工作正常但显示语法错误

PHP - 如何命名数组

go - 事情发生的顺序是什么?

sockets - 如何使用 Golang 编写原始 TCP 数据包(使用 gopacket)并通过原始套接字发送