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

くだすれPHP(超初心者用)

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/06/12(月) 14:06:01ID:???
このスレッドは、他のスレッドでは書き込めない超低レベル、 
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 
PHP使いが優しくコメントを返しますが、 
お礼はPHPの布教と初心者の救済をお願いします。 

PHP Home Page 
http://www.php.net/
0421nobodyさん2006/09/16(土) 19:56:59ID:???
途中で投稿しちゃった。
こう書いたのですがうまくいきません。
おしえてください
0422nobodyさん2006/09/16(土) 21:34:41ID:???
>>420
PEARのHTTP_Requestをつかったら?
0423nobodyさん2006/09/17(日) 04:45:08ID:7OIeS9Or
echo "書き込み";
$fp = fopen('aaa.txt','w');
fwrite($fp,$f_raw);
fclose($fp);

こんな単純な書き込みなのですが、
何故かaaa.txtと言うファイルが書き出されません。
ルートディレクトリにもカレントディレクトリにもありません。
なにかphp.iniに設定すべき所があるのでしょうか?
それとも、プログラムミスなのでしょうか?
0424nobodyさん2006/09/17(日) 04:56:14ID:???
fopenに失敗した場合は、E_WARNING レベルのエラーが出る筈なんだが。
0425nobodyさん2006/09/17(日) 05:48:32ID:???
助けてください。。。
とある理由でPOSTで数M(10M以下)のデータを送り
fopen、fwriteで書き出しするプログラムなんですが・・・。
完了に2分以上掛かる上、UNIXマシンでtopコマンドうつとCPUは80%くらいを食っています。。。

こんなもんなんでしょうか?
転送自体はローカルでテストしてるんで、問題ないんですが・・・・。

それとも、メモリが少ない設定になってる為等でしょうか?
どちらにせよ。POSTされた数Mのデータを高速にファイルに書き出す方法を探しています。
よろしくお願いします。
0426nobodyさん2006/09/17(日) 06:07:51ID:???
http://ns1.php.gr.jp/pipermail/php-users/2004-April/021685.html

確かにたまにこういう書き込みを見る。
PHPのfopen()やfwrite()が遅いのは、やっぱしょうがないのかな・・・

#にしても、遅すぎだとは思うけど
0427えがみボンバイエイ2006/09/17(日) 07:08:51ID:???
<?php
require_once("XML/RSS.php");
$rss=new XML_RSS("http://manabekawori.cocolog-nifty.com/blog/index.rdf";);
$rss->parse();
?>
<h2><?php print(mb_convert_encoding( $rss->channels['title'],"EUC-JP","auto")); ?>
</h2>
<?php foreach($rss->items as $item){ ?>
<?php print(date(($item['dc:date']))) ?> <a href="<?php print($item['link']); ?>" target="_blank">
<?php print(mb_convert_encoding($item['title'],"EUC-JP","auto")); ?>
</a><br>
<?php }
?>


と書くと
2006-09-17JST00:41:11+09:00  夫婦別姓制度はまだなのか
2006-09-13JST22:46:23+09:00  おやすみ投稿か
2006-09-08JST00:08:49+09:00  カッチカチやぞ
2006-08-31JST22:40:11+09:00  エロかわ…?

言う風に表示されるのですが、
JST00:41:11+09:00の部分を削りたいのですが、
どうすれば宜しいか分かる方いらっしゃいましたら宜しければ教えていただけると幸いです。
0428nobodyさん2006/09/17(日) 13:55:08ID:???
explodeでJを指定して[0]をprintしてやればいいかも。
0429nobodyさん2006/09/17(日) 15:59:12ID:X/s21ZZr
すみません、Linux上でfindを実施してphpの拡張子がhitした場合に、
行頭に#!/usr/bin/php5を一括挿入するスクリプトを
作成したいと思いますが、どのように書けばよろしいでしょうか?

--スクリプト(パイプで渡せばいいと考えましたがこの先はどうした方がよいでしょうか?)
find * -name *.php |
0430nobodyさん2006/09/17(日) 17:19:12ID:???
こんな感じで出来なかったっけ?
出来なかったらゴメン
% php < `find * name php `
0431nobodyさん2006/09/18(月) 02:05:26ID:???
Sqliteで扱うデータで、デスク容量をカウントするのがあって
ギガとかになるので、バイト単位だと
1073741824B=1Gなので、INTEGERだと格納出来ません。
こういう用途だと、どうすればいいのでしょうか?
SQiteは型非依存だと聞いたのですが、型を指定しなければ良いと言う事でしょうか?
0432nobodyさん2006/09/18(月) 02:18:16ID:???
SQLiteスレ行けといいたい所だが、
バイト単位でだと、扱うのはあまり好ましくないから。
どうせギガレベルなら、メガ単位で管理すれば?
0433nobodyさん2006/09/18(月) 03:03:17ID:???
細かくデータ量を管理したいなら

class DataSize{
  private digitGigaByte;
  private digitMegaByte;
  private digitKiloByte;
  private digitByte;

/* 以下メソッド定義 */
};

とかやって自前のクラスと操作メソッド作ったほうがいいんでない?
0434nobodyさん2006/09/18(月) 05:50:35ID:0wioqDk7
質問です
mkdir('dir', '0600');
など、パーミッションを指定できるメソッドで作成したファイルやディレクトリが、この設定が反映されません。
具体的には、上の例の場合、411のパーミッションのdirと言うディレクトリが出来上がります。
何か設定すべきところがあるのでしょうか?
一切の書き込みが出来ないので、何も出来ません。。。
0435nobodyさん2006/09/18(月) 14:19:10ID:???
mkdir('dir', 0600);
だめだったらごめんね
0436nobodyさん2006/09/19(火) 01:37:52ID:???
空行を含んだファイルを

$fi = file("aaa.dat");

で読み込んでから、
空行を抜いて表示したりしたいのですが、
やりかたがわかりません。

for ($i=0;$i<9;$i++) {
if ($fi[$i] != "" ) { print "$fi[$i]<br>";}
}

「""」のところを「\n」で試したりしましたがだめでした。
どうすれば良いのでしょうか。
0437nobodyさん2006/09/19(火) 01:51:17ID:???
>>436
$fi = array_map('rtrim',file('aaa.dat'));
for ($i=0;$i<9;$i++) {
    if ($fi[$i] != "" ) { print "$fi[$i]<br>";}
}
0438nobodyさん2006/09/19(火) 05:24:38ID:???
っていうか、そういうメソッドがあったような・・・
0439nobodyさん2006/09/19(火) 05:45:57ID:???
>>436
$fi = file('aaa.dat');

foreach($fi as $value){
  if(trim($fi) == '') continue;
  出力処理
}

>>438
一々突っ込むほどのことではないかも知らんが、メソッドは一般にクラスのメンバ関数のことだと思うぞ。
0440nobodyさん2006/09/19(火) 05:46:44ID:???
if(trim($fi) == '') continue; → if(trim($value) == '') continue;

な、勿論。
0441nobodyさん2006/09/20(水) 09:19:03ID:HL0PU+Ol
質問お願いします。

MySQLに予め登録したテキストを呼び出してmb_send_mailで配信というのを
やりたいんですが、改行なしになってしまいます。
改行を入れたい所に\nを入れてDBに登録したんですが、うまくいきません。
何を使えば改行が入るでしょうか?
0442nobodyさん2006/09/20(水) 11:08:19ID:???
>>441
改行コードを<LF>に統一
0443nobodyさん2006/09/20(水) 14:42:19ID:HL0PU+Ol
>>442
PHPスクリプトの改行コードはLFに統一してるんですが、MySQLにも何か改行コードを
指定するんでしょうか?
04444422006/09/20(水) 15:00:36ID:???
>>443
以下のコードをmb_send_mailの直前に入れて試してごらん。
$bodyってのはメール本文ね。MySQLから取り出したテキストを$bodyに入れて。

$body = str_replace("\r\n", "\n", $body);
$body = str_replace("\r", "\n", $body);
0445nobodyさん2006/09/21(木) 14:53:07ID:???
クロスサイトスクリプティング対策についてなんですが、
掲示板を作るとして書き込むときに fwrite($datafile, "<pre>".$_POST['message']."</pre>"); 
としてみたらJAVASCRIPTも無効化されてるしいいような気がするんですが、<pre>で囲んだ程度ではやはり駄目でしょうか?
0446nobodyさん2006/09/21(木) 17:29:08ID:JVGPXujg
session_unset();
session_start();
と宣言しているページがあります。
ユーザにデータを入力させ、action=""としています。
$_POSTの内容は保持されて$_SESSIONの内容だけ削除というのは
標準の動きなのでしょうか?

確かに$_POSTの内容は残り、$_SESSIONの内容はクリアされているような
挙動はしているのですが、別の環境(作成はWinで稼動はLunuxとか)に持っていっても
同じように動くのでしょうか?
日本語が不自由っぽくて恐縮ですが教えてください。
0447nobodyさん2006/09/21(木) 17:53:38ID:???
>>445
文章に</pre>があったらどうなる?
0448nobodyさん2006/09/21(木) 23:39:17ID:???
>>445
XSSというのは実際にHTMLとして出力するときに問題になるのであって、
fwriteにはまったく関係ない。

そして専用の関数(htmlspecialcharsなど)があるんだからそれを使え。
0449nobodyさん2006/09/22(金) 00:25:57ID:???
>>446
環境変えても問題ないと思う

(Lunuxでググったら10,300件・・みんなtypoしまくってるんだなぁ・・・。)
0450nobodyさん2006/09/22(金) 00:35:07ID:7CvFXbdS
SQlite使ってるのですが
sqlite_escape_stringで"などクエリの作成時に問題の出る文字を\"に置き換えられているのですが
文字列をSQLiteで取り出す時も残ったままなので、\"の文字が表示されてしまいます。(出力先はブラウザではないので・・・)
これを戻そうと$res=str_replace('\"', '"', $res);こんな事をやりましたが、うまく行きません。
残ったままです。

どうにか戻す方法はないのでしょうか?
0451nobodyさん2006/09/22(金) 00:36:56ID:???
>>450
PDOのプレイスホルダを使う。
0452nobodyさん2006/09/22(金) 00:47:03ID:???
phpでmysqlのデータベースにアクセスするプログラムを作成したのですが、
以下のエラーが出ています。
Fatal error: Call to undefined function mysql_connect() in /usr/local/www/data-dist/index.php on line 9

このエラーは、おそらくmysqlで提供しているphp向けの関数mysql_connnectが
認識できていないのではないかと考えていまして、
おそらく、php側の設定の追加が必要だと思うのですが、
具体的に何をやればいいのでしょうか?

ちなみに環境は以下の通りです。

■OS
FreeBSD 5.4

■phpのバージョン
$ pkg_info | grep php
php5-5.0.3_2 PHP Scripting Language (Apache Module and CLI)

■mysqlのバージョン
$ pkg_info | grep mysql
mysql-client-4.1.10a Multithreaded SQL database (client)
mysql-server-4.1.10a Multithreaded SQL database (server)

よろしくお願い致します。
0453nobodyさん2006/09/22(金) 00:48:42ID:???
>>452
ビルドの時にMySQLの組み込みを指定したか。
0454nobodyさん2006/09/22(金) 05:28:38ID:???
FreeBSDなんだけど、
PHPのmail関数使うのに、ポート空ける必要ないよね?
昔Linuxでやった時は要らなかったはず・・・
何故か外部にメール遅れない・・・

ググったらその手の質問は多いのに、どこも解決策が書いてませんでした・・・。
0455nobodyさん2006/09/22(金) 05:30:35ID:???
>ググったらその手の質問は多いのに、どこも解決策が書いてませんでした・・・。

あるあるwww
横槍ばっかになるんだよな、mail使うヤツだとおせっかいが沸くからw

ちなみに、ググったなら気づいてると思うがsendmailの問題であってPHPの問題じゃないから
解決したいなら、該当スレ当たれ。


あと、メールサーバーへ接続しての送信なんだからポート開放は不要
厳密にはサーバーといっても、サーバークライアントモデルのクライアントの相当する機能だから。

0456nobodyさん 2006/09/23(土) 01:39:07ID:???
フォームから入力された値を確認ページに表示させ、
その後、送信ボタンでメール送信します。
確認ページでは、$_postデータにforeachでhtmlspecialchrasをかませ、
&などの文字がエンティティ化されるのはいいのですが、
メールで送った文字も&と表示されてしまいます。
メールでは&に戻して送りたいのですがどうすればよろしいでしょうか?
0457nobodyさん 2006/09/23(土) 02:02:39ID:???
メールで送った文字もアンド記号amp;と表示されてしまいます、です。
0458nobodyさん2006/09/23(土) 06:26:47ID:???
>>456
バカかお前は。
$_POST変数をそのまま丸ごとforeachでエスケープかけてるんなら
メールでもエスケープされたままになるのは当たり前だろ。

HTML表示用変数とメール原稿用変数を分けて、それぞれ$_POSTから格納しろ。
そしてそれぞれ適切な処理を施せ。
0459nobodyさん2006/09/23(土) 11:27:14ID:???
POSTの受信速度に影響が出そうな設定ってありますか?
同じスペック、同じバージョンのサーバーなのに、レンタルサーバーでは8Mのファイルの受信に8秒
一方自宅やその他の自分の設定したサーバーでは1分の状況です。
ローカルホストで実験しているので、回線の速度の問題ではないと思うので、何か設定でもあるのかと疑っています。
ApacheやLighttpdなど色んなサーバーに変えたりしても同じなので、PHP側の設定を疑っています。
0460nobodyさん2006/09/23(土) 11:30:56ID:???
>>425-426でも話出てるが、PHP5のPOSTは遅い。
ちなみにfopen()などファイルオープンではなく、POSTである。

ためしにPHP4にしてみ。
多分片方の速いってサーバーは4だろ。
うちもファイルのアップロード数十倍伸びて唖然としたクチ
0461nobodyさん2006/09/23(土) 17:44:50ID:???
>>459
両者のPHPやApacheのバージョンも書かないと。
0462nobodyさん2006/09/23(土) 19:49:02ID:???
初心者です。
POSTで、次のページに送って表示させると文字化けが。
両方のページをEUC-JPで保存してるのに何でですか?
mb_detect_encodingで、その送られた値を見ると、SJISになってしまっています。
教えてください。
0463nobodyさん2006/09/23(土) 19:59:48ID:???
462です。
formで、enctype="multipart/form-data"で上記の値を送信しているのですが、
このenctypeを外すと、普通にEUCで表示されます。
ファイルをアップするとSJISに勝手に変わってしまうのでしょうか?
どうすればいいのでしょうか、教えてください。
0464nobodyさん2006/09/23(土) 20:10:35ID:???
PHP5は糞だったのかw
0465nobodyさん2006/09/23(土) 22:45:21ID:???
jpgの画像をアップしても、JPG、PNG、GIF形式以外の写真ファイルは登録できません、と表示される
何でだ?
$ext = array("JPG","GIF","PNG");
if(is_uploaded_file($_FILES["uploadfile"]["tmp_name"])){
$fileinfo = pathinfo($_FILES["uploadedfile"]["name"]);
$fileext = strtoupper($fileinfo["extension"]);
if(!in_array($fileext, $ext)){
$errors[] = "JPG、PNG、GIF形式以外の写真ファイルは登録できません";
}
0466nobodyさん2006/09/23(土) 22:49:40ID:???
上のじゃない。こっちです。
if(in_array($fileext, $ext)){
print "aaa!";
}else{
$errors[] = "JPG、PNG、GIF形式以外の写真ファイルは登録できません";}
0467nobodyさん2006/09/23(土) 23:08:12ID:???
解決した。単にtypeミスだ。
しかし、タイプミスほど腹が立つものねぇ。
0468nobodyさん2006/09/23(土) 23:09:03ID:???
小一時間悩みまくってtypoとかあるあr
0469nobodyさん2006/09/23(土) 23:45:41ID:???
甘いな
0470nobodyさん2006/09/24(日) 00:17:27ID:???
Sqliteなんですが、
$query="INSERT INTO user_uniq (mail,pass,uniq) VALUES('$_mail','$_pass','$uniq')";
こんな感じにすると、メールの@マークで怒られます。
Warning: sqlite_query() [function.sqlite-query]: unrecognized token: "@"

今まで、これでやって、普通に動いてきたし
今も別のコードで、この方法で動いているのですが、何か特別な変化があると、挙動が変わるのでしょうか?
0471nobodyさん2006/09/24(日) 00:39:32ID:???
事故解決しました。
単なるミs
0472nobodyさん2006/09/24(日) 16:57:26ID:???
>>452みたいに
/usr/local/www/data-dist/index.phpと絶対パスが見えてしまうのとmysql使ってるってのを隠したいが、エラーに成っても隠せる方法無いの?
このままじゃ運用につかえない。orz
0473nobodyさん2006/09/24(日) 17:03:52ID:???
っ XXXII. エラー処理およびログ記録関数
0474nobodyさん2006/09/24(日) 20:04:14ID:???
これか。
XXXII. エラー処理およびログ記録関数
ttp://www.php.net/manual/ja/ref.errorfunc.php

スクリプトの先頭で、
ini_set('display_errors', 0);
error_reporting(0);
してみたが、パースエラーには効かないのかよ。orz
PHP-users 26772によれば、スクリプトが実行されないと効力が無いらしい。orz
0475nobodyさん2006/09/24(日) 20:17:58ID:???
try{} catch {} して catch {} でログに書き出すとかする。画面には出力されないはず。

でもFatal Errorは無理だったような気が。
0476nobodyさん2006/09/24(日) 22:24:10ID:???
>>474
パースエラーが出るような状況で運用にするなよ
0477nobodyさん2006/09/25(月) 00:51:05ID:???
リナクスのバージョンアップ、アパチのバージョンアップ、マイSQLのバージョンアップ、PHPのバージョンアップ
パースエラーが出ない保証なんて無いよ。

複数台で負荷分散してたりすると、phpスクリプトがダウンロードできたりして楽しい状況。
まあ上場したミクシもパールスクリプトがダウンロードできるミスをやらかしたけど。
0478nobodyさん2006/09/25(月) 00:51:52ID:???
一応あれ保存してるwww
0479nobodyさん2006/09/25(月) 01:01:40ID:???
クレクレ!!!
0480nobodyさん2006/09/25(月) 01:02:40ID:???
mixiってmod_perlで動いてるんだろ?
ちょっと見てみたい。
0481nobodyさん2006/09/25(月) 01:38:01ID:???
>>477
>複数台で負荷分散してたりすると、phpスクリプトがダウンロードできたりして

どうして負荷分散するとスクリプトがダウンロード可になるの?
負荷分散と直接関係あるの?
0482nobodyさん2006/09/25(月) 02:02:08ID:???
テスト環境を整えずにバージョンアップするなってこった。
04834832006/09/25(月) 15:10:08ID:???
tanaka→CSVファイル一行分のデータ
yasuda→キーワードが入った配列

Function Search_Pattern($tanaka,$yasuda)
{
for($loop = 0;$loooop < count($yasuda);$loooop++) {
if($yasuda[$loooop] == "") continue;
if(!ereg($yasuda[$loooop],$tanaka)) return 0;
}

return 1;
}

yasudaさんはフォームに入力されたキーワードなんだけど、
「ー」をフォームに入力すると、
>Warning: ereg() [function.ereg]: REG_EBRACK in /xxx/xxx/xxx/xxx.php on line xx
て、エラーが出てしまう。調べてみると、
「Shift-JISじゃだめだEUCにしろ」みたいなことらしいのだけど、
意味がよく分からないです。
HTMLのヘッダー部分を直しても、何も起きないし、
<meta http-equiv="content-type" content="text/html; charset=EUC">
ファイルをEUCにして保存して、アップしたら文字化けしました。
CSVのデータ内容の都合上「ー」は避けて通れないので、
どうしたら良いか教えてください。よろしくお願いします。
0484nobodyさん2006/09/25(月) 16:03:14ID:zOMXhHPD
PHPでアップローダー作ってるのですが、
動画をアップロードして、その動画のサムネイルも
ウェブ上に表示される方法に関して、
詳しく書かれた専門書があればお勧めいただければありがたいです。
0485nobodyさん2006/09/25(月) 17:48:42ID:???
>>484
そんな本は無い。
それくらい自分で実装方法が思いつかない&調べられない、という
レベルなら、諦めたほうがいい。
0486nobodyさん2006/09/25(月) 18:06:15ID:???
いや、あきらめるな調べろ
0487nobodyさん2006/09/25(月) 18:20:53ID:???
いや、あきらめたりもしくは調べろ
0488nobodyさん2006/09/25(月) 19:48:15ID:???
いや、根気良く質問し続けろ
0489nobodyさん2006/09/25(月) 21:45:43ID:???
ほう、動画のサムネイル表示か。
やったことないから俺は分からない。だからちょっと面白い。

よし、やってみよう。
0490nobodyさん2006/09/25(月) 22:05:02ID:???
yahooで「php 動画 サムネイル」で検索したら1番上に出てきたけど。
ffmpegってエクステンションがあるみたいね。

わりと分かりやすいドキュメントもあるし。

調べるってことをしないのかね・・・
04914832006/09/25(月) 22:30:14ID:???
2バイト目が正規表現の特殊文字と一致するのが原因?らしい??
むむむ……??
0492nobodyさん2006/09/25(月) 22:37:20ID:???
>>491
charset=euc-jp じゃない?
04934912006/09/25(月) 22:40:59ID:???
回答どうもありがとうございます。
指摘箇所を修正したのですが文字化けしました。
「そこを直すだけ」だとだめなんでしょうか・・。
0494nobodyさん2006/09/25(月) 22:48:31ID:???
んー

[ php.ini ]
mbstring.language = Japanese
mbstring.http_input = auto
mbstring.http_output = EUC-JP

っていうか今483のコード目通したけど、明らかにおかしいから文字コード以前にそれを直すべき。
for文の変数がおかしい。eregの使い方間違ってると思われる。あと、一般的にFunctionはfunctionで。
0495nobodyさん2006/09/25(月) 22:52:46ID:???
回答どうもありがとうございます。
ですが、回答の内容が理解できません。(頑張って調べてみますが)
明らかにおかしいとのことですが、
取り敢えず「ー」を検索キーワードにしなければ正しく動作してます。
0496nobodyさん2006/09/25(月) 22:59:55ID:???
いやいや、これじゃ$yasuda[0]取れてないじゃん。
0497nobodyさん2006/09/25(月) 23:03:12ID:???
内部・出力・スクリプト・CVSファイル・POSTされたデータ のエンコーディングは全部EUCか?

tanaka と yasuda にする意味が分からん。
どうせ意味を持たない名前の変数なら hoge とかにした方が分かりやすい
function Search_Pattern($key, $csv)
{
 foreach ($csv as $line) {
  if($line == "") continue;
  if(!mb_ereg(mb_convert_encoding($line,"EUC","SJIS"), $key)) return 0;
 }
 return 1;
}

まぁあれだ、エスパー的に考えると多分POSTされたデータがSJISだからEUCに変換すれば通るんじゃないか
2バイト目が\x5Cな文字を受け取ると失敗する
0498nobodyさん2006/09/25(月) 23:05:34ID:???
あ、申しわけない。$loopの"o"の数は無視してください。
それは、間違いです。
実際は、全部$loooopです。
0499nobodyさん2006/09/25(月) 23:09:28ID:???
書いた後で思った。
$tanakaって分割されたCSVの一行なのに、$lineって変だな
05004832006/09/25(月) 23:24:18ID:???
>>497さんに指摘されて、全てのファイルを見直したら、
CSVファイルがShift-JISになってたので、ECUにしたら、
「ー」の検索結果が上手く表示されました。感動!
普段使ってるHTMLエディターがそういう設定ないので、
あんまり気に止めてなかったことでした。
mb_convert_encodingとか見たことないこと書いていただいたので、
それも参考にしてみたいと思います。

それでは、皆さん、ご迷惑お掛けしました。
頑張りまーす。
0501nobodyさん2006/09/26(火) 00:38:00ID:???
PHP5のPOST処理が遅いって、このスレで何度か出てたので調べてみた。

PHP/4.3.11
PHP /5.1.6

で、両方Apache/2.0.53で動かした。
ソースは

$file=$_POST['FILE'];
$fp = fopen('testfile', 'w');
var_dump(fwrite($fp, $file));
fclose($fp);
echo "OK";

こんな単純な処理、
んで、5Mちょうどに作ったランダムな文字を埋め込んだテキストデータを送ってみた。
PHP5側が32秒、PHP4側は3秒

…なんだろう、この差は('A`)
ちなみに、php.iniは新たに排除された物以外同じ。
POSTに関連するような項目は無いはず。
0502nobodyさん2006/09/26(火) 00:49:08ID:???
こ・・このあり得ない程の差は一体どこが問題なんだ・・・
0503nobodyさん2006/09/26(火) 01:45:38ID:???
セキュリティ耐性の向上でいろいろチェックでもしてるのでは?
バッファーオーバーフロー対策だけでもかなりのオーバーヘッドが発生して処理速度が落ちると思う。いちいちサイズチェックしてる訳だし。
プロファイル取って精査してみると原因が分かるかもね。
05045012006/09/26(火) 02:12:00ID:???
関係ありそうなのといえば
magic_quotes_gpcだろうけど
これを無効にしても変わらんね。
まぁ、チェックはこれだけではないと思うので、オプションでいじれない範囲になるのかな
0505nobodyさん2006/09/27(水) 06:20:17ID:???
>>501のソース
最初ファイルの書き出しの所でオーバーヘッド起きてるんだと信じ込んでたが
$file=$_POST['FILE'];
の直後に、echo 'OK';exit();
やっても、OKが返るまでに相当時間がかかる。
さらに、$file=直前の一行目に書いても同じ。

ちなみに、俺はWindows版のPHPで試したが、その場合PHP4/5ともに30秒くらいかかった。
んで、FreeBSDマシンもあるので、>>501とほぼ同じマシンで試したら、4/5ともにほぼ同じ30秒くらい。

ところがどっこい、xreaのPHP5採用鯖とPHP4採用鯖で試したら、2秒で完了した。
同じく外部で借りてる鯖で試してもそんなもん。
この2つの共通点はLinuxって事だな。

俺の結論としては、4/5の差じゃなくて、OSの何かの差だと思うんだが・・・。
PHP.iniファイルは当然あわせてるし、他に考えられん。
0506nobodyさん2006/09/27(水) 06:23:50ID:???
>>505を見ると、俺にはハードウェアの違いに見えるんだが…
Windows版はGUI立ち上がってるからCPUパワーが一段階下がる。
何となくお前のFreeBSDマシンはメインマシン下がりの1世代か二世代前のマシンな希ガス
POST処理って何気にCPU食うからな。URLエンコードやmagic_quotes_gpcの有無に限らず結構チェックが多いから
0507nobodyさん2006/09/27(水) 12:43:34ID:???
そりゃ素人が作った鯖と、それで飯食ってるプロが建てた鯖とでは違うと思うが。
xreaはRAID搭載ジーオン鯖だったりしないか?
0508nobodyさん2006/09/27(水) 13:13:40ID:???
getimagesizeで、警告がでるときとでないときがあるのですが、どうしてですか?
if(getimagesize($_FILES["upfile"]["tmp_name"])){
$errors = "画像形式のファイル以外は登録できません";
}
空のjpgをアップすると、警告と$errorが表示されます。
でも、テキスト形式のファイルをjpgにして、アップすると、
$errorは表示されるのですが、警告は表示されません。

マニュアルには、
filename のイメージにアクセスできない場合、もしくは有効な画像でない場合、getimagesize() は FALSE を返し、E_WARNING レベルのエラーを発生させます
と書いてあるのですが、どうしてでしょうか?
もし、よろしければ、教えてください。
0509nobodyさん2006/09/27(水) 17:55:56ID:???
>>508
ファイルがアクセス可能であればE_WARNINGはでないようだ
マニュアルのミスだね
0510nobodyさん2006/09/27(水) 17:56:10ID:???
>>507
POSTで受信する段階ではRAIDとか関係ないでしょ
0511nobodyさん2006/09/27(水) 21:49:52ID:???
>>508
マニュアルのミスっすか!
ありがとうございます!!
0512nobodyさん2006/09/28(木) 05:09:14ID:???
phpで構造体(c言語でいう、structに相当するもの)を表現するには、
通常どのようにするのでしょうか?
0513nobodyさん2006/09/28(木) 09:24:11ID:???
配列かオブジェクト使え
0514nobodyさん2006/09/28(木) 09:41:40ID:vmB3T9I4
>>505
文字コード何にして送ってる?
FreeBSDは、EUC/ECU-JPだから
その変換作業がオーバーヘッドになってると思われ。OSの差が本当に原因なら
0515nobodyさん2006/09/28(木) 09:44:55ID:???
日本語扱わないなら文字コードは関係ないよ。latin1相当だ。
0516nobodyさん2006/09/28(木) 11:09:55ID:???
誰かFreeBSD環境とLinux環境を切り替えれる人が>>501のソースを実行してみりゃわかる話。
OSレベルで差が出るとは思えんが・・・
>>501が同一マシンで実行したのなら、何かOSの差異に問題があるんだろうな。
でも、PHP4と5だろ・・・、うちじゃ差は無かったよ。FreeBSDマシンだがどっちも同じくローカルで30秒ほど
本当に一桁で完了なんてすんの?
流石にこのマシンLinux入れるわけにはいかないので試せないけど、もしそういう結果が出るなら乗り換えてしまいたいかも・・・
0517nobodyさん2006/09/28(木) 11:47:29ID:la8GqmPx
echoとprintが両方使えるのですが、どちらを使う方が良いのでしょうか?
0518nobodyさん2006/09/28(木) 12:51:26ID:???
殆ど同じだから好みで使い分けていいよ。
ただし、どちらかに統一するように!

void echo ( string arg1 [, string ...] )
int print ( string arg )

>戻り値
・echo は戻り値がない
 NG : echo echo echo echo "hoge";
・print は常に1を返す
 OK : print print print print "hoge";
 → hoge111

>引数
・echo は「,」(コロン)で区切った文字列を連結して出力する事ができる
 echo "hoge", "hage", "hige";
 → hogehagehige
(普通にドットで文字列連結できるからあんまり意味ないけど、違いって事で)
0519nobodyさん2006/09/28(木) 12:53:18ID:???
・・コンマなのになぜコロンと書いてるんだろうか・・・ orz
0520nobodyさん2006/09/28(木) 15:08:09ID:???
>>518
わかりやすくありがとう

がんがるノシ
■ このスレッドは過去ログ倉庫に格納されています