簡體   English   中英

PHP 僅適用於 Apache,還是可以與我自己的 C++ 服務器一起使用?

[英]Does PHP only work with Apache, or can I make it work with my own c ++ server?

PHP 僅適用於 Apache,還是可以與我自己的 C++ 服務器一起使用?

例如,我可以從我的 c++ 程序向 php 發送請求,以便 php 運行“file.php”,然后將結果返回給我的 c++ 程序?

PHP 是一種解釋型語言。 除了通過Apache mod_php使用之外,它還支持 CGI 和 FastCGI 調用設置。 所以你可以:

  1. 在CGI模式下調用它的解釋器來執行一個PHP腳本文件; 或者
  2. 在后台運行php-fpm 服務器,然后調用它來運行任何帶有 FastCGI 協議的 PHP 文件。

我相信 C++ 中有多個庫可用於進行CGIFastCGI調用。 例如, darrengarvey/cgi可以同時完成。

沒有庫的 CGI

如果您選擇 CGI 路徑,您甚至可以在沒有庫的情況下進行。 正確安裝 php-cgi 后,您可以像這樣進行常規的 CGI 調用:

echo "test=1" | \
REQUEST_METHOD=POST \
CONTENT_TYPE=application/x-www-form-urlencoded \
CONTENT_LENGTH=6 \
GATEWAY_INTERFACE=CGI/1.1 \
SCRIPT_FILENAME=/full/path/to/file.php \
REDIRECT_STATUS=true \
REQUEST_URI=/hello/world \
php-cgi

如您所見,CGI 調用是具有一些預定義環境變量(又名Request Meta-Variables )的常規系統調用。 HTTP 請求正文提供給 STDIN。 完整的 HTTP 響應(包括標頭)將通過 STDOUT 發送。

CGI和FastCGI的區別

由於每次 CGI 調用都是系統調用,因此每次調用時都需要時間將 PHP 庫/模塊加載到內存中。 FastCGI指定了一種通過線路協議發送/接收 STDIN、STDOUT、STDERR 的方式。 php-fpm 會加載內存和池連接以加快調用速度。 因此得名快速CGI。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM