0

正規表現に基づく独自の単純なテンプレート システムがあります。ここにあります

これは、mysql の結果から配列を渡すだけで、定義済みのテンプレート ファイルから html コードを返すように設計されています。

したがって、配列を渡すと

array(3) { 
[0]=> array(5) {["DATE"]=> string(11) "21.04. 2013" ["NICK"]=> string(7) "Nashren"} 
[1]=> array(5) {["DATE"]=> string(11) "22.10. 2013" ["NICK"]=> string(13) "Superman"} 
[2]=> array(5) {["DATE"]=> string(11) "10.07. 2013" ["NICK"]=> string(13) "Superman"}

テンプレートがあります

<td class="forum-last"> <strong>{{DATE}}</strong> <br> {{NICK}} </td>

期待通りに返ってくる

<td class="forum-last"> <strong>21.04. 2013</strong> <br> Nashren </td>
<td class="forum-last"> <strong>22.10. 2013</strong> <br> Superman </td>
<td class="forum-last"> <strong>10.07. 2013</strong> <br> Superman </td>

しかし!この特定の例では、実行に文字通り YEARS (5 秒程度) かかります。

表示しようとしているSQLクエリは次のとおりです。

SELECT forum_kategorie.NAME,forum_kategorie.DESC,DATE,uzivatele.NICK,USR
FROM `zpravy`
LEFT JOIN forum_kategorie ON CONCAT( NAME,  "forum" ) = URL
LEFT JOIN uzivatele on USR = uzivatele.ID

WHERE DATE = (SELECT MAX(DATE)
               FROM zpravy
               WHERE CONCAT( NAME,  "forum" ) = URL)
GROUP BY NAME

上記のスクリプトの使用法は次のとおりです。

include("php/themizer.php"); 



    $theme = new Themizer("forum-item",$res);

    $list = array("data" => $theme->getResult());

    $final = new Themizer("forum-table",$list);

     echo $final->getResult();

それが何であるかを考えましたか?

4

3 に答える 3

0

操作 (mysql クエリとテンプレートの処理) を個別に測定しましたか?

于 2013-10-30T12:58:53.297 に答える
0

RegEx (または SearchReplace) 関数の使用は非常に遅いです。すべてのリクエストは、テンプレートを解析する必要があり、置換を行う必要があることを示しています。

そのような構造には、キャッシュできないなどの多くの欠点があります。

smarty.netを見てみましょう。これは優れた php テンプレート エンジンです。使いやすい。

Smarty を使いたくない場合は、プレーンな PHP を使用することもできます。テンプレートエンジンでもあります。

HTML を別の PHP ファイルに入れるだけです。短いタグ<?=$var>を使用してアウトすることができます。もちろん、長いタグも使用できます。さらに、ループを含むすべての php 関数を利用できます。コマンドでサブテンプレートを使用しますinclude

プログラム ロジックと表示ロジックを混在させないようにしてください。

于 2013-10-30T13:07:39.920 に答える