标签: php

优化NGinx + PHP-FPM

我目前正在我的服务器中为我的网站运行 Nginx + PHP-FPM。今天,当我运行 Apache “ab” 工具时,我注意到响应时间很糟糕,平均 5595 毫秒和最大 17415 毫秒的响应时间。

我的 Nginx 配置文件:

worker_processes  4;
error_log  /var/log/nginx/error.log info;
events {
 worker_connections 1024;
 use epoll;
 multi_accept on;
}
http {
 server_name_in_redirect off;
 server_names_hash_max_size 10240;
 server_names_hash_bucket_size 1024;
 include    mime.types;
 default_type  application/octet-stream;
index index.html index.htm index.php;
 server_tokens off;
 sendfile on;
 tcp_nopush on;
 tcp_nodelay on;
 keepalive_timeout  15;
 gzip on;
 gzip_vary on;
 gzip_disable "MSIE [1-6]\.";
 gzip_proxied any;
 gzip_http_version 1.1;
 gzip_min_length  1400;
 gzip_comp_level  9;
 gzip_buffers  16 8k;
 gzip_types    text/plain text/xml text/css application/x-javascript application/xml image/png image/x-icon …
Run Code Online (Sandbox Code Playgroud)

php nginx php-fpm

3
推荐指数
1
解决办法
2777
查看次数

通过 php 将视频文件上传到 IIS 7 失败

我正在尝试让我的网站上传视频和图片。由于我制作了更多上传图片的网站,因此在这方面没有问题,但是当我出于某种原因尝试上传视频时,在$_FILES包含上传图像的数组中找不到它。

我已经在谷歌上搜索并找到了关于 php.ini 文件和包含最大上传大小的 IIS 7 的内容。这些都设置为 1024M:

在 php.ini 中:

max_execution_time = 1000
max_input_time = 1000
memory_limit = 256M
upload_max_filesize = 1024M
post_max_size = 1024M
Run Code Online (Sandbox Code Playgroud)

在 IIS 7 中:

maxAllowedContentLength = 1073741824
maxRequestLength = 1073741824
Run Code Online (Sandbox Code Playgroud)

经过一些测试,看起来很小的视频文件确实可以工作(192KB),但稍大的文件在 $_FILES 数组(11MB)中没有显示任何内容,但真正大的文件(80MB)给出了一个错误:The request filtering module is configured to deny a request that exceeds the request content length.. 问题是我已将其设置maxAllowedContentLength为 1GB。所以这不应该发生?!这张图片如下:

图片

在此处输入图片说明

任何帮助或建议都非常感谢!

php iis-7 upload

3
推荐指数
1
解决办法
3321
查看次数

仅使用 MyISAM 的 8GB MySQL 服务器的最佳 my.cnf 配置

我正在准备一个基于 Drupal 6.x 的大型安装,并设置了一个具有 8GB RAM 的专用 MySQL 服务器。Drupal 6.x 仅使用 MyISAM 引擎,将有大约 500 个并发用户通过两个 Web 节点使用该站点。

这是 mysql 调优入门分析的转储,我是一大早拿的,因为我不确定这是否应该在高使用率期间运行:http : //pastie.org/3279741。

我在 mysql 配置方面不是很有经验,所以我正在寻找帮助来确定 my.cnf 文件的正确配置,以便我能够承受负载量。我非常迫切地需要这个,所以不要寻找理解的资源(至少现在不是!)。

提前致谢!

mysql php performance myisam drupal

3
推荐指数
1
解决办法
2万
查看次数

Ubuntu Linode 上 Nginx 的 PHP 错误(通过 FastCGI)

我使用以下指南在 Linode 的 Ubuntu 10.04 服务器上设置了 LEMP(Linux、Nginx、MySQL 和 PHP):http : //library.linode.com/lemp-guides/ubuntu-10.04-lucid

从本质上讲,我上传了我的PHP脚本到一个目录(/srv/www/mysite.com/public_html)中指定/etc/nginx/sites-available/mysite.com.conf。

在浏览器中访问该站点给我一个 500 内部服务器错误。我假设 PHP 代码有一些错误,这很好。但是,我完全不知道如何调试它,因为有几个组件:PHP、FastCGI 和 Nginx。

我的问题是,如何让这些错误显示在浏览器中,或者至少显示在日志中,以便我可以弄清楚发生了什么?我不确定是否需要告诉 Nginx 在某处记录错误,或者 FastCGI,或者编辑 php.ini。

我对服务器有完全的 root 访问权限来解决这个问题。但是,我不确定如何重新启动 PHP/FastCGI(虽然我知道如何重新启动 Nginx),因为我遵循的指南使用了某种守护进程。

非常感谢你能给我的任何帮助。

linux ubuntu php nginx fastcgi

3
推荐指数
1
解决办法
1万
查看次数

我的 htaccess mod_rewrite 的 nginx 等于什么?

以前,我在我的 CodeIgniter 网站上使用运行 Apache 的 linode VPS。今天我安装了 nginx,我的网站登陆页面即将到来,但其他使用 htaccess 重写 URL 的页面却没有出现。这是我的htaccess,

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1
Run Code Online (Sandbox Code Playgroud)

我的 htaccess 的 nginx 等价物是什么?我还需要在我的 codeigniter 配置和应用程序中进行任何更改吗??..

对于 codeigniter 配置中的 URI 协议,我正在使用,

$config['uri_protocol'] = 'PATH_INFO';
Run Code Online (Sandbox Code Playgroud)

这可以与 nginx 一起使用吗??..

php nginx .htaccess codeigniter apache-2.2

3
推荐指数
1
解决办法
2万
查看次数

PHP 进程一次运行一个,始终占用 100% 的内核

我们有七个用 PHP 编写的网站,它们运行在带有 IIS 7.5 的 Windows 2008 服务器上。他们现在都很慢。

当我查看任务管理器时,我看到大约 10 个 php-cgi.exe 进程,它们都占用了 0% 的 CPU,除了一个占用 25% 的 CPU。它是一个四核服务器,因此它占用了一个内核的 100%。

如果我观察几秒钟,占用 25% 的进程将变为 0%,而另一个 php-cgi.exe 进程将跳转到 25%。所以所有的 php-cgi.exe 进程都只是排队,等待一个内核,每个进程都尽可能使用 100% 的处理器。

这 7 个站点中的每一个都位于 IIS 中自己的应用程序池中,我们使用的是 FastCGI。PHP 版本是 5.3。

有任何想法吗?谢谢!

编辑:这是我们的 FastCGI 设置:

    <fastCgi>
        <application fullPath="C:\Program Files (x86)\PHP\v5.3\php-cgi.exe" monitorChangesTo="C:\Program Files (x86)\PHP\v5.3\php.ini" activityTimeout="600" requestTimeout="600" instanceMaxRequests="10000">
            <environmentVariables>
                <environmentVariable name="PHP_FCGI_MAX_REQUESTS" value="10000" />
                <environmentVariable name="PHPRC" value="C:\Program Files (x86)\PHP\v5.3" />
            </environmentVariables>
        </application>
    </fastCgi>
Run Code Online (Sandbox Code Playgroud)

编辑#2:我们部分地想通了。由于权限问题,PHP 从不垃圾收集会话,因此有数百万个会话文件。

但我仍然想知道为什么它只使用一个内核。这些网站现在要快得多,但我们还没有解决这个问题。有人知道吗?

php windows-server-2008 iis-7.5 cpu-usage

3
推荐指数
1
解决办法
8102
查看次数

IIS HTTP 错误 403.18 - ASP.NET MVC 3(安装了 PHP 5.3?)

在 IIS 服务器上设置 ASP.NET MVC3 应用程序时出现此错误。

HTTP Error 403.18 - Forbidden

The specified request cannot be processed in the application 
pool that is configured for this resource on the Web server.
Run Code Online (Sandbox Code Playgroud)

然而奇怪的事情是从下面来的;详细错误信息:

Module IIS Web Core

Notification

BeginRequest

Handler
PHP53_via_FastCGI

Error Code
0x00000000

Requested URL
http://localhost:80/index.php?q=OCOM/Account/LogOn

Physical Path
C:\inetpub\wwwroot\index.php

Logon Method
Not yet determined

Logon User
Not yet determined
Run Code Online (Sandbox Code Playgroud)

是否存在某种“错误配置”,即 PHP 引擎以某种方式将 ASP.NET MVC3 请求解释为 php 请求?坦率地说,我真的不明白出了什么问题,因为我的本地机器在类似的设置下运行良好(使用 Microsoft Web PI 安装了 PHP 等)

php iis-7.5 asp.net-mvc

3
推荐指数
1
解决办法
5198
查看次数

在较低优先级或限制 CPU 下使用 php 运行 bash 脚本

我有一个运行一组 php 脚本的 bash 脚本。当它运行时,它需要一个小时并将 CPU 固定在 95-99%。这会导致我们的灯堆栈(主要是 apache 进程)出现问题,并且我们在同一服务器上的网站开始吐出超时或 500 错误。

我怎样才能:

  • 以低优先级运行 bash 脚本和所有相关任务(也调用 PostgreSQL db 的 php 脚本),以便 web 服务器的 apache、php 和 db 任务始终优先,或者
  • 将脚本和相关任务的 CPU 使用率限制为,例如 25% CPU

我不确定哪个是更好的解决方案。

php bash cpu-usage

3
推荐指数
1
解决办法
1420
查看次数

CentOS - PHP - 使用自定义 ./configure 参数安装 Yum

我已经在我的开发服务器上成功配置和编译了 php,并且运行良好,但是在与系统管理员伙伴交谈后,他告知不建议将最新版本的自定义编译用于生产(甚至开发)系统。他注意到他们自定义配置和编译 PHP 5.3.6 的情况,只是发现低级 Postgres 驱动程序存在一些问题,因此他们不得不恢复到 5.3.3。

所以我正在考虑回到 yum 来安装 PHP,但是我有几个自定义配置设置,并且想知道是否可以通过或配置通过 YUM 编译 PHP 的方式?

我当前的配置行:

Configure Command =>  './configure'  '--with-libdir=lib64' '--prefix=/usr/local/_custom/app/php' '--with-config-file-path=/usr/local/_custom/app/php/etc' '--with-config-file-scan-dir=/usr/local/_custom/app/php/etc/modules' '--disable-all' '--with-apxs2=/usr/sbin/apxs' '--with-curl=/usr/sbin/curl' '--with-gd' '--with-iconv' '--with-jpeg-dir=/usr/lib' '--with-mcrypt=/usr/bin' '--with-pcre-regex' '--with-pdo-mysql=mysqlnd' '--with-png-dir=/usr/lib' '--with-zlib' '--enable-ctype' '--enable-dom' '--enable-hash' '--enable-json' '--enable-libxml' '--enable-mbstring' '--enable-mbregex' '--enable-pdo' '--enable-session' '--enable-simplexml' '--enable-xml' '--enable-xmlreader' '--enable-xmlwriter'
Run Code Online (Sandbox Code Playgroud)

php centos yum

3
推荐指数
1
解决办法
9935
查看次数

两台服务器之间的文件传输,无FTP,无网络

我希望自动将给定目录中的文件从一台服务器传输到另一台服务器。他们都在同一个网络上,可以互相ping通,甚至可以从一个到另一个ssh。

目前我的方法是 SSH 到服务器 A,将文件拉下来,SSH 到服务器 B 并上传它们......

我已经在这里看到了一篇文章,但我想问你们什么是从服务器到服务器传输文件、嵌入到 cron-job 或自动化的最佳方式。

这是我的限制:

  • 两个服务器都不能有任何公共 Web 服务(没有端口 80,没有 apache,没有任何悲伤的脸)

  • 两个服务器都不能使用任何类型的 FTP 连接(尽管我们可以 ssh)

预先感谢大家的帮助

php bash ftp perl

3
推荐指数
2
解决办法
2362
查看次数