-
Type: Task
-
Resolution: Fixed
-
Priority: Major
-
Affects Version/s: S2Dao.PHP5-1.1.2, S2Dao.PHP5-1.2.0-beta1
-
Component/s: S2Dao.PHP5
-
None
-
Environment:S2Dao.PHP5-1.1.2
$sql = preg_replace('/(.+);$/s', '\1', trim($sql));
が、ボトルネックになっています。xdebugをいれて計測したところ、このpreg_replaceで3000文字ほどのSQLの処理
に7秒かかっていました。
最後の;があればすぐに処理が帰るのですが、セミコロンが存在しない文字列に
対してこの正規表現を適用するとものすごく重くなります。正規表現の内部処理
には疎いのでなぜ遅くなるかはわからないです。$sql = preg_replace('/;$/s', '', trim($sql));
とすると、問題ない速度になりましたが、処理的にはあっていますでしょうか。
see - http://ml.seasar.org/archives/seasar-php/2007-May/000129.html