duan35557593 2016-12-29 18:19
浏览 152

从PHP运行Go脚本

I have a hosting with a PHP file which gets the request, take a string from it and have to give to Go (GoLang) script. How could I do it?

package main My GO script:

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), "

")
    i := 0
    for _,paragraph := range arrayOfParagraphs {
        paragraph = strings.TrimSpace(paragraph)
        if (len(paragraph) < 1) { // against empty lines
            continue
        }
        log.Printf("%v
", 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)
    }
}
  • 写回答

1条回答 默认 最新

  • doubu1950 2016-12-29 20:16
    关注

    Go is not a scripting language! It is a compiled one.

    Compiled languages

    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).

    So usage of "script" term is dramatically wrong!

    How to communicate with Go program from other programs.

    You must build and install your program first. This is easy if you already prepared and configured your Go environment:

    $go install github.com/user/hello
    

    Than you can invoke it from command line since it is installed to OS.

    $hello
    

    If your program should expect arguments use flag package to declare it.

    $hello -name <value>
    

    Obviously you can call it from PHP with system function or whatever is possible (I don't know nothing about PHP).

    Other way is to design your Go program as a daemon and communicate with it directly through a port for example. Your Go program must run continuously and listen for a port. A good answer about daemonization of Go programs.

    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?