Concrete5.7のStackで奇妙な問題が発生しました:現在、かなりの数のスタックを集め始めており(現在64)、サーバーでサーバーエラー(PHP Fatal error: Maximum execution time of 30 seconds exceeded in /example/path/to/website/concrete/blocks/html/controller.php on line 89
)ページを編集するとき、特に/ccm/system/panels/add?cID=2468&tab=stacks
をXHRで取得するときConcrete5.7 Stacks - PHP最大実行時間を超えました
をphp.ini
に増やして一時的に解決しましたが、これはStacksにコンテンツを追加した後にもう一度バンプする必要があります。
盲目的に増加する以外に何かできることはありますか?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
);
は、これは私にはかなり簡単な正規表現のように思えます。私は何かを欠いている?
preg_replace
のコールをすべてxml_highlight()
から削除してパフォーマンスを確認することもできますが、どのような機能を失うかはわかりません。参考のため
、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マッチしたコードは(ユーザが入力した)改行でHTMLにすることができるので、 's'オプションが必要かもしれないと思います。 –