トップページ⇒php
983コメント287KB

【Smarty】PHPのテンプレートエンジン【Flexy】

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん2005/06/15(水) 10:35:52ID:???
---
PHPのテンプレートエンジンを語るスレです。

Smarty:本家(英語)
http://smarty.php.net/
Smarty:日本語マニュアルとか
http://sunset.freespace.jp/smarty/

pear の HTML_Template たち
http://pear.php.net/package/HTML_Template_Flexy
http://pear.php.net/package/HTML_Template_IT
http://pear.php.net/package/HTML_Template_Sigma
http://pear.php.net/package/HTML_Template_Xipe
http://pear.php.net/package/HTML_Template_PHPLIB

patTemplate
http://www.php-tools.de/
http://www.php-j.com/tutorial/php/template.php

前スレ(現在dat落ち)【PHP】Smarty【Template】
http://pc8.2ch.net/test/read.cgi/php/1047225437/
0877nobodyさん2007/03/21(水) 09:15:54ID:???
>>876
使ってるけど機能のほんの一部しか活用してないwww
0878nobodyさん2007/03/21(水) 18:15:41ID:???
>>876
はてなで見たけど、オープンソースを改造するのが
一番多いって…
0879nobodyさん2007/03/21(水) 18:15:49ID:???
>>876
自在にSmartyを使えるようになる頃には、自分で template 作れるようになる。
で、その頃になると、Smartyに粗が見え出すんだ。

まぁ、という訳で自作テンプレート使ってる。
0880nobodyさん2007/03/21(水) 20:52:08ID:NvhysGYm
>>879
どう考えても、Smartyの方が優れてそうだけどなw
0881nobodyさん2007/03/22(木) 12:42:30ID:???
>>880
まぁ、その通りだ。

だが、smartyはでかいし機能がありすぎる問題がある。
下手に機能があると、テンプレートに頼りすぎて、どこまでがviewか?とかが崩れるんだ。

シンプルな方が楽だし早いんだよ。
0882nobodyさん2007/03/22(木) 13:21:33ID:???
Smartyの余計な文法と微妙な制限を入れるよりも、
PHPでやったほうがわかりやすい。
0883nobodyさん2007/03/22(木) 14:34:43ID:jPF/zj00
データつかませて吐くだけだからな。 
0884nobodyさん2007/03/22(木) 15:12:30ID:???
プラグイン機能とかキャッシュとか使ってないの?
0885nobodyさん2007/03/22(木) 15:14:49ID:???
>>884
実稼働した後なら
一番使ってるのは
キャッシュかもしんないwww
0886nobodyさん2007/03/22(木) 17:40:02ID:9EeeeROG
Smartyのキャッシュほどありがたいものはないだろ。
0887nobodyさん2007/03/22(木) 18:13:08ID:???
キャッシュ機能ってどういうの?
0888nobodyさん2007/03/22(木) 23:44:06ID:???
>>882
はげどう
PHPよりSmartyのほうが使いづらいし貧弱
0889nobodyさん2007/03/22(木) 23:53:41ID:???
>>887
DBに接続してデータとって来るような場合
キャッシュがあればDBいかないで表示したり。
テンプレート内のカウンタとか一部のプラグイン部分だけはキャッシュじゃなくて動的にしたい
とかも出来るから結構便利よ。
0890nobodyさん2007/03/23(金) 01:25:37ID:wrH2dhw4
INSERTプラグインは好きだよ。
0891nobodyさん2007/03/23(金) 10:29:24ID:???
>>889
それってどういう仕組みなの?セッションやクッキー使って
DB内のカウント値を保存してるんじゃないよね?
0892nobodyさん2007/03/23(金) 13:40:45ID:???
>>891
クエリする回数を減らせるって意味だろ
0893nobodyさん2007/03/23(金) 14:57:53ID:wrH2dhw4
DBの接続コストを減らせるのだ。
0894nobodyさん2007/03/23(金) 16:54:26ID:???
>>891
簡単に言うと、ある一定時間内ならキャッシュを出力してDBアクセスを抑制できる仕組み。
http://sky.freespace.jp/smarty/SmartyManual_2-6-7J_html/caching.html

例を挙げれば
・10分ごとに最新情報がでればいい
・100view/分
・クエリ発行数 7/view
というコンテンツがあった場合

キャッシュなし→700query/分
キャッシュあり→0.7query/分

となりDB負荷が大幅に下がる。
0895nobodyさん2007/03/24(土) 21:37:49ID:???
この場合、キャッシュのキーになるのはURLなの?
もしそうなら、ページ全体のキャッシュはできても部分キャッシュはできないということ?
0896nobodyさん2007/03/24(土) 22:03:13ID:???
>>895
キャッシュのキーはテンプレートのパスとdisplay関数やfetch関数の第2引数として指定できるキャッシュID
マニュアル嫁と。
0897nobodyさん2007/03/25(日) 01:25:25ID:???
Smarty使っている有名なオープンソースってある?
0898nobodyさん2007/03/25(日) 04:42:25ID:UfKh4Z0S
>>897
細胞図
0899nobodyさん2007/03/25(日) 13:19:14ID:???
>>876
新規で受注したPHP案件は無理やりでも導入してるぜ

改造案件で昔の担当したアホがスパゲティってるときだけ使わん。
0900nobodyさん2007/04/03(火) 12:34:20ID:???
$arr = array("hoge"=>array(0,1,2,3));

{foreach from=$arr item=item key=key}
{$item.hoge|@count}
{/foreach}

連想配列の要素数は上記で取得出来るのですが、要素数を交えた演算が出来ずに困ってます・・・
感覚的に
{$item.hoge|@count * 4 + 1}
というような書き方をしたいのですが・・・どうかお助けください
0901nobodyさん2007/04/03(火) 12:36:53ID:???
すみません、上げさせて頂きます
0902nobodyさん2007/04/03(火) 13:32:03ID:???
>>900
math
0903nobodyさん2007/04/03(火) 13:46:55ID:???
多分、Smarty の話だと思うが、それは無理だったはず
0904nobodyさん2007/04/03(火) 13:49:53ID:???
math ならいけるね
0905nobodyさん2007/04/03(火) 14:14:52ID:???
すばらしい・・・一つ勉強になりました、ありがとうございました

$arr = array("hoge"=>array(0,1,2,3));

{foreach from=$arr item=item key=key}
{math equation="n*4+1" assign="mResult" n=$item.hoge|@count}
{$mResult}
{/foreach}
0906nobodyさん2007/04/03(火) 21:35:12ID:???
ttp://smarty.php.net/
繋がる?
0907nobodyさん2007/04/04(水) 10:05:10ID:???
つながる
0908nobodyさん2007/04/05(木) 22:15:57ID:Wh1vrSjM
{literal}〜{/literal}で囲った場所がごっそり消えてしまうのですが
同じ様な事を経験した方っていますかね?
コンパイル済みのファイルの時点でなくなってる感じです。

ちなみにSmartyのバージョンは2.6.6です。
0909nobodyさん2007/04/05(木) 22:20:02ID:???
ないですね
0910nobodyさん2007/04/06(金) 09:59:56ID:???
俺もないな
09119082007/04/06(金) 18:35:57ID:???
>>909
>>910
そうですかぁ・・・。
ちなみに他のサーバーで実行すると{literal}〜{/literal}の中身は表示されます。

php.iniとか環境の違いでsmartyの挙動って変わるんですかね?
0912nobodyさん2007/04/06(金) 18:36:45ID:???
そりゃ変わるだろうね
0913nobodyさん2007/04/07(土) 16:48:58ID:mKHEPGiv
最近はじめたんだけど、smartyの関数とか書式を覚えるとかが
結構メンドクサイねw

バシバシ実用してる人、みんなはそのメンドクサさを乗り越えた甲斐があった?
圧倒的に効率的?
0914nobodyさん2007/04/07(土) 16:53:13ID:???
というかめんどくささを解消するためのものではないし
0915nobodyさん2007/04/07(土) 17:50:05ID:???
smartyの最小構成を教えてください。
使いたいSmarty変数は
assign display include sectionです。
0916nobodyさん2007/04/07(土) 18:48:36ID:???
>>913
デザイナが構文覚えるのは多少苦労すると思うけど
殆ど一般的な式だから、プログラミングやった事があるならすぐに飲み込めると思うが。
むしろ、Switchつかいてぇ・・ぐらい思うんじゃねw
0917nobodyさん2007/04/07(土) 18:50:23ID:???
>>915
意味分からないけどとりあえず
require('Smarty/Smarty.class.php');
0918nobodyさん2007/04/07(土) 18:51:18ID:???
>>915
smarty.class.phpだけ置いて実行して
無いと怒られたものを入れていけばおk
0919nobodyさん2007/04/07(土) 19:00:45ID:1Ng7rNgy
テンプレートに渡した連想配列の添字が例えば
$params['e-mail']
だったとき、どのようにすれば表示できるのでしょうか?
{$params.e-mail}
だと、$params.eマイナスmailと解釈されるのか解りませんが、’0’になります。
09209152007/04/07(土) 19:03:49ID:???
Smarty.class.php
Smarty_Compiler.class.php
internals/core.create_dir_structure.php
internals/core.get_include_path.php
internals/core.write_compiled_resource.php
internals/core.write_file.php

が最小でした。

Smarty.class.phpやSmarty.compiler.class.php内の関数を削除できればもっと省けそうだけど、めんどいですね。
0921nobodyさん2007/04/07(土) 19:07:12ID:???
>>919
んなわけない
0922nobodyさん2007/04/07(土) 19:20:46ID:1Ng7rNgy
>>913
PHPはよく知っていて、わざわざまたSmarty使うのにまた、新しい文法覚えるのってどうなのよ、って感じはするよね。
例えばforeachなんてPHPのはマニュアル見なくてもスラスラかけるけど、
つい最近まで、あれ?item=だっけ?form=だっけ?as?みたいに、良くわからなくなって
マニュアル(というか、他で使ってるところ)みて、コピペしてた。
まあ、でも、>>916さんのいうように、PHP(なり、何か他のスクリプト)解ってるなら特に難しいことないけど、面倒なのは面倒だね。

全部自分一人でするなら、必要ないかも。
Viewの部分の分離なら、PHPだけでも出来るし。
でも、スクリプト知らないデザイナさんなどに覚えてもらうのに楽なのかな?
とはいえデザイナもSmarty覚えるよりPHP覚えた方が、後々役に立ちそうだから微妙だよね。

俺がsmarty使う理由は、デリミタが簡潔でHTMLが綺麗に見えるから。
dreamwearverのデザイナビューでも、わりとエラーにならずにレンダリングされるし。

if文の使い勝手が微妙だけど、プラグイン自分で書くって言う手もあるし。
0923nobodyさん2007/04/07(土) 19:24:40ID:1Ng7rNgy
>>921
おれもそんなわけないと思ったけどなるんだよね
0に
Smarty-2.6.18なんだけど・・・
バグかな?
0924nobodyさん2007/04/07(土) 19:29:34ID:???
>>923
バグかも
0925nobodyさん2007/04/07(土) 20:09:49ID:???
>>923
試してみたけど0になったな。 e_mailでやるときちんと表示されるから、バグっぽいね。
0926nobodyさん2007/04/07(土) 20:16:16ID:???
Flexyがもうちょい融通きくようになればSmartyから即移行したいんだけどね…。
同じname使うだけでパースエラーとかありえない。
将来的にformのnameかIDでグループ分けしてパース出来るようになるのだろうか。
0927nobodyさん2007/04/08(日) 02:44:07ID:???
変数名に-使うなってことで。
09289232007/04/09(月) 08:46:20ID:45uRynI3
>>925
わざわざテストありがと

>>927
ですね。

もういっっこおかしなところ発見したんですけど、暇な人いたらテストしてもらえませんでしょうか?

/////////////PHP//////////
<?php
require('libs/Smarty.class.php');

$errors['user_name'][]="必須です。";
$errors['user_name'][]="必須です。";
$errors['user_pass'][]="必須です。";
$errors['user_pass'][]="必須です。";

print_r($errors);

$smarty=new Smarty;
$smarty->compile_dir="templates_c";
$smarty->template_dir="";

$smarty->assign('errors',$errors);
$smarty->display('smarty.html');
?>
09299232007/04/09(月) 08:47:41ID:45uRynI3
////////続き テンプレート///////////////
/////テンプレート///////////
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd";>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
{foreach from=$errors.user_name item=errors}
{$errors}<br>
{/foreach}
<br><br>
{foreach from=$errors.user_pass item=errors}
{$errors}<br>
{/foreach}
</body>
</html>

これをUTF-8で保存して表示すると2度目のループが文字化けしません?
うちの環境の問題ですか?
09309232007/04/09(月) 08:49:17ID:45uRynI3
ちなみに
変数名(添字)のuser_nameやuser_passをfoo、barでやると文字化けしませんOTZ
0931nobodyさん2007/04/09(月) 10:26:24ID:???
>>928
むしろPHPで-がエラーにならないことに驚いた
マニュアルではだめってなってるし

さらに-を使うことにも驚いたけど
0932nobodyさん2007/04/09(月) 22:48:51ID:???
>>929
itemには違う名前を使うべし。
0933nobodyさん2007/04/09(月) 23:39:29ID:45uRynI3
>>929
ありがとうございます。

そうですね
おっしゃるとおり

さっき実験してて気づきました。
なぜか変数のスコープを勘違いしてました。
すんません。はずかしいです。
0934nobodyさん2007/04/13(金) 11:37:03ID:W3WC3UzW
javascript絡みの話なんですが、

<script>
array[1] = {$infotype2[1]};
</script>

こんな感じにjavascriptのコード内でsmartyから受け取った値を代入したい場合はどうすればいいんでしょうか。
よろしくお願いいたします。
0935nobodyさん2007/04/13(金) 11:38:31ID:???
>>934
俺ならJavaScript全体を
PHPコード側で変数に格納して、
assignで渡すけどな。
0936nobodyさん2007/04/13(金) 11:59:56ID:W3WC3UzW
>>935
なるほど。勉強になります。
ありがとうございました。
0937nobodyさん2007/04/13(金) 12:05:45ID:???
そうテンプレート内に書けばいけるじゃん
0938nobodyさん2007/04/14(土) 00:52:03ID:???
>>934
サーバサイドスクリプトとクライアントサイドスクリプトの間には何があるのか考えればおのずと答えが出るだろ。
もしかして{がデリミタだから引っかかってるとかじゃないよな?
0939nobodyさん2007/04/17(火) 19:07:41ID:???
QuickFormで

$tmpArray = array();
foreach ($list as $row) {
$tmpCheckBox =& $form->createElement('checkbox');
$tmpCheckBox->setName($i);
$tmpCheckBox->setText($row['name']);
$tmpCheckBox->updateAttributes(array(
'value' => $row['id'],
'id' => 'check_'.$i
));
$tmpArray[] = $tmpCheckBox;
$i++;
}
$form->addGroup($tmpArray, 'ques_01', '', '');

こんな感じで checkbox の value の値は変えられるようになったのですが
freeze() すると値が1に戻ってしまいます。
何とか freeze() を経由しても、継承する方法はないのでしょうか?
0940nobodyさん2007/04/17(火) 22:45:42ID:???
なんでsmartyスレで聞いてんの?
0941nobodyさん2007/04/17(火) 23:43:20ID:???
なんでスレッドのタイトル見てないの?
0942nobodyさん2007/04/18(水) 00:51:02ID:???
Flexyのこともたまには思い出してあげてください。
09439392007/04/18(水) 10:23:00ID:???
あ。ごめんなさい。
レンダリングで Smarty 使ってたもんでつい…。移動します。
0944nobodyさん2007/04/22(日) 18:56:08ID:b9VJcguV
質問です
テンプレート(.tpl)中の
{foreach name=loop from=$products item=product}
〜〜
{/foreach}
としている部分がまるっきりブラウザに表示されません
なにが問題でしょうか?
ありがちなミスのパターン(解決策)を教えてください。
自分なりに確認したつもりですがわかりません
0945nobodyさん2007/04/22(日) 19:28:50ID:???
$productsの中身が空
$productsをassignしてない
$productsのスペルが間違ってる

某情報機関の調査によれば上記の凡ミスが全バグ中の85%を占めるそうです。
0946nobodyさん2007/04/24(火) 18:30:43ID:???
<TABLE width="100%" border="1" cellspacing="0" cellpadding="1">
<TBODY>
<TR><TH>AAA</TH><TH>BBB</TH><TH>CCC</TH><TH>DDD</TH><TH>EEE</TH><TH>FFF</TH></TR>
<?php
while ($rs = $result->fetchRow(DB_FETCHMODE_ASSOC)) {
?>
<TR><TD align="center"><?=$rs['h_AAA']?></TD>
<TD><?=$rs['h_BBB']?></TD>
<TD><?=$rs['h_CCC']?></TD>
<TD><?=$rs['h_DDD']?></TD>
<TD><?=$rs['h_EEE']?></TD>
<TD><?=$rs['h_FFF']?></TD></TR>
<?php
}
?>
</TBODY></TABLE>
<?php
}
$result->free();
$conn->disconnect();
?>

smartyの勉強しています。
上の文をphpとtplに分ける際にどう記述すればいいですか?
よろしくお願いいたします。
0947nobodyさん2007/04/24(火) 20:11:55ID:???
>>946
ん
http://sky.freespace.jp/smarty/SmartyManual_2-6-7J_html/
0948nobodyさん2007/04/25(水) 00:40:47ID:6uGbCoSG
>>945
サンキュー 解決した!
0949nobodyさん2007/04/25(水) 00:52:35ID:???
>947
つ【最新版】
http://smarty.m-takagi.org/
翻訳者のみなさんマジGJ!
0950nobodyさん2007/04/25(水) 18:06:36ID:oViUh0CG
946です。
****php******
<?php
$sql = 'SELECT * FROM table;
$smarty->assign('data', $conn->getAll($sql));
$smarty->display('file:E:/html/list.tpl');
?>

****list.tpl****
<TABLE width="100%" border="1" cellspacing="0" cellpadding="1">
<TBODY>
<TR><TH>AAA</TH><TH>BBB</TH><TH>CCC</TH><TH>DDD</TH><TH>EEE</TH><TH>FFF</TH></TR>
{section name=co loop=$data}
<tr>
<td>{$data[co].AAA}</td>
<td>{$data[co].BBB}</td>
<td>{$data[co].CCC}</td>
<td>{$data[co].DDD}</td>
<td>{$data[co].EEE}</td>
<td>{$data[co].FFF}</td>
<tr>
{sectionelse}
<tr><td colspan="5">No items found</td></tr>
{/section}
</TBODY></TABLE>
参考にして組んでみたのですが
上のソースだと、ブラウザに表示されまん。
データはとんでるぽいのですが。。。
設定まわり???

0951nobodyさん2007/04/25(水) 18:25:14ID:???
>>950
DB_FETCHMODE_ASSOCがないからじゃないの
0952nobodyさん2007/04/26(木) 09:07:13ID:ogJz3FoA
>>951
解決しました。ありがとう
e時ミスでした。
0953nobodyさん2007/05/08(火) 16:15:44ID:???
Japanese translation available!
[4-May-2007] The Japanese documentation is here! Thanks goes to Masahiro Takagi, Joe Morikawa, Daichi Kamemoto, and Shinsuke Matsuda for their hard work.

0954nobodyさん2007/05/12(土) 22:26:46ID:6YVR0l4j
tplファイルから

{php}
require_once(hoge.php)
{/php}

↑みたいなことやるとhoge.phpの中でDB(MYSQL)から読み込んだ文字だけ
文字化けするんだけど何で?

ちなみにhoge.phpを直接実行する場合は文字化けを起こさない。
DBもphpもtplも全部UTF-8Nで統一してんだから当たり前だけど。
0955nobodyさん2007/05/13(日) 00:40:29ID:???
{php}使うぐらいならむしろsmarty使うな。
0956nobodyさん2007/05/13(日) 05:21:57ID:m+4dQ5o9
smartyって
テンプレートの名前、例えばhoge.tplを
www.hoge.jp/hoge.phpとwww.hoge.jp/foo/hoge.phpと両方で使うと、バグると言うか、同じtplとみなして表示がおかしくなりますよね?
template_cを自前で切り替えないとダメってコト?
不便じゃない?
みんなどうしてます?
0957nobodyさん2007/05/13(日) 07:37:56ID:???
>>956
マニュアルをよく読んでるから大丈夫。
09589562007/05/13(日) 14:36:39ID:???
>>957
$compile_id
こいつか!ヒントサンクス!
0959nobodyさん2007/05/17(木) 01:55:24ID:???
教えてください。

php部分
$array=array(
"1"=>array("sys"=>"a1"),
"2"=>array("sys"=>"b2"),
"3"=>array("sys"=>"c2"));

$array2=array(
"a1"=>array("ver"=>"z1"),"a2"=>array("ver"=>"z2"),"a3"=>array("ver"=>"z3"),
"b1"=>array("ver"=>"z4"),"b2"=>array("ver"=>"z5"),"b3"=>array("ver"=>"z6"),
"c1"=>array("ver"=>"z7"),"c2"=>array("ver"=>"z8"),"c3"=>array("ver"=>"z9"));

通常表示このように変数値で配列番号を指定し表示される部分を
foreach($array as $value){
print $array2[$value['sys']][ver];
}
//結果 z1z5z8

smartyで同じ処理をするよう
以下コードを書いたのですがパターン1〜3ともに表示できませんでした。
配列番号を変数で指定することは不可能なのでしょうか?

{foreach item=a key=key from=$array}
{$array2[$value['sys']]ver}      パターン1
{$array2.$value['sys'].ver}      パターン2
{$array2.$value.sys.ver}       パターン3
{/foreach}
0960nobodyさん2007/05/17(木) 01:57:57ID:???
smartyの部分修正
{foreach item=a key=key from=$array}
{$array2[$a['sys']]ver}      パターン1
{$array2.$a['sys'].ver}      パターン2
{$array2.$a.sys.ver}       パターン3
{/foreach}
0961nobodyさん2007/05/17(木) 10:06:42ID:???
>>959
assign
0962nobodyさん2007/05/27(日) 20:34:44ID:CBMyXuH3
includeファイルにtableタグを使うと
上に空白が入ってしまいます。
<b>aaa</b>だと大丈夫でした。
どうすれば空白がきえますか?

先ほど別の板で{strip}{/strip}を教えて頂いたのですがダメでした。
宜しくお願い致します。
0963nobodyさん2007/05/27(日) 21:45:06ID:???
>>962
ソース
0964nobodyさん2007/05/28(月) 00:33:32ID:Q4t73dbV
>>963
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0013)about:internet -->
<html>
<head>
<title></title>
<body>
<table>
<tr><td>aaaa</td></tr>
</table>
</body>
</html>
0965nobodyさん2007/05/28(月) 01:05:51ID:Q4t73dbV
>>963
すいません、間違えました。
少し酔ったんでまたソース書き込みます。
ご親切にレス頂いたのに本当にすみません。
0966nobodyさん2007/05/31(木) 17:23:08ID:AGOFu4XP
Smartyで配列の件数を出力したいのに

{$ar|count}

とすると
Array
と表示されてしまうのですがなんで?

上のように書いたら
count($ar)になると思ってたのですが。
09679662007/05/31(木) 17:29:46ID:???
ごめん
書いた後に気づいた
@で解決した
0968nobodyさん2007/05/31(木) 20:33:38ID:???
教えてください。

foreach内でcaptureしたものを配列にして、
html_tableで表示させたいのですが、どうしても
captureで読み込んだものを配列できません。
どうすればテンプレート内で配列にすることができますか?

{foreach from=$item key='key' item='val' name='Loop'}
{capture name='val' assign='row'}
{$val.id}<br>
{$val.word}
{/capture}
{/foreach}

↑$rowに$itemで表示する内容を入れて
↓こんな感じで表示させたい

{html_table loop=$row cols='4'}
0969nobodyさん2007/06/01(金) 12:22:12ID:???
どうしてもできないって,どんな方法を試したん?
09709682007/06/01(金) 15:34:39ID:???
こんな風にしたり。
{capture name='val' assign=row[$key]}

foreach内にこんな感じで入れてみたり。
{assign var="row" value=$smarty.capture.row}
0971nobodyさん2007/06/13(水) 13:16:13ID:CAn4D9tB
$fuga['hoge'][$foo['bar]] をテンプレートで表現するにはどうすればいいですか?

$fuga.hoge.$foo.bar では通らないらしい
0972nobodyさん2007/06/13(水) 16:26:42ID:CAn4D9tB
>>971 自己レスですが
$fuga.hoge[$foo.bar] で通りますた

$fooは連想配列だけどいいのかなあ・・・
0973nobodyさん2007/06/14(木) 13:10:19ID:41cbMn19
最近ページが出るのが重くて
レンタル先に問い合わせたら、Smarty使ってるせいっていわれたらしんですけど
そんなことってありますか?
Smartyってキャッシュするから他のテンプレートエンジンより高速っていいますよね?

なんかApacheのキャッシュがSmartyと相性が悪いって、いわれたらしいんですけど・・・

もちろん専用サーバーなので、他のサイトのせいで重いってこともないし、
最初立ち上げたときはそれほどでもなくて
明らかに重くなってるので、プログラムのせいってこともないと思うし。
問い合わせた本人じゃないので詳しくわからなかったんですけど、ApacheとSmartyって相性悪いんですか?

もしかしたらapacheのログのせい?

Apacheの設定でどうにかならないのでしょうか?

どうも、こっちが知らないと思って適当にあしらってる感じがしないでもないOTZ
ヴァキュームとかしてるのかな・・・
0974nobodyさん2007/06/14(木) 13:12:47ID:???
>>973
初耳
0975nobodyさん2007/06/14(木) 15:34:54ID:???
>>973
Smartyは確かに軽いライブラリじゃないけど
(xdebugで解析するとメインの業務処理より時間がかかってる場合多し)
体感で重いという程なら他の要因を調べるべき。

秒間何十アクセスとかじゃないんだよね?
Pentium3 500MHzとかのヘボマシンだと、
(Webアプリに大いに依存するけど)
秒間十アクセス程度でキツイ。
0976nobodyさん2007/06/14(木) 23:13:08ID:???
>>975
ApacheとPHPモジュールならそのマシンでももっともーっと行けるだろ。
普通にGUIログインでクライアントマシンとして利用しながら
サーバー立ち上げてるとか??
レス数が950を超えています。1000を超えると書き込みができなくなります。