通过PHP执行linux命令

时间:2018-06-11 22:44:54

标签: php shell command

我正在使用名为Freeling的语言分析工具。对于语言识别,我在Linux控制台中使用analyzer命令:

analyzer -f /usr/share/freeling/config/ident.cfg --outlv ident --fidn /usr/share/freeling/common/lang_ident/ident.dat

当我执行此命令时,它等待文本条目(句子)并确定它们所使用的语言。 当我用西班牙语写一行文字时:" la casa es azul"然后按回车键返回ES,这意味着它是用西班牙语写的。如果我写'#34;房子是蓝色的"它返回EN,用于英语。要中断其执行,请按 Ctrl + C

当我在Linux控制台中执行此命令时,第一句话需要一些时间来响应,其他时间会快速响应。

我使用此代码执行此php命令,但返回结果需要几秒钟时间:

<?php
$cmd = "analyzer -f /usr/share/freeling/config/ident.cfg --outlv ident --fidn /usr/share/freeling/common/lang_ident/ident.dat";

$descriptorspec = array(
    0 => array("pipe", "r"),
    1 => array("pipe", "w"),
    2 => array("pipe", "w"),
);

$process = proc_open($cmd, $descriptorspec, $pipes);

$oracion[0]="we are the word";
$oracion[1]="somos el mundo";

if (is_resource($process)) {

    fwrite($pipes[0], $oracion[0]);
    fwrite($pipes[0], $oracion[1]);
    fclose($pipes[0]);

    while($pdf_content = fgets($pipes[1]))
    {
    echo $pdf_content . "<br>";
    }
    fclose($pipes[1]);
    $return_value = proc_close($process);

}
?>

如何改善响应时间?

1 个答案:

答案 0 :(得分:0)

运行程序时,需要加载所有语言的统计模型。这就是第一句话需要更长时间的原因。

FreeLing提供的“分析器”程序只是一个演示。使用该库的最佳方法是编写自己的程序,如FreLing教程中所示https://talp-upc.gitbooks.io/freeling-tutorial/content/

如果你想从PHP调用FreeLing,没有API,所以你应该采用“服务器模式”,其中加载一次freeling,然后它将接受请求。

您可以在FreeLing用户手册https://talp-upc.gitbooks.io/freeling-4-1-user-manual/content/

中找到更多信息