解决方案 »

  1.   

    参考 http://www.baidu.com/s?wd=nginx%E5%B9%B6%E5%8F%91%E6%95%B0&ie=utf-8
      

  2.   

    我的nginx.conf
    配置是
    但是 我这个时候浏览器打开 index.html这样的静态页面并不会受影响的?
    只是php解析时,会很久没有返回,除非上个正在解析的php解析完成了,才可以,
    这应该跟nginx无关,我找了很多资料,不清楚怎么让php-cgi可以同时解析二个以上的php?谢谢.#widnow 不支持 user指令
    #user  nobody;
    #nginx 线程,自动控制
    worker_processes  auto;
    error_log  logs/error.log;
    pid        logs/nginx.pid;
    #打开文件最多个数
    worker_rlimit_nofile 8192;
    events {
        worker_connections  1024;
    }
    http {
    include    mime.types;
    include    fastcgi.conf;
    include scgi_params;
    index    index.html index.php;
        default_type  application/octet-stream;
    log_format   main '$remote_addr - $remote_user [$time_local]  $status '
    '"$request" $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';
    access_log   logs/access.log  main;

    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_max_body_size 50m; sendfile on;
    tcp_nopush     on; keepalive_timeout 60; tcp_nodelay on;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 256k;


    gzip on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types       text/plain application/x-javascript text/css application/xml;
    gzip_vary on;
    gzip_proxied        expired no-cache no-store private auth;
    gzip_disable        "MSIE [1-6]\."; #limit_zone  crawler  $binary_remote_addr  10m; server_tokens off;
    #log format
    log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" $http_x_forwarded_for';



    include vhost/*.conf;
    }
      

  3.   

    我不用 nginx,所以没法告诉你正确的该如何写
    如果你认为你写的是正确的话,那么就该考虑你的 php 程序里是否是 session 的影响了
      

  4.   

    php.ini配置q.qq域名的配置[code=text]server {
    listen       80;
    server_name  q.qq;
    access_log ./../log/q.qq.access.txt;
    root d:/web/www;

    location ~ \.php$ {
    fastcgi_pass   127.0.0.1:9000;
    }
    }fastcgi.conf
    fastcgi_index  index.php;
    fastcgi_intercept_errors on;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_param  QUERY_STRING       $query_string;
    fastcgi_param  REQUEST_METHOD     $request_method;
    fastcgi_param  CONTENT_TYPE       $content_type;
    fastcgi_param  CONTENT_LENGTH     $content_length;fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
    fastcgi_param  REQUEST_URI        $request_uri;
    fastcgi_param  DOCUMENT_URI       $document_uri;
    fastcgi_param  DOCUMENT_ROOT      $document_root;
    fastcgi_param  SERVER_PROTOCOL    $server_protocol;
    fastcgi_param  HTTPS              $https if_not_empty;fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
    fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;fastcgi_param  REMOTE_ADDR        $remote_addr;
    fastcgi_param  REMOTE_PORT        $remote_port;
    fastcgi_param  SERVER_ADDR        $server_addr;
    fastcgi_param  SERVER_PORT        $server_port;
    fastcgi_param  SERVER_NAME        $server_name;# PHP only, required if PHP was built with --enable-force-cgi-redirect
    fastcgi_param  REDIRECT_STATUS    200;fcgi_params配置
    scgi_param  REQUEST_METHOD     $request_method;
    scgi_param  REQUEST_URI        $request_uri;
    scgi_param  QUERY_STRING       $query_string;
    scgi_param  CONTENT_TYPE       $content_type;scgi_param  DOCUMENT_URI       $document_uri;
    scgi_param  DOCUMENT_ROOT      $document_root;
    #cgi 线程数?
    scgi_param  SCGI               10;
    scgi_param  SERVER_PROTOCOL    $server_protocol;
    scgi_param  HTTPS              $https if_not_empty;scgi_param  REMOTE_ADDR        $remote_addr;
    scgi_param  REMOTE_PORT        $remote_port;
    scgi_param  SERVER_PORT        $server_port;
    scgi_param  SERVER_NAME        $server_name;php.ini
    [PHP]
    engine = On
    short_open_tag = Off
    asp_tags = Off
    precision = 14
    output_buffering = 4096
    zlib.output_compression = Off
    implicit_flush = Off
    unserialize_callback_func =
    serialize_precision = 17
    disable_functions = error_reporting
    disable_classes =
    zend.enable_gc = On
    expose_php = On
    max_execution_time = 60
    max_input_time = 60
    memory_limit = 128M
    error_reporting = E_ALL
    display_errors = off
    display_startup_errors = On
    log_errors = on
    log_errors_max_len = 512
    ignore_repeated_errors = on
    ignore_repeated_source = Off
    report_memleaks = On
    track_errors = Off
    html_errors = Off
    error_prepend_string = ""
    error_append_string = "\n"
    error_log = "./../log/php.error.log.txt"
    variables_order = "GPCS"
    request_order = "GP"
    register_argc_argv = Off
    auto_globals_jit = On
    post_max_size = 8M
    auto_prepend_file =
    auto_append_file =
    default_mimetype = "text/html";
    extension_dir = "./../php/ext/"
    enable_dl = Off
    cgi.force_redirect = 1
    cgi.fix_pathinfo=0
    fastcgi.logging = 0
    file_uploads = On
    upload_max_filesize = 10M
    max_file_uploads = 20
    allow_url_fopen = On
    allow_url_include = Off
    default_socket_timeout = 60
    extension=php_curl.dll
    extension=php_gd2.dll
    extension=php_imap.dll
    extension=php_mbstring.dll
    extension=php_mysql.dll
    extension=php_mysqli.dll
    extension=php_openssl.dll
    extension=php_pdo_mysql.dll
    [CLI Server]
    cli_server.color = On
    [Date]
    date.timezone = "Asia/Shanghai"
    [filter]
    [iconv]
    [intl]
    [sqlite]
    [sqlite3]
    [Pcre][Pdo]
    [Pdo_mysql]
    pdo_mysql.cache_size = 2000
    pdo_mysql.default_socket=
    [Phar]
    [mail function]
    SMTP = localhost
    smtp_port = 25
    mail.add_x_header = On[SQL]
    sql.safe_mode = Off
    [ODBC]
    odbc.allow_persistent = On
    odbc.check_persistent = On
    odbc.max_persistent = -1
    odbc.max_links = -1
    odbc.defaultlrl = 4096
    odbc.defaultbinmode = 1
    [Interbase]
    ibase.allow_persistent = 1
    ibase.max_persistent = -1
    ibase.max_links = -1
    ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
    ibase.dateformat = "%Y-%m-%d"
    ibase.timeformat = "%H:%M:%S"
    [MySQL]
    mysql.allow_local_infile = On
    mysql.allow_persistent = On
    mysql.cache_size = 2000
    mysql.max_persistent = -1
    mysql.max_links = -1
    mysql.default_port =
    mysql.default_socket =
    mysql.default_host =
    mysql.default_user =
    mysql.default_password =
    mysql.connect_timeout = 60
    mysql.trace_mode = Off
    [MySQLi]
    mysqli.max_persistent = -1
    mysqli.allow_persistent = On
    mysqli.max_links = -1
    mysqli.cache_size = 2000
    mysqli.default_port = 3306
    mysqli.default_socket =
    mysqli.default_host =
    mysqli.default_user =
    mysqli.default_pw =
    mysqli.reconnect = Off
    [mysqlnd]
    mysqlnd.collect_statistics = On
    mysqlnd.collect_memory_statistics = Off
    [OCI8][PostgreSQL]
    pgsql.allow_persistent = On
    pgsql.auto_reset_persistent = Off
    pgsql.max_persistent = -1
    pgsql.max_links = -1
    pgsql.ignore_notice = 0
    pgsql.log_notice = 0
    [Sybase-CT]
    sybct.allow_persistent = On
    sybct.max_persistent = -1
    sybct.max_links = -1
    sybct.min_server_severity = 10
    sybct.min_client_severity = 10
    [bcmath]
    bcmath.scale = 0
    [browscap]
    [Session]
    session.save_handler = files
    session.use_cookies = 1
    session.use_only_cookies = 1
    session.name = PHPSESSID
    session.auto_start = 0
    session.cookie_lifetime = 0
    session.cookie_path = /
    session.cookie_domain =
    session.cookie_httponly =
    session.serialize_handler = 
    phpsession.gc_probability = 1
    session.gc_divisor = 1000
    session.gc_maxlifetime = 1440
    session.bug_compat_42 = Off
    session.bug_compat_warn = Off
    session.referer_check =
    session.cache_limiter = nocache
    session.cache_expire = 180
    session.use_trans_sid = 0
    session.hash_function = 0
    session.hash_bits_per_character = 5
    url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
    [MSSQL]
    mssql.allow_persistent = On
    mssql.max_persistent = -1
    mssql.max_links = -1
    mssql.min_error_severity = 10
    mssql.min_message_severity = 10
    mssql.compatability_mode = Off
    mssql.secure_connection = Off[Assertion]
    [COM]
    [mbstring]
    [gd]
    [exif]
    [Tidy]
    tidy.clean_output = Off
    [soap]
    soap.wsdl_cache_enabled=1
    soap.wsdl_cache_dir="/tmp"
    soap.wsdl_cache_ttl=86400
    soap.wsdl_cache_limit = 5
    [sysvshm]
    [ldap]
    ldap.max_links = -1
    [mcrypt]
    [dba][/code]
      

  5.   

    session影响?不明白什么意思我现在想不到是怎么回事,不懂怎么解决.其它人都没有遇到过这种问题吗?百度或是其它地方都没找到有相关资料.我的目录结构是d:/web/php,nginx,www这样结构
    bat的写法是
    set bat=%~f0
    set batDir=%~dp0
    CD "%batDir%"
    set log=%batDir%log\::启动nginx与php-cgi
    :callLabelc
    set called=1
    start "fcgi服务" /MIN  /D "%batDir%php"  php-cgi.exe -b 127.0.0.1:9000 -c "%batDir%php/php.ini"
    start "nginx服务" /MIN  /D "%batDir%nginx" nginx.exe
    :eof_callLabelc
    goto :EOF:callLabelcc
    set called=1
    start "nginx服务" /MIN  /D "%batDir%nginx" nginx.exe -s stop
    ping 127.0.0.1 -n 3 >nul
    start "停止php-cgi服务" /MIN  /D "%batDir%php" taskkill /F /IM php-cgi.exe > nul
    start "停止php-cgi服务" /MIN  /D "%batDir%php" taskkill /F /IM nginx.exe > nul
    :eof_callLabelcc
    goto :EOF从我个人的看法感觉就是:127.0.0.1:9000端口只允许一个送入动作,解析,返回,完成了,再接受下个循环.但是按照我的理解,它应该是主要有送入动作就应该生成一个线程或是子进程来处理 接受,解析,返回这样的循环再退出或是待下个连接.
    这样的生成应该受最大数限制即可.
    但是我现在却搞不懂那里可以可以配置让php-cgi可以一接受到解析请求就生成新线程或是进程来完成,直到达到最大数才应该出现阻塞的现象.而现在却是从始到终只有一个线程在处理.启动ngihx+php时
    C:\Users\Administrator>netstat -na |findstr /c:"9000"
      TCP    127.0.0.1:9000         0.0.0.0:0              LISTENING打开图片的二个php时C:\Users\Administrator>netstat -na |findstr /c:"9000"
      TCP    127.0.0.1:9000         0.0.0.0:0              LISTENING
      TCP    127.0.0.1:9000         127.0.0.1:63631        ESTABLISHED
      TCP    127.0.0.1:9000         127.0.0.1:63634        ESTABLISHED
      TCP    127.0.0.1:63631        127.0.0.1:9000         ESTABLISHED
      TCP    127.0.0.1:63634        127.0.0.1:9000         ESTABLISHED
    解析过程中
    C:\Users\Administrator>netstat -na |findstr /c:"9000"
      TCP    127.0.0.1:9000         0.0.0.0:0              LISTENING
      TCP    127.0.0.1:9000         127.0.0.1:63631        ESTABLISHED
      TCP    127.0.0.1:9000         127.0.0.1:63634        ESTABLISHED
      TCP    127.0.0.1:63631        127.0.0.1:9000         ESTABLISHED
      TCP    127.0.0.1:63634        127.0.0.1:9000         ESTABLISHED
    二个php都返回结果了.
    C:\Users\Administrator>netstat -na |findstr /c:"9000"
      TCP    127.0.0.1:9000         0.0.0.0:0              LISTENING
      TCP    127.0.0.1:9000         127.0.0.1:63631        TIME_WAIT
      TCP    127.0.0.1:9000         127.0.0.1:63634        TIME_WAIT呵呵,有点郁闷.都不懂从那里入手了.
    那位知道怎么回事,请解答一下.
    谢谢
      

  6.   

    session影响?不明白什么意思我现在想不到是怎么回事,不懂怎么解决.其它人都没有遇到过这种问题吗?百度或是其它地方都没找到有相关资料.我的目录结构是d:/web/php,nginx,www这样结构
    bat的写法是
    set bat=%~f0
    set batDir=%~dp0
    CD "%batDir%"
    set log=%batDir%log\::启动nginx与php-cgi
    :callLabelc
    set called=1
    start "fcgi服务" /MIN  /D "%batDir%php"  php-cgi.exe -b 127.0.0.1:9000 -c "%batDir%php/php.ini"
    start "nginx服务" /MIN  /D "%batDir%nginx" nginx.exe
    :eof_callLabelc
    goto :EOF:callLabelcc
    set called=1
    start "nginx服务" /MIN  /D "%batDir%nginx" nginx.exe -s stop
    ping 127.0.0.1 -n 3 >nul
    start "停止php-cgi服务" /MIN  /D "%batDir%php" taskkill /F /IM php-cgi.exe > nul
    start "停止php-cgi服务" /MIN  /D "%batDir%php" taskkill /F /IM nginx.exe > nul
    :eof_callLabelcc
    goto :EOF从我个人的看法感觉就是:127.0.0.1:9000端口只允许一个送入动作,解析,返回,完成了,再接受下个循环.但是按照我的理解,它应该是主要有送入动作就应该生成一个线程或是子进程来处理 接受,解析,返回这样的循环再退出或是待下个连接.
    这样的生成应该受最大数限制即可.
    但是我现在却搞不懂那里可以可以配置让php-cgi可以一接受到解析请求就生成新线程或是进程来完成,直到达到最大数才应该出现阻塞的现象.而现在却是从始到终只有一个线程在处理.启动ngihx+php时
    C:\Users\Administrator>netstat -na |findstr /c:"9000"
      TCP    127.0.0.1:9000         0.0.0.0:0              LISTENING打开图片的二个php时C:\Users\Administrator>netstat -na |findstr /c:"9000"
      TCP    127.0.0.1:9000         0.0.0.0:0              LISTENING
      TCP    127.0.0.1:9000         127.0.0.1:63631        ESTABLISHED
      TCP    127.0.0.1:9000         127.0.0.1:63634        ESTABLISHED
      TCP    127.0.0.1:63631        127.0.0.1:9000         ESTABLISHED
      TCP    127.0.0.1:63634        127.0.0.1:9000         ESTABLISHED
    解析过程中
    C:\Users\Administrator>netstat -na |findstr /c:"9000"
      TCP    127.0.0.1:9000         0.0.0.0:0              LISTENING
      TCP    127.0.0.1:9000         127.0.0.1:63631        ESTABLISHED
      TCP    127.0.0.1:9000         127.0.0.1:63634        ESTABLISHED
      TCP    127.0.0.1:63631        127.0.0.1:9000         ESTABLISHED
      TCP    127.0.0.1:63634        127.0.0.1:9000         ESTABLISHED
    二个php都返回结果了.
    C:\Users\Administrator>netstat -na |findstr /c:"9000"
      TCP    127.0.0.1:9000         0.0.0.0:0              LISTENING
      TCP    127.0.0.1:9000         127.0.0.1:63631        TIME_WAIT
      TCP    127.0.0.1:9000         127.0.0.1:63634        TIME_WAIT呵呵,有点郁闷.都不懂从那里入手了.
    那位知道怎么回事,请解答一下.
    谢谢