尝试了nginx+php,在windows上用cgi模式存在请求阻塞问题(当前请求未完成前,新的请求会被阻塞)。最终使用apache+php配置成功。
软件版本
Apache 2.4.34
php-5.6.37-Win32-VC11-x64
CI 2.2.6
Apache配置
- 下载apache 32位VC11版本,与php保持一致。下载地址:http://httpd.apache.org/download.cgi#apache24
- 修改httpd.conf配置:
-
执行“httpd.exe -k install”,讲apache安装为windows服务#增加php解析 AddType application/x-httpd-php .php .html .htm LoadModule php5_module "D:\software\php-5.6.37-Win32-VC11-x64\php5apache2_4.dll" PHPIniDir "D:\software\php-5.6.37-Win32-VC11-x64" #php代码目录 <VirtualHost *:80> ServerName vding.localhost DocumentRoot D:\PhpstormProjects\vding\public DirectoryIndex index.php #主页,这里也是启动CI的入口 <Directory "D:\PhpstormProjects\vding\public"> Options -Indexes +FollowSymlinks AllowOverride All Require all granted </Directory> </VirtualHost> ServerName localhost:80
- 在php代码根目录创建.htaccess文件,增加以下rewrite规则:
RewriteEngine on RewriteCond $1 !^(index\.php|static|robots\.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
碰到的问题
- nginx+php方式尝试了很多种方式避免阻塞,都无效。在linux可以设置maxchildren增加并发数,但在windows上并没有列斯配置。
- 原来的代码用mysql_connect连接数据库,配置完如上环境后,竟然无法连接数据库。换成mysqli_connect后工作正常。