トップページ⇒php
1001コメント311KB

【php】part29【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/07/06(水) 09:57:54ID:0DucnAyH
・PHP全般の質問スレです。
・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
 http://www.php.net/
■日本 PHP ユーザ会
 http://www.php.gr.jp/
■PHP マニュアル
 http://www.php.net/manual/ja/
■PEAR マニュアル
 http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-10辺り

前スレでは、尾張の方でお世話になりました。
原因は唯のファイル名間違いでした。ダッセー俺OTZ

04864752005/09/21(水) 16:33:17ID:???
// イメージの影について、色の作成(グレー)と塗りつぶし
$col = ImageColorAllocate($im, 192, 192, 192);
ImageFilledRectangle($im, $SHADOW_MARGIN, $SHADOW_MARGIN, ($IMG_WIDTH + $SHADOW_MARGIN), ($IMG_HEIGHT + $SHADOW_MARGIN), $col);

// 背景について、色の作成(暗い赤)と塗りつぶした矩形を張り付け
$col = ImageColorAllocate($im, 160, 0, 0);
ImageFilledRectangle($im, 0, 0, $IMG_WIDTH, $IMG_HEIGHT, $col);

// 前景について、色の作成(暗い緑)と塗りつぶした矩形を張り付け
$col = ImageColorAllocate($im, 0, 160, 0);
ImageFilledRectangle($im, 0, 0, ($pct * $IMG_WIDTH / 100), $IMG_HEIGHT, $col);

// テキストの出力
$text_color = ImageColorAllocate($im, 255, 255, 255);
$string = "$pct%";
$font = 5;
ImageString($im, $font, ($IMG_WIDTH - strlen($string) * imagefontwidth($font)) / 2, ($IMG_HEIGHT - ImageFontHeight($font)) / 2, $string, $text_color);
04874752005/09/21(水) 16:34:44ID:???
// イメージの出力
if (ImageTypes() & IMG_GIF) {
Header("Content-type: image/gif");
Header("Cache-control: no-cache");
ImageGIF($im);
}
elseif (ImageTypes() & IMG_PNG) {
Header("Content-type: image/png");
Header("Cache-control: no-cache");
ImagePNG($im);
}
elseif (ImageTypes() & IMG_JPEG) {
Header("Content-type: image/jpeg");
Header("Cache-control: no-cache");
ImageJPEG($im, "", 10);
}
elseif (ImageTypes() & IMG_WBMP) {
Header("Content-type: image/vnd.wap.wbmp");
Header("Cache-control: no-cache");
ImageWBMP($im);
}
else {
die("イメージはサポートされていません");
}

// メモリの解放
ImageDestroy($im);
?>
04884752005/09/21(水) 16:36:09ID:???
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<body>
<form action="gd02-2.php" method="post"><p>
塗りつぶす割合は(0-100)?<input type="text" name="rate" size="4" maxlength="3" value="<?php echo $pct; ?>">%
<input type="submit" value="作成">

</p>
</form>
</body>
</html>
0489nobodyさん2005/09/21(水) 17:07:44ID:???
空行までのデータ読み込みがうまくいかないので質問します。
100行ほどのテキストデータがあり、そのなかの90行目だけが空行だったとします。
このとき、1から89行までを別の配列として取り出したいのですが

テキストデータが$textdata、取り出し先が$newarrayとして

for($i=0;$i<count($textdata);$i++){
if($textdata[$i]==""){break;}
$newarray[]=$textdata[$i];
}

または

$i=0;
while($textdata[$i]!=""){
$newarray[]=$textdata[$i];
$i++;
}

とやってみたんですが、どっちも90行目のみ抜けた99個の配列になってしまいます。
どうしたら89個の配列となって取り出せるんでしょうか(´д`;)
04904892005/09/21(水) 17:08:24ID:RvtD9P6V
すいません下げてしまいました。
0491nobodyさん2005/09/21(水) 17:10:38ID:???
>>475
// イメージの出力
をしているのに、その後でHTMLを出力しようったって、そうはイカの金玉。
04924892005/09/21(水) 17:16:49ID:???
自己解決しました、一行ごとに\nがついているので
それを考慮したらうまくいきました。
0493nobodyさん2005/09/21(水) 17:21:01ID:???
>>487
Header("Content-type: image/***");
このヘッダーの後は画像のデータとみなされますのでhtmlが表示されるわけがないのです。

if (ImageTypes() & IMG_GIF) {
$file = "image.gif";
ImageGIF($im、"./img/".$file);
}
elseif (ImageTypes() & IMG_PNG) {
$file = "image.png";
ImagePNG($im, "./img".$file);
}

とかして一旦ファイルに保存して
echo '<img src="./img/'.$file.'">';
で表示すればいい
0494nobodyさん2005/09/22(木) 01:02:30ID:???
//--------------------following html--------------------
<html>
 <head></head>
 <body>
  
  <p>画像↓</p><br />
  <img src="http://hoge/picture.php?abc=piyo&def=punyu "><br />
  <p>エトセトラ・・・</p>
 </body>
</html>

//--------------------following picture.php--------------------
<?php
 /*画像作成コード*/
 header("Content-type:image/***");
 print($img);//$img : 画像バイナリ
?>

こうならいけるabcとかGETはjavaで弄るか
htmlの前にphpおいて適当に変数にパラメタをぶち込んでechoするとか
0495nobodyさん2005/09/22(木) 17:26:18ID:???
画像をphpで生成するなら、画像を作るphpとページを表示するのに分けたほうがいいんでない?
0496nobodyさん2005/09/24(土) 04:46:04ID:???
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
↓
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
0497nobodyさん2005/09/24(土) 14:06:31ID:9gGfIW9p
ページの読み込み完了して
いったん表示してから
また後のを読み込むことは
PHPでできますか?
0498nobodyさん2005/09/24(土) 14:08:20ID:???
スクリプト終了しなけりゃいくらでも出せるよ
0499nobodyさん2005/09/24(土) 14:40:12ID:9gGfIW9p
>>498
どういう関数でそれができますか?

0500nobodyさん2005/09/24(土) 14:42:48ID:h0yprU63
ファイル書き換えで下記の処理したら表示したときに新規に書き込んだものだけを連続して書き込んでしまいます・・・。
解決法をできれば。・゚・(つД`)・゚・。

if($_POST['send']=="送信")
{
if($_POST['tmp']!=="")
{
$writedata="";
$fp=file($bbs_log);
foreach($fp as $rec)
{
$writedata.=$_POST['maxcnt'];
$writedata.=",";
$writedata.=$_POST['user_name'];
$writedata.=",";
$writedata.=$_POST['user_mail'];
$writedata.=",";
$writedata.=$_POST['delpass'];
$writedata.=",";
$writedata.=$_POST['tmp'];
$writedata.="\r\n";
}
$fp=fopen($bbs_log,"w");
fwrite($fp,$writedata);
fclose($fp);
}
}
0501nobodyさん2005/09/24(土) 14:50:31ID:???
>>500
マニュアルからfopenのmode=wの部分を抜粋。
> 'w' 書きこみのみでオープンします。ファイルポインタをファイルの 先頭に置き、ファイルサイズをゼロにします。
> ファイルが存在しない 場合には、作成を試みます。
0502nobodyさん2005/09/24(土) 15:08:44ID:???
>>500
何をやりたいのか良く判らないな。
$bbs_log という名前からするとファイルの末尾に追加するのが正しいように思えるんだけど、
foreach($fp as $rec) でループさせると元のファイルの行数分、新規に書き込んだ行が
複製されてしまうよね。
「ファイル書き換え」って書いているから、その言葉が正しいとすると書き換える条件が
どこにも出てこないし。。。
元のファイルの内容、新規データの内容、処理後の期待するファイルの内容の3つを
カキコしてもらった方が早いんではないかな。
0503nobodyさん2005/09/24(土) 15:31:58ID:aOKQyrNZ
整数型の変数の中身を、
頭をゼロパディングして文字列に入れたいのですが、
どうやったらいいですか?
0504nobodyさん2005/09/24(土) 15:40:49ID:???
>>503
str_pad()
05055032005/09/24(土) 16:02:49ID:???
>>504
解決しました!
ありがとうございます!
0506キラーハンター2005/09/24(土) 16:55:39ID:3ud88b51
PHPにより、動画をFLASHに変換の仕方を教えていただけませんでしょうか。
また、その動画を3gppやAMCに変換するやり方(またはモジュール)も知っておられる方は
教えていただけると幸いです。
よろしくお願いいたします。
0507nobodyさん2005/09/24(土) 17:23:28ID:???
すげぇな、PHPはそんなことまでできるのか。
0508 2005/09/24(土) 23:07:41ID:???
copy("hogehoge.avi","hogehoge.swf");
0509nobodyさん2005/09/25(日) 10:01:58ID:???
>>506
つ movie2flash()
0510nobodyさん2005/09/25(日) 15:12:41ID:lpUMQVsI
セッション変数にどこまで格納すべきかをお伺いします。
PHP4.311、MySQL4.023でセッションはDBに積んでいきます。

ポータルサイトなどでみる、ページ表示に関わるユーザのカスタマイズ値(地域選択、興味ある
分野の優先表示、好みのCSS選択などのこまごまとした変数群)は全部セッションに格納すべきでしょうか?
それとも、最低限の情報(ユーザを一意に限定出来るメアドと認証状態)のみを格納して、
あとは認証がTrueの場合のif文の中であらためてDBから引っ張り込んでくるべきでしょうか?

前者の方がいかにもすっきりしますが、なんでもかんでもセッションに格納すんなという情報も
書籍などで見受けられます。
「複数ページで必要な変数は全部ぶっ込め派」と「最低限格納して、あとは引っ張ってくる派」は
どちらが主流なのでしょうか?
0511nobodyさん2005/09/25(日) 16:25:50ID:???
javascriptと連携して、画面の解像度や色深度を取得する方法を教えてください
0512nobodyさん2005/09/25(日) 16:49:29ID:???
>>511
それらの値の取得または計算によって算出するのはJavaScript側でする作業だよ。
その上でそれらの値をform.submit()などを使ってPHPに送出すればよい。
0513nobodyさん2005/09/26(月) 07:53:08ID:???
>>512
ありがとうございます。
screen.widthなどで取得するところまではわかったのですが、フォームではなく、これをページ読み込み時に自動的に送る方法がよくわかりません。
0514nobodyさん2005/09/26(月) 08:14:56ID:???
//513
ページ表示時にJavaScriptを実行させて、そのデータをもった別のリクエスト(img srcで画像呼び出し)を鯖に送る。
<!--
document.write("<img src='〜log.php?"
 // 解像度等を name=valueの形式に整形して文字列連結
 + "' width=1 height=1>");
// ->
0515nobodyさん2005/09/26(月) 11:10:19ID:???
>>510
一時的な情報はセッションに保存してます。
異なるセッションでも参照するならDB
0516nobodyさん2005/09/26(月) 12:11:34ID:???
>>510
結局は、管理人の好みな希ガス。

業務用とかであれば、誰がどのCSSを好んで使ってるかとか、
そういった、いわゆるマーケティングもしないといけないから、
結局ユーザー側に発行してもDBにも入ってる、じゃあDBだけでいいか、ってなる事が多い。

発行するデータ量と、発行対象になるおよそのクライアント数によっても、
違いはあると思うし、それぞれだと思うよ。
0517nobodyさん2005/09/26(月) 13:48:22ID:???
PHPのセッション機構側でユーザオブジェクトを全部管理してると、
言語を変えましょうかという話が出たとき死ぬので、手広くはやれないと思う。
0518nobodyさん2005/09/26(月) 14:08:00ID:???
perlからphpに移行中なのですがREMOTE_ADDRは取得できるのですがHTTP_CACHE_CONTROLや
HTTP_FORWARDED変数はどのように取得するのでしょうか?
05195102005/09/26(月) 14:10:23ID:???
>>515-517
レスありがとうございます。
書籍には書いてない実務になじんだ意見、参考になります。
0520nobodyさん2005/09/26(月) 14:18:18ID:???
>>518
そのヘッダが存在するなら$_SERVER[ ]に代入されている。
普通はないけどね
0521nobodyさん2005/09/26(月) 15:26:30ID:???
>>520

ありがとうございます。無い場合、エラーログに記録されてログがどんどん肥大化してしまうのですが、
無い場合でもエラーを出さないコーディングの方法はないでしょうか?
0522nobodyさん2005/09/26(月) 15:34:25ID:???
>>521
is_set()で確認。
E_NOTICEレベル(定義無しで参照した時はこのレベルに含まれる)のエラーを記録しないようにするって手もあるかな。
0523nobodyさん2005/09/26(月) 15:38:41ID:???
is_set()つー関数とか構造はなよ

isset()で未定義でないことを確認してから処理する(オススメ)
if (isset($_SERVER['HTTP_HOGE']) && 〜)

エラーを抑止する(ハマることも)
error_reporting(E_ALL ^ E_NOTICE);

getenvを使う(環境変数なら)
getenv('HTTP_HOGE')

05245222005/09/26(月) 15:49:14ID:???
あらま。やだ。はずかち
0525nobodyさん2005/09/26(月) 22:36:36ID:???
>>518
こんなのもあるよ
@ $_SERVER['HTTP_〜']
セットされてない場合、エラー吐かずにnullとして扱われる
(文字列として扱えば空文字、数値として扱えば0として扱われる)
0526nobodyさん2005/09/27(火) 12:11:14ID:???
>>523
細かいことだけど、E_ALL ^ E_NOTICE って本当は行儀いい書き方じゃないよな。
公式マニュアルにもそう載ってるから困ったもんだ。
それが悪いとまでは言わないが、意味から考えても、汎用性から考えても、E_ALL & ~E_NOTICE でしょ。
0527nobodyさん2005/09/27(火) 13:26:40ID:dcy1hLQR
 セッションに関してどなたか <(_ _)>

 フレームなしで、セッションはウマくいくのですが、
 フレーム内に表示すると別々のSIDとなります。
 どうすればよろしいのでしょうか?
 
┌───┐ ┌───┐ ┌───┐
│A.php │.>│B.php │.>│C.php │.>・・・
└───┘ └───┘ └───┘
  セッション変数は、うまく流れる(全て同一SID)

  ↓
 フレーム内に表示

┌┬───┐ ┌┬───┐ ┌┬───┐
││A.php │.>││B.php │.>││C.php │.>・・・
└┴───┘ └┴───┘ └┴───┘
  セッション変数が渡らない
  (全部別々SID)
0528nobodyさん2005/09/27(火) 13:46:44ID:???
>>526
確かにE_ALL ^ E_STRICTなんて書くやつがいるかもしれない。
ということでマニュアルにはちゃんと E_ALL & ~E_NOTICE が使ってありますぜ。
http://jp.php.net/manual/ja/ref.errorfunc.php
0529nobodyさん2005/09/27(火) 13:51:14ID:???
最新版(4.4.0 5.0.5)のphp.iniの記述もE_ALL & ~E_NOTICE に変わってるね
いつ変わったんだろう。
0530nobodyさん2005/09/27(火) 13:54:33ID:???
>>527
<frame>タグに名前付けて<form>にtarget指定すればいいんじゃないかな
05315272005/09/27(火) 14:23:15ID:???
>>530さん、レスありがとうございます。

  ┌┬───┐
  ││A.php │
  └┴───┘
       ↑
       right.htm

なので、A.php、B.php ・・・ に target指定を追加して
<form method="post" action="*.php" target="right.htm">
 と、記述しましたが、、
 
 駄目です。
0532nobodyさん2005/09/27(火) 14:32:05ID:???
<frame name="right">
<form target="right">
こんな感じにしたらって事。
0533nobodyさん2005/09/27(火) 14:32:33ID:???
         __,.-‐v‐、/^ン^ヽ
     ,. -一'´ ,fl〃リk'ニヽ、
    /   ,-、 '}jリ'^´  レ',ハヘ
   '     ,」ハl|レ'    /,:仁テ,ハ、
       j厂リ'-、、   ッ一' ̄´ l
       ∠_−、>∠、       |
      ∠_ー 、ン´ ̄`ll     l
    r‐イ−、ン'´     リ    丿
   V/  / ぃ
     \/__ム〉
05345272005/09/27(火) 14:43:20ID:???
ありがとうございます。

<form ・・・ action="*.php?<? echo htmlspecialchars(SID); ?>"

 と、SIDを明示しましたらOKでした。 
セキュリティ上、かなりちょっと不安ではありますが・・・
0535nobodyさん2005/09/27(火) 15:11:14ID:???
>>529
このへんの影響じゃまいか

>With PHP > 5.0.0 E_STRICT with value 2048 is available. E_ALL does NOT include
error level E_STRICT.
0536nobodyさん2005/09/27(火) 15:27:38ID:???
どうだろう?error_reporting()のところ
http://jp.php.net/manual/ja/function.error-reporting.php
は依然xorだな
>>528のとこはand notだけど元々はどうなってたんだろう?

とりあえずxorやめれってこったわな
0537nobodyさん2005/09/27(火) 15:56:44ID:???
俺の場合個々の.htaccessで設定するのが多いので、
スクリプト内で設定する場合でも、合わせて数値で指定しちゃってるな。
>エラーレポートレベル
0538nobodyさん2005/09/27(火) 18:38:12ID:???
>>527
フレームの中が別ドメインだったりしないかい?
cookieが上手く渡っていないんじゃない?
05395272005/09/27(火) 22:00:54ID:???0
>>527
これかな。。
 でもどうやって使うのか知らないけど。

session_write_close

セッションでフレームセットを使用する場合、
このロックのためにフレームがひとつずつロードされるような経験をするでしょう。
http://manual.xwd.jp/function.session-write-close.html
0540nobodyさん2005/09/27(火) 22:09:10ID:oCiYbKLV0
変数のあとの空白を無くしたいのですが。。
echo "これは$home 円です";
0541nobodyさん2005/09/27(火) 22:19:16ID:???0
>>540
どちらでも好きな方で。
echo "これは${home}円です";
echo "これは" . $home . "円です";

キツイ言い方かもしれないが、下段の方法が思いつかないのは
プログラムを書く人間としてはチトツライと思う。
0542nobodyさん2005/09/27(火) 22:44:27ID:???
俺様用メモ
<?php
function getmicrotime(){
 list($usec, $sec) = explode(" ",microtime());
 return ((float)$sec + (float)$usec);
}

$time_start = getmicrotime();
$data = '';
$home = '';
for ($i=0; $i < 1000000; $i++){
 $data = "これは".$home."円です"; // 3.41249799728
// $data = 'これは'.$home.'円です'; // 3.57745289803
// $data = "これは${home}円です"; // 6.93447685242
// $data = "これは$home 円です"; // 7.57996416092
}

$time_end = getmicrotime();
$time = $time_end - $time_start;
echo $time;
?>
0543nobodyさん2005/09/27(火) 22:49:34ID:???
 $data = "これは".$home."円です"; // 3.41249799728
より、
// $data = 'これは'.$home.'円です'; // 3.57745289803
の方が遅いのが謎だなー。
05445402005/09/27(火) 22:59:47ID:oCiYbKLV
あ!皆さん有難うございます。
まだ始めて三日なもんで。。
ifとforとswitchしか使えない身です。。。。
本当に有難うございます
0545nobodyさん2005/09/27(火) 23:07:35ID:???
>>543
そんなもんただの誤差。大抵はシングルクォートの方が早い。
ただ>>542から言えることは、シングルクォートとダブルクォートを躍起になって使い分けてる香具師は無意味ってことだな。
0546 2005/09/27(火) 23:34:31ID:???
printf("これは%d円です",$home);

なんて使わない?
0547nobodyさん2005/09/28(水) 03:02:31ID:???
optimizer突っ込むとその辺最適化してくれるんじゃないかな
うちだとこんな感じだし、それぞれ幅が上下0.05sec程度あるから、誤差だな
//$data = "これは".$home."円です"; // 1.72963690758
//$data = 'これは'.$home.'円です'; // 1.76355910301
//$data = "これは${home}円です"; // 2.18645095825
//$data = "これは$home 円です"; // 2.1633310318

>>546
関数呼び出しはちょいと遅かった
0548nobodyさん2005/09/28(水) 07:16:13ID:???
チラシ、チラシ、っと。

気になって色々測定してみたら、総じてシングルクォートよりダブルクォートの方が早いことがわかった。
まずシングルクォートには謎のオーバーヘッドがあるらしく、
for ($i = 0; $i < 1000000; $i ++) '';
for ($i = 0; $i < 1000000; $i ++) "";
を比べると、だいたい2.46秒vs2.44秒でダブルクォートのほうが0.02秒ほど早い。
(ってことは一個につき20ナノ秒しか変わらんわけだが・・・)

それから
'aaaaaa ... aaaaaa'
"aaaaaa ... aaaaaa"
って感じでaを1000000個並べてみたけど、8.03秒vs8.02秒でやっぱりダブルクォートの方が早い。

自分は今まで、変数の展開も改行もタブも含まない場合には意識的にシングルクォートを使うようにしていたが、実はそれは無意味であることがわかった。
たぶんシングルクォートによる文字列リテラルの表記の利点は、「$」および「"」をエスケープせずに使える、という点以外には全くないのではないだろうか。
$_SERVER['REMOTE_ADDR']とかさ、$_SERVER["REMOTE_ADDR"]でいいじゃん。
echo 'Hello, World'まで書いてみたら、「あ、やっぱ改行入れようかな」、なんてダブルクォートに直すのとか馬鹿みたいじゃないか。

とにかく測定には誤差がかなりあるので「ダブルクォートのほうが早い」という言い方は不適切かもしれない。
それでも、変にシングルクォートとダブルクォートを使い分ける悪習慣は治して、なるべくダブルクォートに統一するほうが効率や読みやすさも向上するだろうなぁと思った。

おしまい。
0549nobodyさん2005/09/28(水) 07:54:01ID:???
>>548
とりあえずversionと測定に使ったCPUは書いといた方が良いぞ
0550nobodyさん2005/09/28(水) 07:55:07ID:???
自分でコンパイルしたんだったらコンパイラも。
0551nobodyさん2005/09/28(水) 10:05:16ID:???
>>549
(゜д゜)<あらやだ
>>548はPHP5.0.4/WinXP/Athlonでやったんだけど、
レンサバのPHP4.3.11/Linux/i686でやってみたらシングルクォートのがちと早いみたい。
まー100万みたいなバカデカイ数でやって0.01秒差とかだし、ダブル・シングルのどっちを使うかでパフォーマンスに影響を与えることはなさそう。
環境依存な面もあるのかもしれないけど、大差ないでしょう。たぶん。
0552nobodyさん2005/09/28(水) 10:33:09ID:???
>>551
それってパースにかかる時間の差では?
100万回も200万回も同じ差しか出ないならまず間違いない。
0553nobodyさん2005/09/28(水) 11:12:54ID:???
>>552
パースにかかる時間を測定していることになってるのは間違いないね。
むしろ実は個人的に気になっていたのはその部分で、ダブルクォートだと変数の展開とかあるので余計な処理が挟まってるんじゃないかと危惧してたのであります。
つーか何度か色々な計測してみたけど、たぶんこう結論付けるのが一番手っ取り早い。

ダブルクォートもシングルクォートも変わんねぇ!!

>>548で「微妙に差が出る」って書いちゃったから、そこが引っかかってた人ももしかしたらいたのかな・・・orz
どちらかというと「ダブルクォートはシングルクォートより遅いのかどうか」ってのが自分の気になっていたことなので、紛らわしい表現スマソ。
一応>>548を書いた時点では、それぞれ100回ずつ全く同じ処理を繰り返して平均出してたんだけど、そのときにダブルクォートの方が早いかのように思ったから調子に乗ってチラシの裏のつもりで書いたわけ。
もう一度言っておくけど、結論は「どっちも変わんねぇ」ってことでよろしく。

度々長文で失礼。
0554nobodyさん2005/09/28(水) 11:22:46ID:Vv+BhbqS
もっとロースペックのマシンで計測した結果キボン
0555nobodyさん2005/09/28(水) 13:06:02ID:???
Apache2 + PHP5.0.4 + WinXP Pro + Pen4 1.7GHz + 512MB
>>542 3000000回 3回〜5回平均
5.4427189827、5.31593894958、9.08038902283、9.09205913544
>>546 sprintfで$dataに代入 他同
9.70766806602
>>548 同
1.96628095627〜1.93123102188 、1.95970702171〜1.91702103615
0556nobodyさん2005/09/28(水) 13:18:11ID:???
ちなみに、>>542をヒアドキュメントで
Fatal error: Maximum execution time of 15 seconds exceeded (w
1500000回(半分)の結果 8.34855318069
0557nobodyさん2005/09/28(水) 13:35:06ID:???
つまり

$data = "これは".$home."円です";
$data = 'これは'.$home.'円です';

の方が

$data = "これは${home}円です";
$data = "これは$home 円です";

より早いってことでFA?
0558nobodyさん2005/09/28(水) 13:38:46ID:???
でも実際の速度差はどれも誤差みたいなもんだね。
0559nobodyさん2005/09/28(水) 13:49:54ID:???
まあ、クオートに気を使うより設計とかアルゴリズムを見直すほうが建設的だな。
0560nobodyさん2005/09/28(水) 14:05:38ID:???
Apache2.0.54 WinXP Pro Pen4 2.4GHz 1GB
>>542 3000000回 3回〜5回平均
PHP5.0.5
3.1555199146271 3.1570108413696 6.9906218846639 8.0708059469859
PHP5.1.0b2
1.623534154892 1.6456735610962 5.2970746358236 5.7716292540232
0561nobodyさん2005/09/28(水) 14:06:12ID:???
>>557
結果から見るとそうなるね。
" "の中に $ が現れると変数展開の準備(実際には変数じゃなかったとしても)とかで
結構道草を喰うんじゃないかな。

$data = "これは".$home."円です";   // 3.41249799728 . を使って結合
$data = "こ$ れは".$home."円です"; // 8.35340023041 ""内の$は文字
$data = "こ$ れは$home 円です";   // 9.865629673   ""内の$は文字。. を使って結合

誰かがpeclのparsekitあたりで中間コード(opcode)を出してくれたらさくっと結論がでそうな気が。
05625612005/09/28(水) 14:08:20ID:???
を。↑ 2,3行目のコメント部分は逆。
0563nobodyさん2005/09/28(水) 14:11:52ID:???
echo の場合は
echo "これは".$home."円です"; // 結合
より
echo "これは",$home,"円です"; // 順番に出力
のが速かったりするんだな。
0564nobodyさん2005/09/28(水) 15:40:06ID:???
APCでパース済みの実行すれば速度差はなくなるはずだね。

>>559
> まあ、クオートに気を使うより設計とかアルゴリズムを見直すほうが建設的だな。

異議なし。
0565nobodyさん2005/09/28(水) 18:25:29ID:???
?>
あほ
<?php
0566nobodyさん2005/09/28(水) 18:30:24ID:???
Perlだと連結演算子を使うと遅いんだよな…
0567nobody2005/09/28(水) 20:50:43ID:bZ/NcdOD
キャッシュについて

■環境
- Apache2.0.54 + PHP5.0.5 + eAccelerator0.9.3
- 確認ブラウザはFirefoxとIE6

■phpinfo() :キャッシュに関係しそうなところ
- session.cache_limiter : no-cache
- session.cache_expire : 0
- _SERVER["HTTP_CACHE_CONTROL"] : max-age=0

■問題のページ
- session関数を使ってログイン管理(cookie)
- page.php?mode=*** で動作変更(トップページ表示・フォーム表示・投稿画像確認ページ表示・変更処理など)
- やることはtest.jpg の管理
- トップページ(page.php?mode=top)で test.jpgを表示

■やってみたこと
- session_startの前にsession_cache_limiter('nocache');
- 出力ページの<head></head>内にmetaでキャッシュ無効の指定
- firefoxのliveheader で ヘッダーの確認(Cache-Control・Pragmaともにno-cacheだった)

フォームから新しい画像をアップロードして test.jpg を書き換えて完了画面表示後、リンクをクリックしてトップページに戻ると変更前の画像(キャッシュ)が表示されます。
ブラウザをリロードすることで変更後の画像が表示されます。
別サーバ(ほぼ同じ環境)でsession関数なしにやった場合はキャッシュが表示されることはなかったです。他のサイトでもそういったことは起きません。
session関数を使った上でこのキャッシュを無効にするにはどうすればいいのでしょうか?
0568nobodyさん2005/09/29(木) 00:43:55ID:???
自己解決
phpで生成されるページの問題というよりは読み込んだtest.jpgのヘッダーの問題でした。
その方向で調べて見たら、解決しました。
失礼しました。
0569nobodyさん2005/09/29(木) 07:12:06ID:???
二次元配列で行を維持したまま列をソートすることはできますか?
0570nobodyさん2005/09/29(木) 07:34:48ID:???
>>569
列の値によって行を並べ替えるのをソートというのではないでしょうか
行を維持ってどういう意味
0571nobodyさん2005/09/29(木) 09:45:57ID:???
>>569
いまいち意味わからんので、次の中から好きなの使え

sort (普通に値の比較でソート)
ksort (キーの比較でソート)
asort (連想配列の「キー=>値」関係を維持して、値の比較でソート)
rsort krsort arsort (逆順バージョン)
usort uksort uasort (比較に自作コールバック関数を使用できるバージョン)

どれを使えばいいか自分で判別できない場合は、適当に配列のサンプルを出して質問してくれ。
0572nobodyさん2005/09/29(木) 11:08:17ID:???
>>569
こういうことかな
<?php
$a[0] = array(3,7,1,4);
$a[1] = array(10,5,45,3,4);
$a[2] = array(6,8,2,1,4);
var_dump($a);

foreach($a as $key=>$val) {
$a[$key] = sort($val);
}
var_dump($a);
?>
0573nobodyさん2005/09/29(木) 14:44:46ID:???
行要素の関係を維持したまま
列の特定の要素でソートするって事?
(そんな簡単じゃないか・・・普通二次元配列使わないしな)

code value --> code value
01  200    03  100
02  300    01  200
03  100    04  250
04  250    02  300





0574nobodyさん2005/09/29(木) 22:41:07ID:???
>>569
つarray_multisort
動作が複雑だが複雑なソートを一発で済ませられる優れもの

>>573
n次元配列、よく使ってるんですが・・・。データ形式が悪い?
n次元配列とか配列の入れ子化なんてphpらしいと思うんだけどな
0575nobodyさん2005/09/29(木) 23:28:13ID:???
ファイルをincludeする際、変数を渡すことは可能でしょうか?
GETメソッドで渡せないかと思い、

include("config.php?id=$num");

としてみましたが、渡っていないようでした。
何か方法がありましたら、ご教授ください。。
0576nobodyさん2005/09/29(木) 23:33:17ID:???
>>n次元配列
Cで考えてました、phpって配列の要素の型は統一されてなくて
良かったんですね。それなら構造体とかクラス使うかなと思って。
0577nobodyさん2005/09/29(木) 23:38:54ID:???
>>575
マニュアルのincludeのページを見てごらん。
0578nobodyさん2005/09/29(木) 23:41:04ID:???
あ・・・間にレスが、ついでに。

>>575
http://php.s3.to/man/function.include.html#AEN4828
PHP 4.3.0より前のバージョンの Windows版PHPは、現在この関数に関してリモートファイルアクセス機能をサポートしていません。
これは、allow_url_fopenを有効にした場合でも同様です。

//include("config.php?id=$num");
ではローカルのinc_path/config.php?id=$num
というファイルを探しに行くので�_とのことです。
0579nobodyさん2005/09/30(金) 07:40:13ID:???
>>575
変数はそのまま使えるだろ
0580sage2005/09/30(金) 10:11:34ID:RUxAZUA/
アシアル社のフリーウェアのjpgraphを使い始めたのですが、
サンプルソースそのままコピペで試してるのですが、
Fatal error: Class 'Plot' not found in /home/mizuno/WWW/jpgraph-1.19/src/jpgraph_scatter.php on line 64

Fatal error: Class 'Graph' not found in /home/mizuno/WWW/PHP/test/sanpu.php on line 8

と出てしまいうまく起動できません。
文からクラスが無いのは分かるんですけど、改善策などありましたら教えてください。
0581nobodyさん2005/09/30(金) 11:46:14ID:???
>>580
require "jpgraph.php"
0582nobodyさん2005/09/30(金) 13:50:17ID:???
>>575
何回聞いても同じ。答えは過去に出てるから君の理解力が足りないだけ。
0583nobodyさん2005/09/30(金) 14:15:09ID:???
imagemagickって、PHPでも使えますか?
05845832005/09/30(金) 15:09:55ID:???
PHPでの
ttp://www.ss.iij4u.or.jp/~somali/web/im_example/write.html
な感じのサンプルが欲しいのですが…

1個でいいので、誰か書いていただけないでしょうか。
0585nobodyさん2005/09/30(金) 15:16:35ID:???
>>583
外部プログラムとして実行することしかできない。
GDみたいなのと連携するならファイルを通すしかないね。
05865832005/09/30(金) 15:26:02ID:???
>>585
レス、ありが�d。
でも、ごめんなさい。
もちょっと詳しく説明してもらっていいですか?
■ このスレッドは過去ログ倉庫に格納されています