Php资源释放

时间:2012-04-23 16:29:31

标签: php mysql hosting

我的客户在共享服务器上拥有自己的网络托管帐户,并且他们的帐户已被暂停,原因是“导致关键服务器过载”。我查看了代码,它是功能编程的php,它使用了大量的数据库查询。我看了看,其中大部分都是“SELECT *”。该数据库具有包含10行或更多行以及1000多条记录的表。

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

2 个答案:

答案 0 :(得分:2)

这实际上取决于客户端所使用的软件包类型,自定义编码的脚本类型或wordpress等标准脚本。

导致关键服务器超载 - 可能是众多事情:

高内存使用率:脚本不使用单例模型或将大量数据分配给数组,变量或包含大量文件。基本上糟糕的设计&代码味道。

高CPU:过长的脚本,长迭代循环,中间有复杂的计算或每个页面视图的无限循环(套接字)等。

高网络流量:屏幕抓取器就像一个爬虫,它要求来自其他网站的大量流量,或者基本上是抓取外部内容ALOT的脚本,或类似于torrent跟踪器的东西。

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

包含大量数据库查询的脚本可能属于:高磁盘使用率(读取)+高内存使用量(迭代结果)+高CPU(执行结果)

您应该使用工具在本地对脚本进行性能分析:xDebugPQP,并了解最新情况。

如果您的客户对该网站非常认真,那么他们应该投资VPS。

答案 1 :(得分:0)

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