需要有关在PHP中扩展的指导

时间:2011-06-11 04:23:52

标签: php regex

我有一个类使用自然语言处理的正则表达式,处理大量数据的时间花费看起来并不乐观。

我正在考虑将其扩大规模,并行工作,我还没有任何经验。

我希望有人可以解释我想要进入的内容,在PHP中这样做的优点和缺点。此外,如果你可以提供一般的缩放或PHP更好的缩放的良好资源。感谢。

编辑:

foreach ($sentences as $sentence) { 
  // for each sentence check if a keyword or any of its synonyms
  // appear together with any sentiment applicable to the keyword
  foreach ($this->keywords as $keyword => $synonyms) {              
    foreach ($this->sentiments[$keyword] as $sentiment => $weight) {
      $match = $this->check($sentence, $synonyms, $sentiment);
    }
  }
}

// regex part of the code
$keywords = implode('|', $keywords);
$pattern = "/(\b$sentiment\b(.*|\s)\b($keywords)\b|\b($keywords)\b(.*|\s)\b$sentiment\b)/i";

preg_match_all($pattern, $sentence, $matches);

2 个答案:

答案 0 :(得分:0)

对于那种类型的应用程序,PHP可能不是一个很好的选择。它是一种相当高级的语言,它带来了开销,可能会减慢任何重要的处理速度。

现在,如果您想坚持使用PHP,可以使用某种作业管理应用程序来完成它。可能已经存在一些你可以使用的应用程序,如gearman,甚至hadoop。您将数据分解为块并将其提供给应用程序。使用这些工具,您可以在一台或多台服务器上扩展处理。

如果您使用Amazon Web服务,您可能需要查看Elastic Map Reduce并查看它是否符合您的需求。

答案 1 :(得分:0)

Apache Hadoop Map Reduce作业非常适合这类工作。从一开始就是一点努力,但我认为你会发现它是一个很好的解决方案。使用Hadoop,您可以轻松地在1个节点或30个节点上运行计算。