我想在C中创建支持
PHP的可能性最轻的HTTP服务器,如果它会产生巨大的差异,可能会使用FastCGI.
我不确定如何实现PHP支持.它是否只是通过.PHP文件的路径调用PHP.exe并读取输出? PHP中的header()之类的东西怎么样?那些服务器如何处理?
另一个问题是,为每个请求使用单独的线程是否理想?我不指望负载很重,但我对这个设计方面并不是100%肯定…
我对C和C还很陌生,这是一次学习经历.
解决方法
首先让我说如果目标是为PHP页面提供服务的轻量级HTTP服务器,那么这已经完成了.看看
nginx.
至于学习经历,你选择的东西实际上相当艰难.
多线程在最好的时候很难.在C/C++(真的有手动内存分配的任何东西),这是一个数量级更难.
除此之外还有网络通信.有一些怪癖需要处理,不同版本的HTTP(现在大部分都是非问题),各种HTTP标头要处理等等.
解决此问题的最直观的解决方案是拥有一个侦听端口的进程.当它收到请求时,它会生成一个进程,如果需要,它可以执行到PHP进程.
然而,这不会扩展.第一个(显而易见的)优化是使用线程而不是进程和某种形式的线程间通信.虽然这有所帮助,但它仍然只能扩展到目前为止.
超越它,你正在寻找异常套接字处理,这是相当低的水平.
然而,所有这些都是相当大的项目.
您是否有任何特殊原因在C/C++中这样做?或者您正在学习其中一种或两种语言的任何特殊原因?这些语言肯定有它们的位置,但它们越来越成为小众语言.托管(垃圾收集)语言/平台几乎完全接管. Joel认为垃圾收集是关于过去20年中编程中唯一的巨大生产力增长,我倾向于同意.