4

我总是将 Apache 用于我的PHP项目。但是现在,我想离开它,开始使用以下选项之一:

React

PHP 的内置 Web 服务器

哪个性能更好?毫无疑问,什么是最好的?你的推荐是哪一个?

4

2 回答 2

3

好的,所以有一个很酷的东西叫做 nginx。不要停止阅读

很多人没有意识到的一件事是 nginx 可以非常快速且非常高效地执行代理请求。

你可能会问,什么是代理请求?!那么好。

从远程用户到 nginx 的代理请求被接收。Nginx 将接收到该请求,然后将请求转发给另一个侦听器。这个监听器可以是一个 unix 域套接字、Apache、网络上的另一个 nginx 服务器,甚至是内部的 PHP 内置服务器。

就个人而言,听起来您对 PHP-FPM 了解不多,它是一种基于套接字的 PHP 解析器。早在 Apache 的旧时代,人们曾经使用这个叫做mod_phpApache 会使用共享库手动解析请求的东西。这太可怕了。

如果您因为这个原因打算离开,我建议您升级并通过使用 PHP-FPM 和 Nginx 来提高您的性能。Rackspace 对此有一篇很好的文章:http ://www.rackspace.com/knowledge_center/article/installing-nginx-and-php-fpm-setup-for-nginx

片段:

示例 nginx 配置:

server {
    server_name  www.DOMAINNAME;
    rewrite ^(.*) http://DOMAINNAME$1 permanent;
}

server {
        listen 80;
        server_name DOMAINNAME;
                root   /var/www/DOMAINNAME/htdocs;
                index index.php;
        include /etc/nginx/security;

        # Logging --
        access_log  /var/log/nginx/DOMAINNAME.access.log;
        error_log  /var/log/nginx/DOMAINNAME.error.log notice;

        # serve static files directly
        location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$ {
            access_log        off;
            expires           max;
        }

        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass unix:/var/run/php5-fpm/DOMAINNAME.socket;
                fastcgi_index index.php;
                include /etc/nginx/fastcgi_params;
        }
}

location ~ \.php$路由会将所有 PHP 请求转发到您的 php-fpm 实例。当然,更新您的 nginx 配置以匹配您的套接字名称。

如果您想将它与内置 PHP 服务器一起使用,您可以这样做(假设它在 localhost:8000 上运行):

location ~ \.php$ {
    fastcgi_pass http://localhost:8000;
}

这样,您就可以两全其美。(但请记住,内部 PHP 服务器没有经过优化或加固。我建议使用 PHP-FPM。

于 2013-12-17T16:50:49.550 回答
2

PHP 的内置网络服务器仅用于开发和测试。这是一个简单的服务器,从未打算处理现实世界的负载。

一个事件驱动的服务器只会增加一堆不必要的复杂性,除非你真的添加了它添加的功能。

它们都不适用于任何严肃或通用的服务器。除非您有具体的理由使用不同的堆栈,否则您应该坚持使用 Apache。它稳定、安全、可配置并且做得非常好。

于 2013-12-17T16:26:15.823 回答