系统规格: 运行Windows Server 2008 R2 SP1的VPS 64位双核2.39GHz VCPU 2GB RAM Parallels Plesk for Windows 10.4.4 IIS 7.5 PHP 5.2.17 MySQL 5.1.56
我有一个PHP脚本来遍历静态文件,并在MySQL中将每行作为一行导入。如果文件一次分成几千行,这可以正常工作,但这会产生大量的手动操作。
整个文件包含大约160,000行要导入。脚本当前通过mysql_connect / mysql_select_db连接到数据库,使用mysql_query处理循环,并在循环结束时断开连接。但是,在大约55秒 - 1分35秒之间的任何时间点,客户端浏览器返回500内部服务器错误页面,其中不包含有用的诊断信息。
我试过增加MySQL,PHP,IIS的最大连接时间,甚至是winsock的最大用户套接字都无济于事。
我为每个插入查询尝试对MySQL执行连接/断开连接,但这导致数千个连接到服务器然后卡在“TIME_WAIT”状态,并返回“无法连接到服务器”错误,大概是由于插座不足。我也尝试了mysql和mysqli扩展。
我查看了IIS和MySQL可以找到的所有日志,但看不到有助于找到原因的任何日志。
最后两次尝试分别插入33,979和78,173行。
有人可以提供任何帮助吗?
感谢。
**更新**
这必须是IIS问题。我已经将脚本转换为通过命令行PHP运行,它处理整个文件没有问题。
答案 0 :(得分:0)
听起来像是IIS问题。我发现大多数都驻留在Web.config文件中。我会看一下,确保设置正确,语法正确。很多时候我忘了关闭我的标签并收到500错误。
答案 1 :(得分:0)
使用LOAD DATA INFILE
而不是尝试通过PHP执行INSERTs
。它会运行得更快,从而避免500错误。
甚至不考虑使用mysql_ *接口。切换到mysqli或PDO。它已被弃用并在最新的PHP版本中消失。