【PHP】下らねぇ質問はここに書き込みやがれ 72
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/08/16(土) 12:01:25ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 71
http://pc11.2ch.net/test/read.cgi/php/1216291372/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0177nobodyさん
2008/08/20(水) 04:33:56ID:???アドバイスありがとうございました。
> 謎なこといってるがSQL使わずにどうやってデータを取り出すというのだ?
すみません、誤解を招く表現で。
いいたかったのは、データ件数が7300万件以上ありまして、
UNIQUEキーを設定した仮テーブルを作ってコピーすると、
時間が掛かってしまうため、ミドルウェア層に位置する
SQLの範疇では手に負えないというのが以前の結論でした。
なので、アプリケーション層に位置する高級言語でなんとか処理できないと
考えたのですが、やはりそこでも無理そうでしょうか。
phpで無理でしたら、JavaとかC++のスレでも聞こうと思っています。
0178nobodyさん
2008/08/20(水) 04:36:44ID:PkKH7Tnj0179nobodyさん
2008/08/20(水) 04:42:02ID:???0180nobodyさん
2008/08/20(水) 04:45:21ID:???7300万件もあるなら他の言語のほうが処理速度はあがると思うよ
C++が使えるならそうしたほうがいいかも
0181nobodyさん
2008/08/20(水) 07:43:47ID:???これは釣り?それとも本気?
本気でいっているならメモリーキャッシュとか使えば、
Java並みの実行速度にはなる。
0183nobodyさん
2008/08/20(水) 08:37:14ID:???そっちで処理すればいいだろ。
実行時間やメモリサイズの縛りがあるPHPで、
わざわざ実行する必要はない罠。
0184nobodyさん
2008/08/20(水) 08:59:03ID:???0185nobodyさん
2008/08/20(水) 09:43:41ID:???だから、それは設定の問題でしょ。もしくは、環境の問題でしょ。
言語仕様の問題みたいにいうと変な誤解する人がいるぞ。
0186nobodyさん
2008/08/20(水) 10:03:49ID:???作れるがそれをした所でDBで時間が掛かってしまうから駄目なんじゃないの?
7400万件あってもPHPで十分処理できるよ
まぁサーバ次第だけど
てかこんな所じゃなくコンサルたのめよ
0187nobodyさん
2008/08/20(水) 10:13:36ID:???0188nobodyさん
2008/08/20(水) 10:14:14ID:???0189nobodyさん
2008/08/20(水) 11:35:11ID:???データベース使う意味まるで無いよなw
0190nobodyさん
2008/08/20(水) 11:41:13ID:uoEIdMLz<field>
<hoge name="test1">val1</hoge>
<hoge name="test2">val2</hoge>
</field>
↑これを↓のように取り込みたいのだけど、
$xml["field"]["hoge"]["test1"]="val1";
$xml["field"]["hoge"]["test2"]="val2";
実際やってみたら↓という風になっちゃうんです。
$xml["field"]["hoge"][0]="val1";
$xml["field"]["hoge"][1]="val2";
前者のように得たい場合、何か良い手はないでしょうか。
(XMLの書式を変えろとかは無しの方向で)
0191nobodyさん
2008/08/20(水) 11:51:31ID:???> PHPは大規模な処理には向いていない言語なので
> 7300万件もあるなら他の言語のほうが処理速度はあがると思うよ
> C++が使えるならそうしたほうがいいかも
あんた実戦経験無し?
7300万件とかそんなにデータが多い場合・・・いや、少なくてもだけど
普通は高速にかつ楽に開発する為に、既に作られている、
ライブラリやデータベースシステムを使う。
ライブラリやデータベースシステムがC++などで作られているから
何の問題も無い。
君の発想は一から全部作る場合の発想。
何らかの理由で世の中に既にある物を置き換えるものを
作ろうとしているのなら話は別だが、
大量のデータを処理する為のライブラリを
C++で作るとかアフォのやること。
0192nobodyさん
2008/08/20(水) 11:58:45ID:???> phpで無理でしたら、JavaとかC++のスレでも聞こうと思っています。
JavaやC++でもPHPと同じように無理だから。
0193nobodyさん
2008/08/20(水) 12:03:06ID:nVxHuE1Qこのセッショントラバーサル脆弱性って
「セッションハンドラを自前で設定して、
しかもそれをファイルシステムに指定している」という状況でないと
発現しないの?
何もいじらずにファイルシステムのセッション使ってる場合は大丈夫?
0194nobodyさん
2008/08/20(水) 12:19:19ID:???'->'とか'=>'は、何と読めば良いのでしょう?。
0195nobodyさん
2008/08/20(水) 12:25:51ID:???高速なライブラリやDBを使うなんてあたりまえの話で、その上でPHPよりC++で
組んだほうが処理は速いんじゃないか、としか読めないんだが
なんでライブラリを作るなんて話になるんだろう
PHPで大規模処理ができるかどうかと言われればできる
けど向いてるかと言われればそうでもないと思う
少なくともデータ処理のバッチをPHPで作ろうとは思わんなあ
バッチ以外の部分がPHPなので保守を考えてとか、なんか理由でもなければね
0197nobodyさん
2008/08/20(水) 12:39:37ID:???セッションIDの文字列チェックが行われないってヤツだな
標準ハンドラではチェックされているから、独自実装の場合だけ脆弱性を帯びる
ファイルシステムだけじゃなくてデータベースに保存している場合でもインジェクションを意識しなきゃダメだろうな
例えばファイルシステム利用の場合でセッションIDに「/../」があれば上位ディレクトリが保存先になるってこと
あぶないあぶない
>>194
読みなんてあったっけ?
「->」 オブジェクトメンバ、オブジェクトメンバメソッドの「参照記号」とでも呼べばいいのか?
「=>」 連想配列の・・・・何?
0198nobodyさん
2008/08/20(水) 12:43:16ID:???自分も人に聞かれて、何にも頭に思い浮かばず困ってしまったんです。
0199nobodyさん
2008/08/20(水) 12:44:45ID:???0200nobodyさん
2008/08/20(水) 13:11:21ID:???内部名。
0201nobodyさん
2008/08/20(水) 13:21:14ID:???-> が T_OBJECT_OPERATOR、=> が T_DOUBLE_ARROW って、作った人も適当に考えてたのね。
=>これ、何とかならなかったのかぁ。
0202nobodyさん
2008/08/20(水) 13:48:35ID:???フレームワークごと渡すの?
それとも設置の時点でインストールしてもらうの?
0203nobodyさん
2008/08/20(水) 13:49:07ID:???T_OBJECT_OPERATORはまだしも、T_DOUBLE_ARROW って、作った人もいい加減だったのね。
何とかならなかったのかなぁ。
0205nobodyさん
2008/08/20(水) 13:58:50ID:???=>は「イコール大なり」
0206nobodyさん
2008/08/20(水) 14:06:54ID:???ナイスオチ
口に出すことがほとんどないから特に意識てなかったんだろうな
>>198
Perlの連想配列も=>を使うぜ
PHPはPerlの拡張から始まったしその名残じゃないかな
0207nobodyさん
2008/08/20(水) 15:46:15ID:1OHJU2Jn<script type="text/javascript">
<!--
<?php
$str = "document.getElementById('test').value";
print("出力結果:$str");
?>
// -->
</script>
<span id=test>hogehoge</span>
例としてtestの値であるhogehogeをJavaScriptを用いてPHP変数に受け渡したいのですが
上記の方法で実行してもできません
いったいどのようにすればできるのでしょうか?
0209nobodyさん
2008/08/20(水) 15:49:45ID:???同時にフォームのinput type="hidden"にセットしてPOSTするとか、
httpRequestのGETパラメタで投げるとか幾らでもやりようあるように思うが。
0211nobodyさん
2008/08/20(水) 15:59:41ID:???':, ', _____,,.. -‐ ''"´ ̄ ̄`"'' ー 、., /
':, ', >' ´ `ヽ. / し バ
':, / ヽ. ,' な カ
':, ,:' / / ,'´ ヽ. ':,/Ti i. い に
. \ ,' / / ,' ! ; ', ヽ__ /::::| | | で
\ / ,' ,'! /! ! ; /! i 「:::|'´::::::::| | .!. く
∠__,! / !メ、」_,,./| /! / ! ハ! |__」<:::::」」 |. れ
`"'' 、..,,_ ! / ,ァ7´, `iヽ| / |ヽ、」ニイ、 | ! |^ヽ、」」 |. る
i,/レイ i┘ i. レ' 'ア´!_」 ハヽ| | | ∠ ! ?
─-- / ! ゝ- ' ! ! ! | | `ヽ.
/ 7/l/l/ 、 `'ー‐ '_ノ! | i | ` ' ー---
,. -──-'、 ,人 `i`ァー-- 、 /l/l/l | !. | |
ヽ.ソ `: 、. レ' ', u ,/| | ! |
そ 知 i /ーナ= 、 '、 ノ ,.イ,カ ! | |
の っ .|ヘ./|/レへ`>-r =ニi´、.,_ | i ハ ! ,'
く て ! _,.イ´ヽ.7 / /:::| /レ' レ'レ'
ら る | /7:::::! ○O'´ /::::::レ'ヽ.
い .わ .| / /:::::::レ'/ムヽ. /::::::::/ ヽ.
! ! よ ! ./ ,':::::::::::!/ ハ:::::`´:::::::::::;
0213nobodyさん
2008/08/20(水) 16:22:25ID:???みんなの本音は>>208と同じだと思うぞ
目的が見えないんだよ
>>208の言いたいことは、testの値を出力するならjavascriptのdocument.writeでいいじゃんってこと
>>209のアドバイスはtestの値をPHPで加工する場合のこと(POSTがページ変移ありで、httpRequestはページ変移なし)
ちなみに>>207の説明でもソースでも、上の2通りのどっちか分からん
どうしたいかは分かる、でも何がしたいか分からんってことだな
0214nobodyさん
2008/08/20(水) 16:28:50ID:???0215nobodyさん
2008/08/20(水) 16:30:53ID:???208だが煽ったつもりはないぜ
>>207がしたいことをそのままソースで読み取ったわけだからPHPでせず
>>213のいうとおりdocument.writeでできるってことを言いたかっただけ
0216nobodyさん
2008/08/20(水) 16:43:45ID:???0218nobodyさん
2008/08/20(水) 16:46:14ID:???少なくてもC++よりも速くならない。
いや、速くならないどころか遅くなる。
変数を割り当てるたびにメモリーを割り当てるから、
ループの中で変数をつくったりすると、
メモリーリークが頻発する。だから、大規模開発には向かない。
そもそも、PHPはJAVAのようなガーベージコレクションが効率よく動作しない。
0219nobodyさん
2008/08/20(水) 16:47:28ID:???0221nobodyさん
2008/08/20(水) 16:54:49ID:???クライアントサイドからサーバサイドに逆に値を受け渡したい場合だってあるだろ。
想像力が貧困すぎ。
もしかして全く予想できない?document.writeするだけしか思いつかない?
初心者が下手に回答すると恥かくからやめとけ、な。
0225nobodyさん
2008/08/20(水) 17:03:24ID:???クライアントからサーバへ送りたいのはわかるが説明とソースからは必要性を感じない
だから質問にもっと詳しい情報がほしいって意見じゃないのか?
>>218
PHPってC++で出来てたんだ・・・libcppを呼んでないんだが・・・共有じゃなくて静的に組み込んでるのか?
0226nobodyさん
2008/08/20(水) 17:09:50ID:???0227nobodyさん
2008/08/20(水) 17:10:57ID:???一般的に低級言語より高級言語のほうが出来ることも少ないし処理速度は遅くなる
C++は高級言語だがPHPと比較するとC++のほうが低級に位置する
そもそもPHPがインタプリタな時点で(ry
で脊椎反射でレスしてる馬鹿はちゃんとスレ主(>>177)の意図を汲め
0228nobodyさん
2008/08/20(水) 17:15:28ID:???>考えたのですが、やはりそこでも無理そうでしょうか。
>phpで無理でしたら、JavaとかC++のスレでも聞こうと思っています。
無理そうではないが時間がかかるのは一緒
処理時間に拘ってるようだから少しでも早く処理を終わらせたいならC++のほうがいい
こうですか?わかりません
0229nobodyさん
2008/08/20(水) 17:15:52ID:???マジきめえwwww
0230nobodyさん
2008/08/20(水) 17:17:57ID:LhJjLaqdmove_uploaded_fileしようとしてもfailed to open stream: Permission deniedになっちゃいます。
保存し直すディレクトリの権限はeveryoneでフルコントロールにしてるし、
(もちろんusersもログインしてるユーザもフルコントロール)なにがいけないのが
全然分かりません。
分かる方いらっしゃったらどうか教えてください。
0233230
2008/08/20(水) 17:29:03ID:???if(!is_uploaded_file($_FILES['image']['tmp_name']))
{
echo 'Error';
return;
}
else if(is_uploaded_file($_FILES['image']['tmp_name']))
{
$tmp .= 'tmp_name: '.$_FILES['image']['tmp_name'].'<br>';
$tmp .= 'name: '.$_FILES['image']['name'].'<br>';
$tmp .= 'new_path: '.WWW_ROOT.IMG_PATH.'<br>';
echo $tmp;
move_uploaded_file(@$_FILES['image']['tmp_name'], IMG_PATH);
}
こんな感じです。
IMG_PATHはフルパスをdefineしてます。
0234nobodyさん
2008/08/20(水) 17:30:20ID:???0235nobodyさん
2008/08/20(水) 17:31:00ID:???>UNIQUEキーを設定した仮テーブルを作ってコピーすると、
>時間が掛かってしまうため、ミドルウェア層に位置する
>SQLの範疇では手に負えないというのが以前の結論でした。
どんな処理するんだ?
>>187にも答えてくれ。
0236nobodyさん
2008/08/20(水) 17:33:00ID:???> そもそもPHPがインタプリタな時点で(ry
世の中に、まだ純粋なインタプリタって存在しているのかね?
マイナーな言語ならしらんが、
今はソースコードをコンパイルして動かしているだろ?
ページ開くたびに毎回コンパイルする必要はあるが
そのコンパイルの時間はかかるが、それが終わったら
あとはネイティブとほぼ同じだろ。
ページ開くたびにコンパイルしない方法もあるし。
0238nobodyさん
2008/08/20(水) 17:48:46ID:???define('IMG_PATH', "C:\xampp\htdocs\test\logo\");
これはやってみた?
0239230
2008/08/20(水) 17:50:39ID:???それもやってみました。
failed to open stream:Invalid argumentエラーが出ました。
0240nobodyさん
2008/08/20(水) 17:50:45ID:???\\じゃないと"がエスケープ処理させるぞwwww
>>237
パスはあってるんだよな・・・
chmodで権限0777にしても同じかな?
0241230
2008/08/20(水) 17:54:40ID:???フォルダのプロパティ→セキュリティからの設定は一通り全部フルコントロールにしたんですが…。
chmodってWindowsで使えるんですか?
0242nobodyさん
2008/08/20(水) 17:55:58ID:???logoの後ろに\\とか?
アップローダーのようなものは2年前に作ったきりでどういうのか忘れたけど
当時のソースがこうなってる
move_uploaded_file($_FILES['test']['tmp_name'], "D\htdocs\test\");
>>240
Windowsはパーミッション変えれないでしょ
0245nobodyさん
2008/08/20(水) 18:11:59ID:???bool move_uploaded_file ( string $filename , string $destination )
この関数は、filename で指定されたファイルが
(PHP の HTTP POST アップロード機構によりアップロードされたという意味で)
有効なアップロードファイルであるかどうかを確認します。
そのファイルが有効な場合、destination で指定したファイル名に移動されます。
となってるわけだが
ファイル名は指定してないのが原因?
define('IMG_PATH', "C:\\xampp\\htdocs\\test\\logo\\");
move_uploaded_file(@$_FILES['image']['tmp_name'], IMG_PATH . "ファイル名");
0246nobodyさん
2008/08/20(水) 18:14:37ID:hs1BSUYJまるで、おまえらの女付き合いと同じじゃねえか。。
女経験がないから、女が違うたびにあーでもないこーでもないって思案を重ね、ようやくエッチまで持っていけるんだろ?
その点、俺なんて、幾多の女を渡り歩いてきたから、もう女と付き合う手法がコンパイルされた状態でインプットされてるわけ。
わかるか?
0247nobodyさん
2008/08/20(水) 18:14:43ID:???move_uploaded_fileの第2引数を「ファイル名」にしよう
0248nobodyさん
2008/08/20(水) 18:15:28ID:hs1BSUYJ0250242
2008/08/20(水) 18:17:35ID:???なんか勘違いしてたw
動かなかったわorz
動いたものだとおもったんだけど・・・おかしいなぁ
0252nobodyさん
2008/08/20(水) 18:25:52ID:???ちょっと不便
0253nobodyさん
2008/08/20(水) 18:32:42ID:???本当のプロの仕事っていうのは、
普通の人間が5、10年勉強しておいつける代物ではない。
ある程度一人で出来るようになったからって、
勝手にのぼせ上がっているだけ、お前は。
0254nobodyさん
2008/08/20(水) 18:36:18ID:???0256nobodyさん
2008/08/20(水) 18:37:03ID:???0257nobodyさん
2008/08/20(水) 18:38:04ID:???0259nobodyさん
2008/08/20(水) 18:40:14ID:8rByw6kXその下のスクリプトは実行されてるんでしょうか?
0260nobodyさん
2008/08/20(水) 18:51:32ID:hs1BSUYJ0262nobodyさん
2008/08/20(水) 18:57:11ID:hs1BSUYJ早l
/ ̄ヽ 目 今
, o ', 食 に _ .日
レ、ヮ __/ べご l / \ は
/ ヽ よは.l {@ @ i 納
_/ l ヽ うん l } し_ / 期
しl i i を l > ⊃ < 日
l ート l / l ヽ か
 ̄ ̄¨¨~~ ‐‐‐---─| / /l 丶 .l
___ | / / l } l
/ニュ トーイ l /ユ¨‐‐- 、_ l !
ヽ廿' .`廿' l _ / ` ヽ__ `-{し|
n .____ l / `ヽ }/
三三ニ--‐‐' l / //
 ̄ ̄ ¨¨¨ー─‐‐--- ,,, __ ____/ /_/ ´
,, _ |  ̄¨¨` ー──---
モパ / `、 | _
グク / ヽ .| モパ / ヽ モパ
モパ./ ● ●l | グク l @ @ l グク パパー会社来なくていいってー>
グク l U し U l | モパ l U l モパ
l u ___ u l | グク __/=テヽつ く グク
>u、 _` --' _Uィ l /キ' ~ __,,-、 ヽ
/ 0  ̄ uヽ | l ヘ ゝ__ノ-' ヽ
. / u 0 ヽ| ~ l ヽ-┬ '
テ==tニト | / て=-、─----‐‐─ヽ
/ ̄) ̄ ト' ト= -' <ニ>
0264nobodyさん
2008/08/20(水) 19:02:50ID:???0265nobodyさん
2008/08/20(水) 19:04:50ID:???0266nobodyさん
2008/08/20(水) 19:06:23ID:???そんなことがよくあるのか・・・
0267nobodyさん
2008/08/20(水) 19:19:23ID:???別のプロジェクトに変えるようにしているから関係ないわ。
同じメンバーで長くやっていると、色々な意味で成長しない。
0268174
2008/08/20(水) 19:35:25ID:PkKH7Tnjレスが多くてびっくりしました。大変ありがたいです。
ただ、結論はphpでも一発で処理するのは難しいってことですかね。
array_uniqueのような関数があるので、
MySQLのバイナリーファイルをちょこちょこといじって、
重複データを削除してくれるような関数があると思ったのですが、なさそうですね。
7400万件をSQL経由でコピーしますと、時間的には数時間かえってこないのに加えて、
データーベースのファイル自体がコピー中に破損する現象があるので、
# バージョンがSTABLEじゃなくRELEASEレベルなのが原因かも。
関数かなんかで瞬間的にできればと思った次第です。
色々とお答え頂き、どうもありがとうございました。
C++が皆さんのお薦めということなので、C++のスレで聞いてみます。
本当にありがとうございました。
0269nobodyさん
2008/08/20(水) 19:38:00ID:???メモリとCPUパワーと時間さえあればできると思うが。
ローカルいじるだけなら書きやすいphpでやるのが楽。
0270nobodyさん
2008/08/20(水) 19:46:06ID:???その時間を短縮するために他の言語のほうがいいっていってんだろ
ためしにPHPとJavaとC++でループ処理比較してみれ
0271174
2008/08/20(水) 19:47:54ID:PkKH7Tnjレスありがとうございます。
一レコードずつフェッチして、そのレコードのキーで7400万件のデータに検索して、
レコードが重複していないかチェックするという処理でしょうか。
ただ、それは、一番時間が掛かるような気がします。
私が考えられる中で考えたのは、一番最初に書きましたが、
現在UNIQUEキーが設定されていないテーブルを捨てて、
仮のテーブルを作成し、UNIQUEキーを設定し、
その仮テーブルにINSERT IGNORE INTO SELECT * FROM 〜で、
エラー無視のINSERT文の実行です。
これなら、SQL文は、CRATE, INSERT, DROP, RENAMEで終わりですが、
INSERTが数時間もしくは十数時間かかります。SQLの欠点は、
途中経過がよく分からないのも欠点です。
SELECT COUNT(*)でやっても、busy状態に陥ってコマンドが拒絶されます。
う−ん、悩ましい。
0272nobodyさん
2008/08/20(水) 19:51:36ID:???C++だろうがphpだろうが大した差はないと思うな
もしかして、C++薦めてる人は何もかもC++でやろうと考えてるのかな
0273nobodyさん
2008/08/20(水) 19:54:29ID:???話わかってないだろ?
SQLを他言語で操作するんだから
その間のレスポンスが早い言語がいいって話だろ
>もしかして、C++薦めてる人は何もかもC++でやろうと考えてるのかな
case by caseにきまってるだろ
ただ今回はなるべく時間を短縮してやりたいっていうことだから
C++をすすめてるだけだろ
0274nobodyさん
2008/08/20(水) 19:58:19ID:???十数時間かけてやりゃいいじゃん。
C++でやるとしてもC++ならMySQLのバイナリ直接操作してunique取れるのか?どうせ単純ループだろ。
悩んでないでさっさとやれw 質問するまでもない。
0275nobodyさん
2008/08/20(水) 20:10:38ID:???だから、phpはCのオブラートに包まれているんだよ。
だから、できることは少ないし遅い。その代り開発速度は速いが。
Cは色々できる反面、処理がやっかい。自由度をとるか、効率性をとるかだよ。
あたま沸いていんじゃまいか?
0276nobodyさん
2008/08/20(水) 20:13:58ID:???大規模開発に向かない(キリッ
と言ってる暇でメモリリークするパターンを
PHP Bugsに報告しておいて欲しいな
>>259
http://www.php.net/manual/ja/features.connection-handling.php
>>174,271
UNIQUE制約付けて INSERT IGNORE ね…
これって7400万回逐次インデックスの更新が起きね?糞重そうだが
データベース板でSQL文レビューしてもらった方がいいんじゃないの
アプリケーション層でごりごりするような問題じゃないと思うよ
■ このスレッドは過去ログ倉庫に格納されています