Php 如何优化服务器以使用许多正则表达式操作

Php 如何优化服务器以使用许多正则表达式操作,php,apache,Php,Apache,由于CPU使用率高,我的服务器运行缓慢。我已经找到了CPU使用率高的原因,有两个原因: 数据集上的大量regexp函数 STRPO、substr操作 在数组中循环进行基本的数学运算 所有这些操作都需要在我的网站上进行一次搜索。如果访问者进行搜索,CPU将达到100%。对于这些操作,我无能为力,因为它们是必需的 我的问题是: 鉴于上述操作几乎是所有CPU使用的原因,配置配置文件(如httpd.conf或php.ini)的最佳方法是什么 鉴于上述操作是导致几乎所有CPU使用的原因,升级服务器的

由于CPU使用率高,我的服务器运行缓慢。我已经找到了CPU使用率高的原因,有两个原因:

  • 数据集上的大量regexp函数
  • STRPO、substr操作
  • 在数组中循环进行基本的数学运算
所有这些操作都需要在我的网站上进行一次搜索。如果访问者进行搜索,CPU将达到100%。对于这些操作,我无能为力,因为它们是必需的

我的问题是:

  • 鉴于上述操作几乎是所有CPU使用的原因,配置配置文件(如httpd.conf或php.ini)的最佳方法是什么
  • 鉴于上述操作是导致几乎所有CPU使用的原因,升级服务器的最佳方法是什么
更新1:

操作的一个示例是:

preg_match_all('/ValuesBreakdown_\d+_[A-Z]+_out.push\(([\d.,]+)/',$content,$matches);

这个单一操作不会占用大量CPU,但这类操作的数量很大。

当遇到性能问题时,请始终确保问题的原因是您认为的

我的建议是首先使用XDebug+webgrind,并确认原因

然后,您可能能够更改代码的逻辑流以提高性能:例如,您是否将数据集循环多次而不是仅循环一次?您确定无法改进算法吗?等等


每次都要用XDebug向自己证明您确实提高了性能。

您能详细说明一种情况吗?您可以通过使用包含php文件的操作码缓存和结果缓存来减少负载,也是。所有这些操作都需要在我的网站上进行一次搜索。我一次从大量网站上搜集了大量数据,所有数据都必须经过分析和检查。添加更多有关耗时操作的信息。确定导致CPU负载的原因-隔离导致问题的正则表达式。找到一些单独的正则表达式和数学运算,您可以验证它们是否是导致问题的原因(自行运行它们,看看它们是否产生了不可忽略的CPU负载部分)。然后把它们贴在这里(如果需要的话,以模糊的形式)。其中一些人可能有助于优化特定流程,但我不认为有任何通用方法可以根据您目前提供的信息使事情变得更好。