为什么php脚本在顺序上比在单独的部分中运行得慢?

为什么php脚本在顺序上比在单独的部分中运行得慢?,php,performance,apc,web-crawler,curl-multi,Php,Performance,Apc,Web Crawler,Curl Multi,我遇到了一个奇怪的问题,希望有人能帮我解决。我用PHP编写了一个多URL爬行器,可以从网站上刮取关键字,我遇到了一个奇怪的性能问题 当我运行spider来抓取站点的前几个级别时,大约需要2分钟才能完成,这对我来说并不是什么大问题。奇怪的是,当我试图在同一个脚本中运行一个又一个spider时,运行时由于某种原因膨胀。例如,当我希望它在7个站点上按顺序运行时,我希望它需要14分钟(每个站点2分钟),但实际上它需要45分钟才能运行。我分别对每个站点进行了测试,实际上每个站点的平均测试时间为2分钟或2分

我遇到了一个奇怪的问题,希望有人能帮我解决。我用PHP编写了一个多URL爬行器,可以从网站上刮取关键字,我遇到了一个奇怪的性能问题

当我运行spider来抓取站点的前几个级别时,大约需要2分钟才能完成,这对我来说并不是什么大问题。奇怪的是,当我试图在同一个脚本中运行一个又一个spider时,运行时由于某种原因膨胀。例如,当我希望它在7个站点上按顺序运行时,我希望它需要14分钟(每个站点2分钟),但实际上它需要45分钟才能运行。我分别对每个站点进行了测试,实际上每个站点的平均测试时间为2分钟或2分钟以下,但按顺序运行几乎需要一个小时

我认为这可能与内存问题有关,所以我实现了APC缓存来在脚本运行时存储关键字数据。问题是,当我查看我的任务管理器(我在Windows7上运行XAMPP)时,Apache服务器似乎没有比46K/23%的CPU高出多少,而我的compy上的其他一切都运行得很好


我仔细研究了一下,确保尽快关闭所有适当的处理程序,取消设置/缓存大型变量,但我仍然不明白为什么一个站点接一个站点的运行时间比预期的长3倍。我将尝试使用pcntl将爬行器分成不同的进程(我将尝试安装linux的thumb drive),但我想知道是否有人知道是什么让我的应用程序的性能受到影响。谢谢

没有任何代码就很难说…@Mansfield:是的,我很抱歉,不幸的是代码是为一个商业项目编写的,所以除了一般性之外,我不能在这里发布任何东西。我只是想知道PHP性能是否有一些我可能不知道的一般方面。@ZeroWing,没有部分代码,很难回答。如果您不能从业务应用程序发布代码,为什么不复制一个小样本应用程序并发布到这里呢?我将添加一些基准测试代码,看看是否是由于通过网络获取数据(更有可能)或处理下载的数据造成的。APC缓存是否提高了很多速度?@bumperbox:非常感谢您提出的对代码进行基准测试的建议,我以前从未从事过大容量数据项目,也从未想过应该尝试一下。在对代码的各个方面进行基准测试时,我发现问题似乎部分与后续脚本运行时内存不足有关,随后我使用的各种低效数组函数和用于上载所有收集数据的SQL插入错误方法使问题变得复杂(尽管记忆丧失仍然是一个问题,但其中大部分都极大地解决了经济放缓的问题)。