首頁 >後端開發 >PHP問題 >php如何呼叫c方法

php如何呼叫c方法

coldplay.xixi
coldplay.xixi原創
2020-08-03 10:20:025098瀏覽

php呼叫c方法的方法:先寫一個【test.c】原始檔;然後儲存後,執行編譯;接著php處理程式【add.php】程式碼;最後在【add.php】中就是透過passthru直接執行命令列中的命令來完成呼叫即可。

php如何呼叫c方法

php呼叫c方法的方法:

php呼叫c/c 有許多方式,最常用的是透過tcp或http去調用,透過發送請求去調用c/c 編寫的cgi/fastcgi來實現,另外php還有一種直接執行外部應用程式的方式,這種方式會影響到系統安全,容易被攻擊者利用,所以使用的時候要謹慎處理好用戶輸入

  php執行外部二進位命令的函數有好幾個,例如exec和passthru,並且passthru函數能執行命令並且可以返回外部命令的輸出,所以本次就使用passthru來實現,php呼叫c/c 函數的目的就是處理複雜計算時提高計算效率,從而提高整體的系統性能,下面是一個簡單的測試案例

首先編寫一個test .c原始文件,處理很簡單就是對兩個整數進行加法運算,程式碼如下:

#include<stdio.h>
int main(int argc, char **argv) {
    //printf("参数个数:%d\n", argc-1);
    int a = atol(argv[1]);
    int b = atol(argv[2]);
    int sum = a + b;
    printf("%d\n", sum);
    return 0;
}

儲存後,執行編譯: gcc test.c -o test 編譯後會在目前目錄下產生test可執行文件,透過 ./test 5 12 可以執行檔看到輸出17

#然後寫表單和php程式碼,為了簡單,目前目錄就是web存取根目錄,實際上要把C/C 專案放在web存取目錄之外,在php中使用絕對路徑呼叫

#表單form.html程式碼:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>php调用c/c++案例</title>
</head>
<body>
    <form method="post" action="add.php">
        <div>
            请输入两个整数:
            <input type="text" name="a" />
            +
            <input type="text" name="b" />
            <input type="submit" value="相加" />
        </div>
    </form>
</body>
</html>

php處理程序add.php程式碼:

<?php
header("Content-Type:text/html; charset=utf-8");
if(isset($_POST[&#39;a&#39;]) && isset($_POST[&#39;b&#39;]) && !empty($_POST[&#39;a&#39;]) && !empty($_POST[&#39;b&#39;])) {
    $command = &#39;./test &#39;.$_POST[&#39;a&#39;].&#39; &#39;.$_POST[&#39;b&#39;];
    $result = passthru($command);
    print_r($result);
} else {
    echo "输入不能为空!";
}
?>

可以看出,在add.php中就是透過passthru直接執行命令列中的命令來完成呼叫

測試結果:

php如何呼叫c方法

php如何呼叫c方法

#相關學習推薦:php圖文教學

以上是php如何呼叫c方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn