Smartyとphpで動的にページコンテンツを生成するサイトをつくっています。
例えば、
index.php?m=front → front.phpにアクセスしてfront.tplを返す
index.php?m=page2 → page2.phpにアクセスしてpage2.tplを返す
index.php?m=page3 → page3.phpにアクセスしてpage3.tplを返す
…
という動作をさせています。
ただ設置しているレンタルサーバーが最近重く動作が鈍重になってしまい、phpファイルからただのhtmlファイルに換えたいと思っています。
上の例で言えば、
index.php?m=front → front.html
としたいのです。
はじめからfront.htmlを用意し、file("front.tpl")でテンプレートを読み込んでファイルを書き換えようと試しましたが、データベースの情報を含むページにそのデータの内容が反映されないところで行き詰っています。
何かしらの方法で、
php → Smarty → html生成
ということができないでしょうか?
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
casheを作成しているならば、htmlと同等だと思うのですが・・・
cgiとして動かせば多少は、重くなるかもしれませんが、
よっぽど、アクセスが多くないのなら、それ程気にならないと思いますが?
普通のhtmlファイルが遅いのならば、サーバの問題でしょうし、
極端に違うならば別の問題かもしれないので、
サーバ会社へ問い合わせるのがよろしいのでは?
>f_motionさん
以前はhtmlファイルで今ほど重くはなかったので、phpの処理の影響と思っていたのですが。
とりあえずサーバー会社には問い合わせてみます。
また、キャッシュの使い方の問題ということはありえますか?
物の本によれば、「テンプレート更新チェックのためのわずかな処理によってパフォーマンスが阻害される」とありましたが、例えば
$smarty->cache_lifetime = 3600;
$compile_check = false;
にしておけば、一時間ごとにキャッシュが破棄され、アクセスがあれば新しいキャッシュが自動で更新される、ことになりますでしょうか?
No.3
- 回答日時:
やはりCGIプログラムとして呼び出されている以上、それなりのオーバーヘッドは避けられません。
Apacheのモジュールとして動作させるサーバーに乗り換えるのがもっとも確実な方法だと思います。No.1
- 回答日時:
キャッシュを使えば、速度は速くなりますが、
DBが更新されたら、キャッシュも更新する
などの処理も必要になります。
どれ位アクセスがあるか分かりませんが、
サーバなどに問題がありそうですが・・・
参考URL:http://sunset.freespace.jp/Smarty/SmartyManual_2 …
この回答への補足
>f_motionさん
回答いただいて有難うございます。
f_motionさんの仰るようにキャッシュを使用しています。DB更新毎にキャッシュを更新するという設定にもしております。
ただそれでも遅いときは、画面表示に数秒かかるときがあって、その状況を改善したいのです。
確かにサーバーの問題かもしれないですね。
サーバーは、e-storeのサイトサーブというプランを使っているのですが、phpの実行はcgiプログラムとして動作するとなっており、
e-storeのcgiファイルの設置に関しては、
【設置ディレクトリ 推奨は、ログインディレクトリ(docs/)の1つ上にある cgi-bin ディレクトリですが、docs ディレクトリ内 でも動作します。】 ← public_htmlです。
呼出アドレスについては
【 ・cgi-bin ディレクトリに設置した場合は、「http://www.お客様ドメイン名/cgi-bin/ファイル名」】
となっていますが、私はcgi-binディレクトリは使用していません。
自分の思い当たるところでは、上の点かという気がしています。(サーバーの知識が乏しいので勘ですが・・・)
やはりphp → Smarty → html生成はできないでしょうか?
それかサーバーに設置を工夫することで改善できるでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
index.phpって何ですか? 具体...
-
phpでAuthorizationヘッダを追加
-
onedrive にexcelファイルをア...
-
MySQLのベースに書かれたプログ...
-
フォントの色を変えるには?
-
トランザクションが原因?DBに...
-
PHPのif文でその処理を途中で抜...
-
透過PNGが透過されない!!
-
違法アップロードについて
-
BASP21メール送信(SMTP-AUTH認...
-
データベースにアクセスして結...
-
Subversionで、ファイルをリネ...
-
VBA 添付ファイルをつけてメー...
-
.phpファイルが、表示されない
-
ドラッグアンドドロップで画像...
-
phpのextension_dirを複数指定...
-
MySQLとPHPで日本語が文字化け...
-
mb_convert_encoding で?になる。
-
php.ini を設定を変更すると再...
-
3つ以上の論理積は利用可能なの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HPを開くとダウンロードページ...
-
PHPでの複数ファイル出力
-
ヒアドキュメントの中で別ファ...
-
file_get_contents()の動きが読...
-
phpコードの戻り値をhtmlファイ...
-
include を使用していてちょっ...
-
phpで大量のhtmlを任意の順番で...
-
トップページURLのみで下層ペー...
-
CGIでHTMLファイルのPHP部分を...
-
php excelダウンロード
-
PHPのアンケートフォーム作成で...
-
Google Analyticsのモバイル用
-
phpでAuthorizationヘッダを追加
-
携帯振り分けPHP”で携帯から...
-
PHPでJavaScriptファイルinclude
-
imgタグとドメイン
-
.phpで.htmlを作る。
-
かなり重い処理をする方法
-
index.php index.html
-
PHPのクエリ付(?)URLの転送
おすすめ情報