2012-04-23 121 views
0

我的客户端在共享服务器上拥有自己的虚拟主机帐户,并且他们的帐户已被暂停,因为“导致关键服务器过载”。我已经看了代码,它是功能上编程的PHP,它使用了大量的数据库查询。我浏览过,其中大部分都是“SELECT *”。此数据库具有10行或更多行和1000多条记录的表。Php资源释放

我想知道是否所有的sql查询都没有被释放,但我不确定何时“脚本执行”完成。它是在函数完成执行之后,还是整个页面已被渲染?它可能是表(结构或记录)的大小?有没有人有任何其他想法?

+2

由于磁盘,cpu或内存过载了吗? – 2012-04-23 16:32:52

+1

托管公司应该告诉你他们的意思是“造成严重的服务器过载”...... – Ing 2012-04-23 16:40:53

回答

2

这实际上取决于你客户的包装类型,自定义编码的脚本类型或像wordpress这样的标准脚本。

曹景伟关键服务器超载 - 可能是千头万绪:

高内存使用情况:脚本没有使用单模式或其指定的海量数据到阵列,变量或包括大量的的文件。代码气味基本不好设计&。

高CPU:疯狂长脚本,在每个页面视图之间进行复杂计算的长迭代循环或无限循环(套接字)等。

高网络流量:屏幕Scappers像爬虫这就是要求从其他网站大量的流量或基本上是抓住外部内容了很多,或者像一个洪流跟踪脚本。

磁盘占用率过高:不断轰击服务器IO堆栈(写入和读取磁盘不断)

有很多的数据库查询的脚本可以分为:磁盘占用率过高(读)+高内存使用情况(迭代的结果)+高速CPU(与结果做的东西))

你应该使用工具来表现本地配置文件中的脚本:xDebugPQP,并找出什么真正发生的事情。

如果你的客户认真对待那里的网站,那么他们应该投资于VPS。

0

确保您正确关闭了SQL连接。如果您一次执行了大量查询,则可能会更有效地将连接保持在较长时间。或者,如果您在每次查询后都没有关闭它们,可以尝试这样做。我必须说10个表不是很多,它会让我感到惊讶,这是超载共享服务器。

+0

mysql_connect连接在脚本执行结束时关闭.. – 2012-04-23 17:00:31

+0

@劳伦斯Cherone每个脚本有多少个查询?如果他们有很多这可能是好的。如果不尝试在每次查询后关闭连接,看看是否有帮助。让未使用的连接长时间打开将占用主机上的大量资源。 – JeremyS 2012-04-23 17:02:09

+0

@LawrenceCherone [检查出来](http:// stackoverflow。com/questions/5474646/is-it-okay-to-always-leave-a-database-connection-open) – JeremyS 2012-04-23 17:04:54