我們具有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。 –