繁体   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