• 締切済み

phpプログラムの転送量を少なくする方法

現在レンタルサーバーでphpのウェブアプリを運営しています。 phpの転送量を削減したいのですが、 良い方法がありましたら、教えて下さい。 phpのファイルサイズが1Mバイトを超えてしまいました。 転送量を少なくしたいのですが、次のようなプログラムは効果があるのでしょうか? <?php $a = ""; if($a == 0){ include_once("function0.php"); function0($a); }else($a == 1){ include_once("function1.php"); function1($a); } ?> 場合分けで分割して、プログラムを読み出すというものです。 あとapcでキャッシュしています。 root権限があるので、サーバー設定でも構いません。 phpの転送量を少なくする方法がありましたら、教えて下さい。 よろしくお願いいたします。

  • PHP
  • 回答数2
  • ありがとう数1

みんなの回答

回答No.2

とりあえずは、下記のように、ある程度出力されるページで、どれを読み出すか、読み出すもののみをincludeしてやれば良いとして、 後は、そのPHPスクリプトが、 ・どの程度分類わけが出来るか ・分類わけ時点でいらない関数を捨てれるか ・そもそも関数の書き方でもっと簡単に書けるものがないか といったところになると思いますがいかがでしょうか。 組み込み関数で処理できるのに、自前で書いてしまってる部分があるとか、似たようなSQL文がベタ書きされているとかといったところも見直してみてはいかがでしょうか。 他にも、DBやcsv、設定ファイルに書き込むべき内容を、配列で記述してあったりとか。

回答No.1

1MBを超える単体のPHPスクリプトというものが想像しがたいんですが、 どのようなものを記述されておりますか? 表示するHTML部分もフルで記述されているのでしょうか。 ソレであれば、質問者さんが例として記述してる方法でかなり効果があるのではないかと思いますが、実際のスクリプト自体がどのようになっているのかが分からないとなんとも言えません。 例えばHTML部分(View部分)と、PHP部分を分離させるとか --index.php-------------------- <?php require_once 'path/to/common.php'; //全体的に使うモジュール $page = $_GET['page']; //例えばページの遷移をパラメータで引くとして if(preg_match('/^[0-9a-z]+$/i', $page)){ $action = $page; if(file_exists('path/to/'.$page.'.php')){ require_once 'path/to/'.$page.'.php'; execute(); } }else{ echo 'not found'; } ?> --ページの名前(hogeとすると)hoge.php <?php function execute(){ include('なんか必要なモジュールとか'); //コンテンツの内容で必要な処理 $assign = array( 'title' => 'ページの名前とか', 'date' => date('Y年m月d日', time()); ); view_html('path/to/contents.html', $assign); } ?> --なんかメインモジュール的なもの(common.php) <?php function view_html($___html_path, $___variables=array()){ if(!file_exists($___html_path)) exit(); //表示するべきHTMLファイルが存在しなかったら終わり foreach($___variables as $___key => $___value){ ${$___key} = $___value; } include($___html_path); } ?> --表示するHTMLファイル(contents.html) <html> <head> <title><?php echo $title?></title> </head> <body> 今日は、<?php echo $date?>です。 </body> </html> ・・・・このようにしてやれば、 index.php?page=hoge とアクセスがあった場合に 読むファイルは、 common.php hoge.php contents.html(hoge.htmlとかactionと一緒の名前にしておいたり。) (及びオプション的に必要なモジュール) のみとなります。 index.php?page=test とアクセスがあった場合も同様に common.php test.php test.html のみと。 最終的に何らかのフレームワークをご利用されたほうがいいかもしれませんが・・・

printk
質問者

補足

hogehoge78様 ありがとうございます。 なんとか理解できました。 言葉足らずの点があって申し訳ないのですが、 HTML部分とロジックの部分は分離してあります。 ロジックのphpプログラムが1Mバイトあります。 そのほとんどが実行されることのない関数なのですが、 たまに実行される関数というのがたくさんあります。 それで分離できないものかと思ったのです。 必要なときだけ読み出せばいいのではないかと。 ありがとうございました。 自分でも実際に動かしてみます。

関連するQ&A

  • include_onceで呼び出したPHPファイル

    PHPでサイトを組んでいるのですが、include_onceで以下のようにPHPの各ファイルを呼び出して実行しているのですがうまくいきません。 <?php //レンタルサーバーのcronを利用して、定期的に走らせるコードです。 include_once "example_a.php"; include_once "example_b.php"; include_once "example_c.php"; ?> 各ファイルは、RSSで読み込んだデータをMySQLに格納するプログラムです。 個別で各ファイルを実行すると正しい結果となりますが上記のようなプログラムでまとめて実行するとexample_a.phpは正しい結果となりますが、example_b.php、example_c.phpは正しく処理されません。 原因として考えられるものがあれば、教えていただきたいと思います。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpのincludeについて

    お世話になります。 Apache/2.2.3 PHP5.1.6 のレンタルサーバを利用しています。 httpdocs   |___lib   |  |___test.php   |___index.php という構造にしています。 -----test.php-------- <?php $a = 'sample'; ?> --------------------- -----index.php------- <?php include_once 'lib/test.php'; echo $a; ?> --------------------- 上記の場合、index.phpには 「sample」と表示されます。 -----index.php------- <?php include_once 'http://example.com/lib/test.php'; echo $a; ?> --------------------- 上記の場合、なぜか表示されません。 そこで「http://~~」はincludeできないのかなと思ったのですが -----test.php-------- <?php $a = 'sample'; echo $a; ?> --------------------- -----index.php------- <?php include_once 'http://example.com/lib/test.php'; ?> --------------------- とすると、なぜか「sample」と表示されました。 この結果から、includeはできているみたいです。 なんとか -----test.php-------- <?php $a = 'sample'; ?> --------------------- -----index.php------- <?php include_once 'http://example.com/lib/test.php'; echo $a; ?> --------------------- で「sample」と表示させたくて試行錯誤してみたのですが どうしても解決できません。 お力添えのほどお願いできればと思います。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 他のサーバにあるphpをrequireしたい

    他のサーバにある変数を引っ張ってくる方法が分からず困っております。 (php.iniのallow_url_includeをonにすれば実行出来たのですが、  offのままで同じ結果になる方法をお教え頂きたく思います。) allow_url_includeをonにした場合には出来た方法↓ 【Aサーバ】にある「a.txt」(a.phpにすると実行出来ませんでした……) <?php $hogeA = 'テキストA'; ?> 【Bサーバ】にある「b.html」 <?php require_once ('http://www.A/a.txt'); echo $hogeA ; ?> b.htmlに「テキストA」を表させたいと考えています。 allow_url_includeを変更せずに出来る代替方法をお教え下さい。 a.phpだと実行出来なかった理由も分からないため、 よろしければこちらもお教え下さい。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 複数PHPプログラムのHTML埋め込みについて

    お世話になります。 1ページ内に複数のincludeタグを使ってphpプログラムを読み込んでおりますが、ある一つのincludeタグ以降から、結果がつられて表示されてしまいます。 つまり、【図A】の通り一つのページ内に5つのphpを埋め込んでいますが、いざ出力結果を見てみると、【図B】の通り002.php以降が全て002.phpの結果になってしまいます。 尚、5つの各phpは、ランダムで文字列を表示させるphpプログラムです。 【図A】 <html> <body> <? include(\"001.php\"); ?> <? include(\"002.php\"); ?> <? include(\"003.php\"); ?> <? include(\"004.php\"); ?> <? include(\"005.php\"); ?> </body> </html> 【図B】 <html> <body> 001.phpの結果 002.phpの結果 002.phpの結果 002.phpの結果 002.phpの結果 </body> </html> PHPにお詳しい方、是非ご教授頂けると大変助かります。 何卒宜しくお願い致します。

    • 締切済み
    • PHP
  • PHPのページが真っ白に【初心者です】

    (ラビットサーバーの専用サーバーからVPSへ) サーバーの移動をしました。 すると、PHPのページが真っ白になり表示されません。 ソースを見ると、以下のように表示されました。 php.iniファイルをいろいろ弄ってみたんですが、 なおりませんで、お知恵を拝借したく書き込みました。 よろしくお願いします。 <? $dir = "../"; include_once('../lib/session.lib'); $main_dsp = './main.tpl'; include_once('./html.php'); ?>

    • 締切済み
    • PHP
  • PHPの関数の二重定義を防ぐには?

    phpでオリジナルの関数を作成したとき プログラムのミス等で、二度定義されてしまった時 Fatal error: Cannot redeclare というような、エラーが出ますが、include_onceのonceみたいな これを、出さぬよう、定義側で一度しか定義させないように するようにはできないのでしょうか? if($flag){   function hoge(){} } $flag = 1 のようにフラグを立てるしかないのでしょうか?

    • ベストアンサー
    • PHP
  • phpのパス指定

    初めてphpを触っています。 いくつかの処理を外部ファイルにしたいのですが パスの指定が悪いのか、同じ階層に置いたり、いろいろ試してもfatal error ばかりです。 どこが悪いのか、教えていただけないでしょうか? サンプルとして、moto.phpのなかのincludeフォルダー内の外部ファイル:func.phpを実行することとします。 moto.php <?php require "./include/func.php"); $a = 2; $b = 1; $c = $a - $b * $a; echo return_word($a); echo "<br>"; //改行 echo return_word($b); echo "<br>"; //改行 echo return_word($c); ?> func.php <? php function return_word ( $data ){ if ( $a==1){ return "a"; }else if ($a==2){ return "b"; }else{ return "c"; } } ?> コマンドラインから php moto.php を実行すると <? php function return_word ( $data ){ if ( $a==1){ return "a"; }else if ($a==2){ return "b"; }else{ return "c"; } } ?> Fatal error: Call to undefined function return_word() in C:\xxxxxx\php\moto.php on line 9 となってしまいます。 外部ファイルは見えているようなのに、どうして関数がundefined になってしまうのでしょうか? phpの基本的なことなのかもしれませんが よろしくアドバイスお願いできればと思います。

    • ベストアンサー
    • PHP
  • PHPのクエリ付(?)URLの転送

    サーバーに関する詳しいことはまったくわかってない人間なのですが、 現在PHP?smarty?ベースのサーバでホームページを開設しています。 それをhtmlファイルを自由に配置できる一般的なサーバと分けて管理することになりました。 PHPのサーバを(A)、htmlのサーバを(B)とすると、 (B)サーバでトップ、カテゴリーページをhtmlで作成。 (A)サーバで詳細ページをPHPで作成します。 (A)サーバーで使っていたドメイン(xxx.jp)を(B)サーバにうつし、 (A)サーバに新しいドメイン(???.jp)を割り当てます。 現在のページ(Aサーバ)は http://www.xxx.ne.jp/?xyzoo=ooooo http://www.xxx..ne.jp/?mode=vrae=oooooo&awaa=1 (oooは数字) のようにページが作成されます。 その他(txtファイルなど)ファイルはアップロードできません。 それを(B)サーバではhtmlで作成し、ファイル名もabc.htmlなどと変わります。 ですので http://www.xxx.ne.jp/?mode=vrae=oooooo&awaa=1 にアクセスしてもトップページが表示されるだけです。 これらにアクセスすると、新しいファイルに転送するにはどうすればよいでしょうか。 (http://www.xxx.ne.jp/?mode=vrae=oooooo&awaa=1にアクセスすると、 http://www.xxx.ne.jp/abc.htmlに転送 (http://www.xxx.ne.jp/?mode=vrae=oooooo&awaa=2にアクセスすると、 http://www.xxx.ne.jp/def.htmlに転送 ) また、http://www.xxx.ne.jp/?xyzoo=oooooにアクセスされると、 今度は、違うサーバのhttp://www.???.ne.jp/?xyzoo=oooooです。 リダイレクトとか色々調べてみたのですが、結局わからずでした。。。 (.htaccess で Redirect permanent /?mode=vrae=oooooo&awaa=1 http://www.xxx.ne.jp/abc.html としてみたけどだめでした…) もう一つ、今度は 新しいドメイン(http://www.???.ne.jp/)になった(A)サーバについて、 詳細ページはhttp://www.???.ne.jp/?xyzoo=ooooo等で使うのですが、 トップページもアクセスできるようになります。 トップページhttp://www.???.ne.jp/にアクセスされると、新しいサーバのhttp://www.xxx.ne.jp/に転送したく思ってます。 現状では、(A)サーバの転送はmeta や javascript で転送する方法しか思いつきません。 PHP?smarty?で転送する方法は無いでしょうか。 なお、新しい(B)サーバは一般的なサーバ(?)で、ファイルは基本的に何でも置けます。 古いPHPの(A)サーバはsmarty.server?のタグでページを作成し、 その他ファイルを置けないどころか、head内も触れません…。 (metaやjavascriptはbody内に書くしかないのです) どなたか詳しい人、教えていただけませんか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • レンタルサーバーの転送量制限について

    いまPHPの使えるレンタルサーバーを探しています。 そしたら、メディアウォーズのステップサーバープラスというプランで、転送量制限75GB、125MB/時間もしくは2.5GB/日となっていました。 初めて有料のサーバースペースを借りるので転送量制限の量はこのくらいで大丈夫でしょうか?

  • 別サーバの記述だけ持ってくる方法?

    AとBのサーバがあります。 AサーバにあるPHPプログラム内で BサーバにあるPHPプログラムを実行したいです。 このとき、 Bサーバでプログラムを動かすわけではなく、 記述だけをAサーバのプログラムに持ってきて Aサーバで動いてほしいのですが、 そもそもこんなことは可能でしょうか? 例えば [AサーバのPHP]  $AAA = "あああ";  require("BサーバのPHPのURL"); [BサーバのPHP]  print "AAA=".$AAA; 通常、requireやincludeをすると  AAA= と出力されるところを  AAA=あああ と出力させたいです。 なにか良い方法ございましたらお助け願います。 もちろん、requireやincludeで記述だけ持ってこれたら、 ソースをパクリ放題になるので、できなさそうな気はします。 Bの方の拡張子を変えたらできる!とか、そんなのありますか?

    • ベストアンサー
    • PHP

専門家に質問してみよう