サーバ上にPerlやPHPを置く場合、何よりも重視しなければ
ならないのはサーバへの「負荷」。
負荷の高いCGIの使用は削除対象となるのが目に見えてます。
負荷を軽減させるにはどうすればいいか?
どういう書き方をすればいいか?
そんな委員会を開設しました。
★負荷軽減対策委員会(Perl、PHP)★
1ジークハルト ◆VUxx/EwNXI
02/10/15 10:33ID:ifgLRUyb373nobodyさん
03/06/25 18:56ID:??? すべてのルーチンを一つのファイルにまとめてしまうのより、
ひとつひとつルーチン毎にファイルを分けて、
一度に呼び出す方が負荷が大きいですか?
ひとつひとつルーチン毎にファイルを分けて、
一度に呼び出す方が負荷が大きいですか?
374nobodyさん
03/06/25 22:26ID:??? >373
漏れもそれ思うんだが、ファイルをまとめようが分割しようが、
結局たいした大きさじゃないので、どっちもオンメモリってことない?
漏れもそれ思うんだが、ファイルをまとめようが分割しようが、
結局たいした大きさじゃないので、どっちもオンメモリってことない?
375nobodyさん
03/06/25 23:20ID:??? 使わないコードを解釈させない為に分割するんであって、
分割しても常に全部使うのなら、まとめた方がシステムコールが
減っていいと思う。
Perl だったら CGI.pm でやってる遅延読込が参考になるかと。
あれはあれでメモリ食いそうだけど。
分割しても常に全部使うのなら、まとめた方がシステムコールが
減っていいと思う。
Perl だったら CGI.pm でやってる遅延読込が参考になるかと。
あれはあれでメモリ食いそうだけど。
377あぼーん
NGNGあぼーん
378nobodyさん
03/06/26 03:55ID:???379あぼーん
NGNGあぼーん
380あぼーん
NGNGあぼーん
381nobodyさん
03/06/26 13:46ID:??? requireはそこに来た時点で読み込まれる。
function hoge() {
require('hoge.php');
}
hoge(); らなければ読まない。
Perlも同じく。
function hoge() {
require('hoge.php');
}
hoge(); らなければ読まない。
Perlも同じく。
382nobodyさん
03/06/27 16:09ID:sG/tHFOo コメントを山ほど書いたら負荷になります?
スクリプト自体軽くした方がいいんでしょうか。
スクリプト自体軽くした方がいいんでしょうか。
385あぼーん
NGNGあぼーん
388nobodyさん
03/06/28 14:07ID:M/F9ZoCi389nobodyさん
03/06/28 14:11ID:jkMqlRkL390nobodyさん
03/06/28 15:08ID:??? 変わるんだ…。
391nobodyさん
03/06/28 16:21ID:??? 速度と分かりやすさのトレードオフ
392nobodyさん
03/06/28 22:51ID:??? WWW
393nobodyさん
03/06/29 00:15ID:??? 正直言って、コメントなんか処理速度に関係なんかない。
そりゃ、数百Mとかのコメントとか入れてたら、
メモリへロードするのが遅くなるだろうが、
処理速度そのものは、何の影響もない。
そりゃ、数百Mとかのコメントとか入れてたら、
メモリへロードするのが遅くなるだろうが、
処理速度そのものは、何の影響もない。
394nobodyさん
03/06/29 08:04ID:??? え????
コンパイル時に無視されて、コンパイル結果もキャッシュされる
わけなんだから、全く影響しないんじゃ?
コンパイル時に無視されて、コンパイル結果もキャッシュされる
わけなんだから、全く影響しないんじゃ?
395nobodyさん
03/06/29 13:20ID:???396nobodyさん
03/06/29 22:00ID:??? CgiPerl , CgiPHP , mod_php のうち速度が一番なのはmod_phpなのは知ってるけど
負荷が掛からないのはどれ?
負荷が掛からないのはどれ?
398nobodyさん
03/07/01 16:46ID:67Ffrssk printで一行づつ出力するか、
変数にデータを入れて、printで一気に出力するかどちらが負荷少ない?
それともヒアドキュメント使うか。
どれよ?
変数にデータを入れて、printで一気に出力するかどちらが負荷少ない?
それともヒアドキュメント使うか。
どれよ?
399nobodyさん
03/07/01 19:31ID:??? mod_perlは一般的じゃないよ。
400nobodyさん
03/07/01 19:43ID:??? 薬物使ったベンジョンソンみたいなもん?
402nobodyさん
03/07/01 20:04ID:3/m58fAf403nobodyさん
03/07/01 20:06ID:??? とりあえずバッファリングなしは効率が悪い。
404403
03/07/01 20:14ID:??? そういえばPerlにCのfflushのような関数はないのかな?
$|=1;print "";$|=0;とやるしかない?
$|=1;print "";$|=0;とやるしかない?
405nobodyさん
03/07/01 22:48ID:??? >>398
変数作って一気に出力する。
エンコード自由に変換して掃き出せるようなものの場合はどうしてもこうなる。
ヒアドキュメントは
$aya=<<EOL;
あやや
あひゃひゃ
EOL
で変数ぶち込めるし。
変数作って一気に出力する。
エンコード自由に変換して掃き出せるようなものの場合はどうしてもこうなる。
ヒアドキュメントは
$aya=<<EOL;
あやや
あひゃひゃ
EOL
で変数ぶち込めるし。
407nobodyさん
03/07/02 00:38ID:??? echo "
うほっ
いい男!
";
これでいいだろ
うほっ
いい男!
";
これでいいだろ
408nobodyさん
03/07/02 08:14ID:???409404NOTFOUND
03/07/02 20:09ID:??? >>408
>mod_phpも同じだ。
PHP可を謳っている鯖屋はmod_php可という意味で、CGI可(※)を謳っている鯖屋は、
CGI/Perl可という意味で謳っていると思うのだがどうだろうか?
CGI可に比べてPHP可の鯖屋が少ないのは事実だが、mod_Perlを使える
鯖屋を見た事がないのは、漏れの調べ方が甘いからなのか・・・
※)一般的にCGI=Perlという認識があるのでこのような書き方をあえてしたが・・・
つまり何が言いたいかと言うと、mod_php使える鯖がそんなに非一般的では
ないんではないかという事だ。
>mod_phpも同じだ。
PHP可を謳っている鯖屋はmod_php可という意味で、CGI可(※)を謳っている鯖屋は、
CGI/Perl可という意味で謳っていると思うのだがどうだろうか?
CGI可に比べてPHP可の鯖屋が少ないのは事実だが、mod_Perlを使える
鯖屋を見た事がないのは、漏れの調べ方が甘いからなのか・・・
※)一般的にCGI=Perlという認識があるのでこのような書き方をあえてしたが・・・
つまり何が言いたいかと言うと、mod_php使える鯖がそんなに非一般的では
ないんではないかという事だ。
410nobodyさん
03/07/02 21:32ID:??? mod_php っていう言い方、あんまきかないんだけど、
cgi版じゃない普通(というか一般的というか)のphpってこと?
cgi版じゃない普通(というか一般的というか)のphpってこと?
411nobodyさん
03/07/02 21:52ID:??? >>409
適当な拡張子をApache::Registry上で
動くようにする事自体はむずかしくないんだけど
ユーザーのモジュールの名前空間に制限がかけれないので
userAが
use lib (/home/userA/lib/);
use myPackage;
としる状態で
userBが
use lib (/home/userB/lib/);
use myPackage;
とかしてくれちゃうと、動作がめちゃくちゃになってしまうので
ユーザーにmod_perlな環境を提供できません(´Д`;)
>>410
mod_phpでない場合(サーバー組み込みで無い場合)
「php対応(ただしコマンドライン版)」という表記をみかけます
適当な拡張子をApache::Registry上で
動くようにする事自体はむずかしくないんだけど
ユーザーのモジュールの名前空間に制限がかけれないので
userAが
use lib (/home/userA/lib/);
use myPackage;
としる状態で
userBが
use lib (/home/userB/lib/);
use myPackage;
とかしてくれちゃうと、動作がめちゃくちゃになってしまうので
ユーザーにmod_perlな環境を提供できません(´Д`;)
>>410
mod_phpでない場合(サーバー組み込みで無い場合)
「php対応(ただしコマンドライン版)」という表記をみかけます
414nobodyさん
03/07/03 09:14ID:??? でもな、Perlには、FastCGIとかもあるからな。
>ちゃんと実験したサイト行って、見て来い。
ああいう非現実的な試行環境に統一して対照されても参考にできないよね、、
まだmsがやったベンチ結果のほうがdqnぽくない
PHP5のケース別ベンチやってくれんかな
個人では実験環境が作れないしzendの情報だけでは激しく不安だし、、
話は変わって、itboostのtips「効率的な処理」に、phpのループ構造は遅いから、
コールバック関数を繰り返し呼び出すとphpではなくcレベルでループが走ってくれるて
いいよってネタがあるけど、これはどうなん?
(あれはcountを一度にすれば大差ないような気もしつつ、、。
個人で実行速度を計測するといえば、ループ処理のことだと言ってもいいかと
おもうんだけど、これってphp特有の問題?
ああいう非現実的な試行環境に統一して対照されても参考にできないよね、、
まだmsがやったベンチ結果のほうがdqnぽくない
PHP5のケース別ベンチやってくれんかな
個人では実験環境が作れないしzendの情報だけでは激しく不安だし、、
話は変わって、itboostのtips「効率的な処理」に、phpのループ構造は遅いから、
コールバック関数を繰り返し呼び出すとphpではなくcレベルでループが走ってくれるて
いいよってネタがあるけど、これはどうなん?
(あれはcountを一度にすれば大差ないような気もしつつ、、。
個人で実行速度を計測するといえば、ループ処理のことだと言ってもいいかと
おもうんだけど、これってphp特有の問題?
416411
03/07/06 09:05ID:???417nobodyさん
03/07/06 09:07ID:??? >>ちゃんと実験したサイト行って、見て来い。
>ああいう非現実的な試行環境に統一して対照されても参考にできないよね、、
どこのサイトを見てるんですか?
>ああいう非現実的な試行環境に統一して対照されても参考にできないよね、、
どこのサイトを見てるんですか?
418nobodyさん
03/07/06 13:26ID:???419nobodyさん
03/07/06 13:33ID:???421nobodyさん
03/07/08 03:40ID:???422山崎 渉
03/07/15 11:10ID:???__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
423nobodyさん
03/07/24 09:32ID:??? 保守?
424nobodyさん
03/07/25 23:36ID:??? ↑ageとかんかいッ!
425nobodyさん
03/07/26 17:01ID:??? ageんでも保守はできるでしょ
?>
<html><head><title><?=$title=></title></head>
<?php
と
echo << end
<html><head><title>$title</title></head>
end;
はどっちが軽いんだろうね・・・
?>
<html><head><title><?=$title=></title></head>
<?php
と
echo << end
<html><head><title>$title</title></head>
end;
はどっちが軽いんだろうね・・・
426nobodyさん
03/07/26 17:02ID:??? あぁ、 < がひとつ足りないし・・・
427nobodyさん
03/07/27 01:37ID:??? このスレいつも大変参考にさせていただいています。
430nobodyさん
03/07/28 05:31ID:??? PHPに、テキスト中に変数があるかどうか判断させる後者よりも、
明示的にする前者がやっぱ速いかな?特に変数が多いほど。
でも、PHPモードに入ったり抜けたりする負荷(と言えるかな?)を考えると前者のような気もする…
明示的にする前者がやっぱ速いかな?特に変数が多いほど。
でも、PHPモードに入ったり抜けたりする負荷(と言えるかな?)を考えると前者のような気もする…
431nobodyさん
03/07/28 11:41ID:??? echo '
<html><head><title>'.$title.'</title></head>
';
これでいいべ
<html><head><title>'.$title.'</title></head>
';
これでいいべ
432nobodyさん
03/07/28 16:40ID:???433nobodyさん
03/07/31 10:25ID:??? >431-432
http://www.php.net/manual/ja/language.basic-syntax.php
にもあるとーり結局内部的には echo で処理されてるから
あとは可読性の問題じゃないかねぇ。
http://www.php.net/manual/ja/language.basic-syntax.php
にもあるとーり結局内部的には echo で処理されてるから
あとは可読性の問題じゃないかねぇ。
434山崎 渉
03/08/02 02:24ID:??? ∧_∧
( ^^ )< ぬるぽ(^^)
( ^^ )< ぬるぽ(^^)
435ぼるじょあ ◆ySd1dMH5Gk
03/08/02 04:52ID:??? ∧_∧ ∧_∧
ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。
=〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
= ◎――――――◎ 山崎渉&ぼるじょあ
ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。
=〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
= ◎――――――◎ 山崎渉&ぼるじょあ
436nobodyさん
03/08/08 18:33ID:??? mod_perlで動かすと、速いときはバカみたいに速いが、
遅いときはイライラするぐらい遅い。
普通こんなにバラツキがあるものなのですか?
遅いときはイライラするぐらい遅い。
普通こんなにバラツキがあるものなのですか?
437あぼーん
NGNGあぼーん
438nobodyさん
03/08/15 12:34ID:???439nobodyさん
03/08/20 12:11ID:??? speedyCGIで負荷が高くなると、InternalServerErrorが出るのですけど、
私の書き方が間違っているだけなんですかね?
私の書き方が間違っているだけなんですかね?
440nobodyさん
03/08/20 12:21ID:??? >438
mod_perl1.2使ってたとき、モジュールのキャッシュ無視して、別空間にロードされる場合も。
最近のバージョンで改善されているかどうかは不明ですが。
mod_perl1.2使ってたとき、モジュールのキャッシュ無視して、別空間にロードされる場合も。
最近のバージョンで改善されているかどうかは不明ですが。
442440
03/08/21 18:44ID:??? >>441
初回にロードした時間を記録するクラス作って、何度かリロードして確かめた記憶が。
他にも、子プロセス関係で何かしたと思ったけど、忘れた。
%INC消さなくても、ロードされる時はされてましたよ。
ライブラリモジュールに限らず、同一ファイル、同一パッケージ名の空間も
複数のキャッシュが存在してしまうこともしばしば。
それ知って以来、mod_perlは一切使ってませんが。
で、最近のバージョンはどうなんでしょう?
初回にロードした時間を記録するクラス作って、何度かリロードして確かめた記憶が。
他にも、子プロセス関係で何かしたと思ったけど、忘れた。
%INC消さなくても、ロードされる時はされてましたよ。
ライブラリモジュールに限らず、同一ファイル、同一パッケージ名の空間も
複数のキャッシュが存在してしまうこともしばしば。
それ知って以来、mod_perlは一切使ってませんが。
で、最近のバージョンはどうなんでしょう?
443nobodyさん
03/08/22 04:06ID:???444nobodyさん
03/08/22 13:11ID:??? >>443
私もWebとPostgresqlで組んでいるのですが、
mod_perlだと、速度のバラツキが尋常でなくて採用を辞めましたよ。
SpeedyCGIが安定さえしてくれれば、何も心配ないのですけどね。
私もWebとPostgresqlで組んでいるのですが、
mod_perlだと、速度のバラツキが尋常でなくて採用を辞めましたよ。
SpeedyCGIが安定さえしてくれれば、何も心配ないのですけどね。
445nobodyさん
03/08/22 15:05ID:qLHm82v9 PHP使えよ。。
448あぼーん
NGNGあぼーん
449nobodyさん
03/08/22 23:56ID:???450nobodyさん
03/08/23 00:30ID:??? そういえば、PostgreSQLの日本語サイト見てたら、以外にも
Perl/CGIで利用しているところが多いのにビビりました。
DBMS使う以上、何らかの効率性を望んでいるのだと思うけど、何故Perl/CGIなんだと問いつめたいよ。
Perl/CGIで利用しているところが多いのにビビりました。
DBMS使う以上、何らかの効率性を望んでいるのだと思うけど、何故Perl/CGIなんだと問いつめたいよ。
451nobodyさん
03/08/23 00:44ID:12CD5sBt >>450
逆に、Perl/CGIだと何がだめなのか説明してみてください。
逆に、Perl/CGIだと何がだめなのか説明してみてください。
03/08/23 01:44ID:???
453nobodyさん
03/08/23 09:33ID:??? >>450
漏れはMysq;でPerl/CGIしてるけど、移植元がperlだったから単純に鯖の負荷軽減が目的だったりしたが・・・
それに、Phpだと複雑なソース書ききれんかったろうってのもあるわけだが、お前さんはなにでやれと?
漏れはMysq;でPerl/CGIしてるけど、移植元がperlだったから単純に鯖の負荷軽減が目的だったりしたが・・・
それに、Phpだと複雑なソース書ききれんかったろうってのもあるわけだが、お前さんはなにでやれと?
454nobodyさん
03/08/23 13:18ID:??? PHP使えよ。
455nobodyさん
03/08/23 16:29ID:IynKNpCX perlなんだが。
ある位置から数行くらい読み込む時、
10kbくらいのファイルと、300kbくらい(要するにでかい)ファイルでは
負荷に違いってあります?
open IN, ...;
for($i=0; $i<10; $i++){
$line = <IN>;
...処理
}
close IN;
みたいなプログラムでつ。
ある位置から数行くらい読み込む時、
10kbくらいのファイルと、300kbくらい(要するにでかい)ファイルでは
負荷に違いってあります?
open IN, ...;
for($i=0; $i<10; $i++){
$line = <IN>;
...処理
}
close IN;
みたいなプログラムでつ。
456nobodyさん
03/08/23 16:46ID:???457nobodyさん
03/08/23 19:02ID:V3x8NgSH >>453
Perlで書けてPHPで書けない「複雑ソース」って何?
Perlで書けてPHPで書けない「複雑ソース」って何?
458nobodyさん
03/08/23 19:07ID:??? LHA圧縮。
459nobodyさん
03/08/23 19:20ID:??? >>457
最近あまり追ってないんだが、
PHPってtermiosによる端末制御できたっけ?
fork()は出来るけどpipe()は出来たっけ?
あと、PHPはスコープが滅茶苦茶だから(まぁPerlも変だけど)
あまり大きいソースを多人数で書くのには向いてないと思う。
最近あまり追ってないんだが、
PHPってtermiosによる端末制御できたっけ?
fork()は出来るけどpipe()は出来たっけ?
あと、PHPはスコープが滅茶苦茶だから(まぁPerlも変だけど)
あまり大きいソースを多人数で書くのには向いてないと思う。
460455
03/08/24 10:10ID:XoFfp7Kp462455
03/08/25 11:33ID:??? でもどうやってx行目を見つけ出すの?
適当にread系のcgiを漁ってみたけど、やっぱ空読みしてるみたいだわ。
適当にread系のcgiを漁ってみたけど、やっぱ空読みしてるみたいだわ。
464nobodyさん
03/08/25 13:26ID:??? >>462
1、行ごとのファイルポインタを記録してある。
2、一定件数ごとに、ファイルポインタを記録してある。
3、2chは入力値の長さが決まっているから、固定長フォーマットにしてある。
これだけのアクセス数があるところで、空読みは考えにくいな。
板のトップで、数千行単位で空読みされるのですか?
1、行ごとのファイルポインタを記録してある。
2、一定件数ごとに、ファイルポインタを記録してある。
3、2chは入力値の長さが決まっているから、固定長フォーマットにしてある。
これだけのアクセス数があるところで、空読みは考えにくいな。
板のトップで、数千行単位で空読みされるのですか?
465nobodyさん
03/08/25 14:55ID:JfnblB1o >>464
今は知らないけど、今までのVerでは思いっきり空読みしてるよ。
↓以前のread.cgi空読み部分。
else
{
if(nn_st && lineNo < nn_st) continue ;
if(nn_to && lineNo > nn_to) continue ;
if(nn_ls && line < lineMax - nn_ls) continue ;
}
ファイルのオープンってI/Oの負荷がでかいから、
ファイルポインタを記録/読出しするのも結構な負荷になる。
あぼーんの処理も面倒になるし1000行空読みの負荷がたいしたこと
ない(実際やってみ)事を考えると、大してメリットはないと思われる。
ちなみに2chは固定長フォーマットではないし、板のトップは書き込み時
に更新されるだけだから、read.cgiより呼び出される回数は圧倒的に少なく
それほど問題にならない気が。
今は知らないけど、今までのVerでは思いっきり空読みしてるよ。
↓以前のread.cgi空読み部分。
else
{
if(nn_st && lineNo < nn_st) continue ;
if(nn_to && lineNo > nn_to) continue ;
if(nn_ls && line < lineMax - nn_ls) continue ;
}
ファイルのオープンってI/Oの負荷がでかいから、
ファイルポインタを記録/読出しするのも結構な負荷になる。
あぼーんの処理も面倒になるし1000行空読みの負荷がたいしたこと
ない(実際やってみ)事を考えると、大してメリットはないと思われる。
ちなみに2chは固定長フォーマットではないし、板のトップは書き込み時
に更新されるだけだから、read.cgiより呼び出される回数は圧倒的に少なく
それほど問題にならない気が。
467nobodyさん
03/08/27 01:27ID:??? useって宣言した場所によって読み込まれる時期が違うの?
それならJcodeなんかは先頭でuseせずに
送られてきたデータのチェック済ませてから読み込ませた方が良いのかな。
#チェックにJcode使うなら別だけど
それならJcodeなんかは先頭でuseせずに
送られてきたデータのチェック済ませてから読み込ませた方が良いのかな。
#チェックにJcode使うなら別だけど
468nobodyさん
03/08/27 02:23ID:???レスを投稿する
ニュース
- 【自維】鮭おにぎり198円に絶望、コンビニすら遠い存在に…「生き延びられない」物価高で広がる生活苦★5 [ひぃぃ★]
- 【サッカー】ブラジル戦、NHKは地上波なし 本田圭佑はBSで解説… 悲鳴続出「マジかよ」 地上波はフジテレビが生中継、解説は小野伸二 [冬月記者★]
- 【芸能】田中みな実、実名告白「めっちゃ格好いい」「インスタもフォローした」 W杯日本代表にメロメロも「狙ってないからね?」 [冬月記者★]
- 【サッカー】「世紀の談合マッチになる予感」J組の一戦が話題…ドローで両チーム決勝T進出の“異例事態” [ゴアマガラ★]
- 【サッカー】W杯の「日本VSブラジル」を他で例えると…Xで問いかけ話題「湘北vs山王」「明徳義塾vs大阪桐蔭」「ドトウvsオペラオー」★2 [o(^・-・^)o★]
- 野党が全法案審議に応じない方針、自民ベテラン「先が見通せず打開策がない」 国会緊迫化 [蚤の市★]
- 【高市悲報】今国会の全法案が廃案へ。。。飲みィのヤリィのしてきた結果がこれなのか・・・ [252835186]
- 経団連「年内には訪中して習主席と面会したい😢レアアースもタングステンももう限界😢」 ★2 [904151406]
- ハンドスピナー ← この急速に流行ったと思ったら好きな奴はAHDHの烙印をなぜか押されて急速に消えた哀れな謎の謎物体
- お台場、次々閉館してただの廃墟と化してしまう [709039863]
- 【画像】ロシア金髪メスガキの海水浴Vlog、いいべ [632966346]
- 【悲報】眞子さま、皇族としての気品のカケラも無くなってしまうwwwwwwwwwwwwwwwwwwww [802034645]