我们具有Concrete5.7与堆栈一个奇怪的问题:我们已经开始收集了不少栈(目前64)和我们的服务器已经开始抛出服务器错误(PHP Fatal error: Maximum execution time of 30 seconds exceeded in /example/path/to/website/concrete/blocks/html/controller.php on line 89
)编辑页面时,特别是通过XHR获取/ccm/system/panels/add?cID=2468&tab=stacks
时。Concrete5.7栈 - PHP最大的执行时间超过
我暂时解决了这个由php.ini
从30%增加到max_execution_time
到60,但是这似乎是一个贫穷的解决方法,我将不得不增加更多的内容,以筹码后再次碰撞。
除了只是盲目增加max_execution_time
之外,还有什么我能做的吗?
追踪到blocks/html/controller.php:89
,即在xml_highlight()
函数中;具体而言,这条线(see the code in context here):
$s = preg_replace(
"#<(.*)(\[)(.*)(\])>#isU",
"<\\1<font color=\"#800080\">\\2\\3\\4</font>>",
$s
);
这似乎是一个相当简单的正则表达式来我;我错过了什么吗?
它也发生,我认为我可以从xml_highlight()
删除所有preg_replace
调用和查询性能,但我不确定我会这样做会失去什么功能。
作为参考,从dashboard/system/environment/info
:
# concrete5 Version
Core Version - 5.7.5.2
Version Installed - 5.7.5.2
Database Version - 20150731000000
什么是“#<(。*)(\ [)(。*)(\])> #isU”'应该匹配?您可以尝试将其更改为'“#<([^ [] *)(\ [)([^]] *)(])> #i”'看看是否有帮助。所有的正则表达式都是基于'''的,当你处理标记的文本时这是不好的。 –
它总是在一个正则表达式的作者将追加'U'选项,每一个正则表达式,就好像它是一个神奇的蓝色药丸,解决所有的性能问题是个坏兆头。 –
@WiktorStribiżew我认为's'选项可能是必要的,但匹配的代码是/可以是带有(用户输入的)换行符的HTML。 –