大型php脚本减慢了应用程序的其余部分。。。。为什么?

大型php脚本减慢了应用程序的其余部分。。。。为什么?,php,Php,我有一个大型的php web scraping脚本,它会在运行时将结果记录到mysql数据库中。该脚本通常一次运行5到10分钟 问题是,当此脚本运行时,应用程序上的其他页面将不会加载 该脚本位于一个具有大量RAM的专用服务器上,因此我尝试增加MYSQL和PHP允许的内存使用量。还增加了允许的最大连接数。所有这些都没有帮助 有人知道我还能尝试什么吗?嗯,“减速”和“不加载”之间有很大区别 请尝试以下操作: 构建一个静态html站点,并在执行大脚本期间检查它是否加载良好 构建一个php站点,在执行大

我有一个大型的php web scraping脚本,它会在运行时将结果记录到mysql数据库中。该脚本通常一次运行5到10分钟

问题是,当此脚本运行时,应用程序上的其他页面将不会加载

该脚本位于一个具有大量RAM的专用服务器上,因此我尝试增加MYSQL和PHP允许的内存使用量。还增加了允许的最大连接数。所有这些都没有帮助


有人知道我还能尝试什么吗?

嗯,“减速”和“不加载”之间有很大区别

请尝试以下操作:

  • 构建一个静态html站点,并在执行大脚本期间检查它是否加载良好
  • 构建一个php站点,在执行大脚本期间不连接DB(只是回显一些东西)
  • 构建一个连接到数据库的小型php站点(只需从表中选择一些内容)
  • 如果1或2不能正常工作,那么您的问题与web服务器或服务器资源有关。如果3不能正常工作,mysql服务器可能会出现资源问题


    如果一切正常,请检查刮片脚本。它是否锁定主应用程序所需的任何表?

    可能是会话中的问题。在开始“大脚本”之前,请尝试使用session_write_close()。

    您的网络连接是否饱和?您的CPU是否已耗尽?脚本是否使用与应用程序其余部分相同的表?数据库上的InnoDB或MyISAM引擎?行级锁vs.表级锁。巨大的差异。-我不确定我的CPU是否已耗尽,我该如何找到它?从命令行运行
    top
    。您的最后一个问题在评论中得到了回答,因为引擎是InnoDB,这意味着引擎只执行行级锁,而不是MyISAM中出现的表级锁。谢谢@maxim,这是一件非常有用的事情,需要理解——在从ajax调用运行多个php脚本时,这对我来说非常重要。他们在排队,现在他们在同时运行。