以PHP方式使用C++的Web开发环境

Web development environment with C++ in PHP manner

本文关键字:Web 开发 环境 C++ PHP 方式使      更新时间:2023-10-16

我已经在谷歌上搜索过了,是的,是的。C++不适合web!

我正在寻找一种用C++编写web应用程序的方法,就像PHP处理它一样——根据请求编译。

我打赌它会通过CGI完成,但问题是,我如何在例如Apache中设置这样的环境?

让我们假设,我的文档根具有index.cpp和老的Hello World示例:

#include <iostream>
using namespace std;
void main()
{
    cout << "Hello World!" << endl;
}

localhost/index.cpp的请求最终会将Hello World打印到我的浏览器中。

这只是为了开发,生产应用程序会被预先编译,然后才能提供(但这是未来的问题)。

附言:我从来没有写过C++,我愿意学习。愿意通过网络开发学习。

所以您正在寻找一个C++解释器。。。嗯,我不确定有没有。C++是一种经过编译的语言,这意味着你开发源代码,然后通过一个工具(编译器)运行它来生成本地二进制文件。这些可以被操作系统调用,并且速度尽可能快——因为一切都变成了计算机已经可以理解的东西。使用PHP,"变成计算机可以理解的东西"必须在计算机执行代码时发生!

当然,这意味着你在执行过程中没有改变源代码的奢侈,你必须停止,修改,然后重新开始。对于基于web的系统,除非您将状态存储在C++应用程序中,否则情况不会太糟。如果它真的是无状态的,那么您可以终止正在运行的进程,重新编译它,然后重新启动它。

不过,对于高级用法,您可以在交互式调试器中运行该程序。其中一些允许您修改代码并自动重新编译,使其看起来就像运行PHP代码一样。困难在于将调试器设置为与系统的其他部分一起运行(即调试器启动进程的频率,而通常Apache启动进程)

所以。。。做你想做的事。我会采用调试器的方法。将apache设置为运行程序的单个实例,而不是启动新实例。这将需要CGI或FastCGI设置。完成后,您可以通过在调试器中启动进程来手动启动进程。在调用应用程序的位置设置断点。将服务编写为多线程的,这样只需要一个正在运行的实例,而不会为每个请求启动一个新实例。我建议使用FastCGI并将您的应用程序配置为FastCgiExternalServer类型。

通常,尽管您希望在Apache中保留PHP代码,并使用它来调用基于C++的服务。这为您提供了更多的安全性(就好像web服务器被黑客入侵一样,攻击者最多只能调用C++服务的入口点,他们不能完全访问所有内容,很多地方都采用这种架构)和可扩展性(因为服务可以托管在一个或多个应用程序服务器上)。

我建议在ServerFault上查询Apache配置建议。