php呼叫c方法的方法:先寫一個【test.c】原始檔;然後儲存後,執行編譯;接著php處理程式【add.php】程式碼;最後在【add.php】中就是透過passthru直接執行命令列中的命令來完成呼叫即可。
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['a']) && isset($_POST['b']) && !empty($_POST['a']) && !empty($_POST['b'])) { $command = './test '.$_POST['a'].' '.$_POST['b']; $result = passthru($command); print_r($result); } else { echo "输入不能为空!"; } ?>
可以看出,在add.php中就是透過passthru
直接執行命令列中的命令來完成呼叫
測試結果:
#相關學習推薦:php圖文教學
以上是php如何呼叫c方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!