【PHP】下らねぇ質問はここに書き込みやがれ 45
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/05/12(土) 16:42:48ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 45
http://pc11.2ch.net/test/read.cgi/php/1177635762/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0554nobodyさん
2007/06/03(日) 13:31:53ID:???pconnectとかだったらDBがやってくれるよ
2回目以降の接続なら自動的に既存の接続を使いまわしてくれる
それ以外でも1回目だけとか考えるより、対象の処理が完了していたら
実行しないとかそういう風に考えるのがまあ普通だな例外もあるが
0555nobodyさん
2007/06/03(日) 13:32:47ID:???あと何でいきなり口調が偉そうになってんの?
0556nobodyさん
2007/06/03(日) 13:33:10ID:???0557nobodyさん
2007/06/03(日) 13:36:21ID:XtY/sQS4ありがとうございます。
参考になりました。
0558nobodyさん
2007/06/03(日) 13:37:34ID:XtY/sQS4いや特にコネクションプーリングがやりたいわけじゃなく、PHP使って初期化処理って普通どうすんのかなぁと気になって。
上でも書いたけどコネクションプーリングは例えです。
0559nobodyさん
2007/06/03(日) 13:55:14ID:9Yu/VUSy0560nobodyさん
2007/06/03(日) 14:30:00ID:???0561nobodyさん
2007/06/03(日) 14:36:04ID:9Yu/VUSy存在しないメソッドが呼ばれたときに、呼ばれるメソッドを定義できて、
そのメソッド名とパラメータがえられれば実装できます。
が、今一度マニュアルを漁ってみたところそのような機構はないようです。
0562nobodyさん
2007/06/03(日) 14:43:05ID:???一応PHP4にもある、4.3.0以降オンリーで5のより使いにくいけどな
http://jp.php.net/overload
でも5でやるのがおすすめだな
0563nobodyさん
2007/06/03(日) 14:50:10ID:9Yu/VUSyありがとうございます。こんなところにあるは思いませんでした。
一応リファレンスは通読していたつもりだったんですが…。
確かにPHP5でやると楽なんですが、PHP4が要件なんです。
これで何とかなりそうです。本当にありがとうございました。
0564nobodyさん
2007/06/03(日) 16:12:50ID:???sendmail関数をforでループさせても3万通位が限界です。
これってphpの仕様?
できれば、100万通じゃなくても多ければ多いほどよくて1億通でも送ることが可能なら送りたいです。
よろぴく♪
0569nobodyさん
2007/06/03(日) 16:25:09ID:???0570nobodyさん
2007/06/03(日) 16:30:02ID:???javaはphpと違って言語レベルで並行処理ができる。
※ こういうことが出来ないのが、phpがスクリプト言語と言われる由縁だけど。
詳しくは、javaのスレでメールの送信方法と、マルチスレッドの方法を聴いて。
※ その前に、googleで検索するように。すぐ見つかる。
あとは、サーバーによって一時間当たりのメール送信数に制限掛けているところがあるから、
複数の安いサーバーと契約して送信すればできるんじゃないか?
0571nobodyさん
2007/06/03(日) 16:34:57ID:???0572nobodyさん
2007/06/03(日) 16:37:13ID:???0573nobodyさん
2007/06/03(日) 16:41:15ID:???jjavaもよくわからんけど、わかんかったらまたききに来るわ。
0574nobodyさん
2007/06/03(日) 16:43:27ID:???0575nobodyさん
2007/06/03(日) 16:43:45ID:9Yu/VUSy0576nobodyさん
2007/06/03(日) 16:46:36ID:???もうここには、聞きに来ないでくれ。
javaなら、下のメールリストに高木さんという親切な管理人さんがいらっしゃるから、
何も分からないから、メールで大量送信できるようなプログラムを至急作って送って下さい。
と送れば、すぐ作ってくれるんじゃないかなぁ。
ttp://java-house.jp/ml/
0578nobodyさん
2007/06/03(日) 16:50:31ID:???0579nobodyさん
2007/06/03(日) 16:56:48ID:???0580nobodyさん
2007/06/03(日) 16:57:59ID:???session_destroyすると
Message: session_destroy() [function.session-destroy]: Session object destruction failed
になります。
セッションが切れているかどうかを判定する方法はないですか?
0581nobodyさん
2007/06/03(日) 19:08:19ID:???ある処理が一定時間経っても終了しなかった場合に、次以降の処理に進むような処理はどうやって実装するのでしょうか。
具体的にやりたいのは、数件のRSSファイルをネットワーク経由で持ってくる場合、n秒以上応答が無い場合は
次のURLに移る・・・というような処理です。
宜しくお願いいたします。
0583581
2007/06/03(日) 20:48:31ID:ngQVF/3a環境はWindows、Apache、PHP5.2.1です。
0584nobodyさん
2007/06/03(日) 20:51:34ID:???session_destroyしてるってことは、そのスクリプトの前の方で
session_startしてるわけだわな
んで、session_destroyの時点でセッションのデータが削除されてるってことは
(session_destroyの時間 - session_startの時間) < session.gc_maxlifetime
になるわけだと思うが、いったい何をしたらそうなるのかこっちが聞きたいわ
>>581
RSSをHTTPでもってくるにしても色々やり方があるわけで
それによって答えも変わるわな
0585nobodyさん
2007/06/03(日) 22:19:08ID:3VqHHU9G0586nobodyさん
2007/06/03(日) 22:25:30ID:???日本語でおk&スレ違い&
http://pc11.2ch.net/test/read.cgi/php/1180181033/41
これお前だろ
0589nobodyさん
2007/06/03(日) 22:52:53ID:???>>585じゃないけど、その仕様だと例えばHTMLを知らないユーザーとかだとアップできなくない?
HTMLの説明書きとかを注釈で加えるとか?
0592nobodyさん
2007/06/03(日) 23:04:52ID:BrDIy+5Hぐぐってもなんらかのプログラム知識ある人向けに書かれてるページばかりで
さっぱりわかりません。
0593592
2007/06/03(日) 23:11:19ID:BrDIy+5HWarning: include() [function.include]: Failed opening 'lang/jp.php' for inclusion (include_path='.;C:\xampp\php\pear\') in C:\xampp\security\htdocs\index.php on line 13
https://localhost/xampp/
でセキュリティを押すと上のようなページ表示されてるけど
解説ページ探してもちょっと違うんだよね
なんか間違えてインストールしてるのかな?
0594nobodyさん
2007/06/03(日) 23:12:09ID:???aho-
どう見ても>>588は「自分でコメント欄もどき作っておけ」っていう冗談じゃねーか
日本語大丈夫か?
0595581
2007/06/03(日) 23:13:38ID:ngQVF/3a返信ありがとうございます。
RSSを持ってくる手段についてはfopenを使うか、もしくはRSS読み込みまでやってくれるモジュールを使うか
決めてはいませんでした。仮にfopenで持ってくる場合にどうすれば良いかお聞きしたいです。
0596nobodyさん
2007/06/03(日) 23:25:52ID:???検索すればいくらでも出てくると思うが、、、
jpの言語ファイルがないってインストーラで入れるときに
japanese選んだのかい?
0597588
2007/06/03(日) 23:31:58ID:???くそ、ID出しておけばよかった・・・
0598592
2007/06/03(日) 23:38:39ID:BrDIy+5Hインストール自体が失敗してたのかな?
0599592
2007/06/04(月) 00:07:17ID:fJ2k7ySqDLしたXampp自体のバグだったようです
http://support.exxaxon.co.jp/index.php?topic=30.0
のようにjp.phpってのをコピーしたら表示できました
しかしまぁ1.5.5の時のバグが1.6.2でも解決されてないんですね
これだけで今日6時間かかった危うく挫折するところだったorz
0600nobodyさん
2007/06/04(月) 00:41:14ID:???>しかしまぁ1.5.5の時のバグが1.6.2でも解決されてないんですね
はい、そこ。ちょっと問題が解決したからって、気を大きくしない
逆に言われてしまえば「既知のバグも確認せずにインストールするなんて」ってなるんだから、
正直見苦しいよ
0601nobodyさん
2007/06/04(月) 00:53:50ID:???0603nobodyさん
2007/06/04(月) 01:06:16ID:???どうやって調べればいいでしょうか。
0604nobodyさん
2007/06/04(月) 01:09:03ID:???http://jp.php.net/debug_backtrace
0605nobodyさん
2007/06/04(月) 02:41:59ID:???stream_set_timeout($fp, $idle);
http://php.mirror.camelnetwork.com/manual/ja/function.stream-set-timeout.php
だな
0606nobodyさん
2007/06/04(月) 10:20:36ID:???そんな関数があったのか。前に同じことをしようとしたときはわざわざforkしてた...
でも、スレッド使いたいな。
0607nobodyさん
2007/06/04(月) 11:14:34ID:xiuS9z/Z連想配列内の配列を取り出す方法を考えています。
例えば以下の配列
$a = array(0=>array(0=>"AA",1=>array("A","B")),1=>array("C","D"),2=>array("E","F"));
から$a[0][1]を取り出したい場合どのようなスクリプトならできるのか悩んでいます。
array_slice($a,0,1)だとarray(0=>array(0=>"AA",1=>array("A","B")))のみです。
$aからarray("A","B")の部分を取り出すにはどのようにすればいいのか教えていただけませんか。
0608nobodyさん
2007/06/04(月) 11:17:18ID:???0609581
2007/06/04(月) 11:36:37ID:JYPog2pEどうもありがとうございます。早速試してみます。
0610nobodyさん
2007/06/04(月) 12:00:59ID:DwHDHcMtフォームから、GETでデータをhoge.phpに渡しているんですが、
データが、'を\'にしたり\を\\にしたりと、サニタイズされています。
hoge.phpのインクルードしているプログラム間でそういう記述があると思ったのですが、
hoge.phpの一番上(処理が何もされていないだろうと思う場所)で、
print_r($_GET);
exit;
としても、サニタイズされているんです。
javascriptでも何もしていませんでした。
これってありえますかね?(現にありえてるんで悩んでいるんですが・・・)
アドバイスお願いいたします。
0612nobodyさん
2007/06/04(月) 12:26:25ID:???ってわかってるやつは切ればいいんだけど。
サーバをいじれない環境だと.htaccessでやるしかなくて、
できるかどうか確認するのまでどきどきしちゃうw
0614nobodyさん
2007/06/04(月) 12:38:17ID:???0617nobodyさん
2007/06/04(月) 16:47:52ID:???あれは、脳の中にcronの仕組みがあるという認識で間違っていませんか?
0619nobodyさん
2007/06/04(月) 17:48:34ID:6QRX92pz>中身を隠蔽しておいた方が後で使い回せるし
classに隠蔽したほうが使いまわせれるというのはどういうことですか?
毎回オブジェクトをつくらないといけないですよね?
>>画面遷移が増えてきたり
フォームかurlでしか次の表示に変数は渡せないですよね?
0620nobodyさん
2007/06/04(月) 18:14:19ID:N4khH+faセッションはクッキーと違い、変数をサーバー上に保存しておくものだと本で読みました
ということは、あるユーザーが取得したセッションで管理されてる変数を、
同じページを開いた別のユーザーも共有できるのかと思い、試してみましたができませんでした
これはなぜでしょうか?
ちなみに下記の方法で試してみました
↓ソース
test.php
<?php
session_start();
if(!isset($_SESSION["count"])){
$_SESSION["count"] = 0;
}
else{
$_SESSION["count"] ++;
}
echo $_SESSION["count"];
?>
PCが一台しかないので、同じPC内の2種類のブラウザ(IEとファイアーフォックス)で実験
1 IEで開いてF5を連打し、カウントを適当な数まで増やす
2 ファイアーフォックスで同じページを開く
ファイアーフォックスで開いたとき、IEで表示されているカウント数に関係なく 0 が表示されました
なぜでしょうか?
0621nobodyさん
2007/06/04(月) 18:33:08ID:lLfrP8Zc0624虚弱PHP
2007/06/04(月) 19:03:20ID:???厳密には正しくないけど最初は↓みたいに理解するといいかも。
○ユーザー毎にセッションIDが付けられる。
→ これをブラウザのクッキーに保存
○セッションID毎にセッションファイルが作られる。
→ ブラウザクッキーとして送られたセッションIDをもとに読み出し
0626441
2007/06/04(月) 21:51:29ID:g5MJj3HB>classに隠蔽したほうが使いまわせれるというのはどういうことですか?
>毎回オブジェクトをつくらないといけないですよね?
確かに、書き捨ての簡単な処理しか必要ない、機能追加もメンテも全部一人でこなすというのなら
無理にする必要は無いとは思うけど。
ただ、使えるけど使わない 使えないから使わない
は全然違うから、とりあえず使えるようにすることから始めてみればいいのでは。
メリットを理解するのは
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20060921/248617/ とか、
ttp://www-06.ibm.com/jp/developerworks/opensource/060901/j_os-php-designptrns.shtml とかか、
>画面遷移が増えてきたり
>フォームかurlでしか次の表示に変数は渡せないですよね?
有る意味ではその通りだし、有る意味では違うともいえるかも。
class云々とは若干離れるが、
変数(+オブジェクト)の受け渡しは、 serialize ttp://jp.php.net/serialize を使う方法もある。
最近は json and xajax 使ってるけど。 なるべく画面遷移させたくないからね。
単純な登録・更新・削除だけだと、べたべた書いても変わらないけど
curl+パース→結果によりPOSTを分岐+DB格納 とかを組み合わせた
バッチ系の処理を書くと、クラス化して隔離・隠蔽しとかないと、あとで訳わからなくなってくるんすよ。
まぁ覚えておいて損は無いからまずは習得+模倣から始めればよいと思う。
0627nobodyさん
2007/06/04(月) 21:58:09ID:???>ttp://itpro.nikkeibp.co.jp/article/COLUMN/20060921/248617/ とか、
これはいくらなんでも電波だな。電波と言うか無内容
0628441
2007/06/04(月) 22:13:23ID:g5MJj3HB平易で良くまとまっているポインタが有れば、差してくださいな。
中・高・大・大人(というか環境)によって見え方と捉え方が違うから難しいっす。
0629nobodyさん
2007/06/04(月) 22:26:07ID:5+o3owYSいつ使ったらいいかわからないんです
単に遠まわしにしているとしか感じないです。
ただのユーザー関数とクラス化したもので
例えばどういう処理orアプリにおいて便利なるんですか?
ユーザー関数だと、こういう風に格納しまくらなきゃいけなくて
オブジェクトならこんな風に数行で…みたいな
0630nobodyさん
2007/06/04(月) 22:35:46ID:???0631441
2007/06/04(月) 22:35:58ID:g5MJj3HB乱暴に一言でいうと、単純なユーザー関数だと、抽象化 継承が出来ない。
一連の機能を継承して新たな機能を派生で作るとかね。
遠回しという感覚は確かにその通りに感じると思う。
というか遠回しにしているからこそ拡張出来る。
だから、有る程度の複雑性と多様性が無いと、純粋なコードを書く量は増えてしまうだけで、
メリットを享受出来ないかも。
0632nobodyさん
2007/06/04(月) 22:43:50ID:???一人で開発していて、再利用するつもりもなくて、拡張性の必要もない場合に加えて、
言語はPHPというなら、別にOOPする必要はないんじゃないか。
0633nobodyさん
2007/06/04(月) 22:50:17ID:???とりあえずOOPで書いてみて何がいいのかを体感しようとせず
頭だけで理解しようとする奴にはいつまでたっても無理だから
0634nobodyさん
2007/06/04(月) 22:57:02ID:???そうだと思うよ。急いでその場しのぎで作るなら無理にする必要はないとも思う。
OOPが目的のOOPでの実装は意味がないと思っている。
趣味とか、やっつけ仕事、数百行程度の実装なら別にいいんじゃないか。
ただ、そのまま機能を作り込んでいくと、
「あの機能とよく処理にてる」とか
「あの処理のあの機能を引っぺがして、ちょこっと変えてこっちにも組み込みたい」
「ほとんど似ている手続きなんだけど微妙に分岐が違う一連の手続きを定期的に連続実行したい。」
とかが頻発してくる。
んで、よく似た同じ事をコピペとかでくむと、後で修正するときも、同じような機能で微妙に違う箇所を
grepして抽出して、書き換えるとかいった面倒なことになる。書き換えるだけならいいけど、テストも過給的に
増えてメンドクセーとかね。
だから、必須ではないけど、使えるようにしておいた方が何かとつぶしは効くかも。
0636441
2007/06/04(月) 23:03:21ID:g5MJj3HBID晒し忘れた。
0637nobodyさん
2007/06/04(月) 23:12:23ID:gV5OyYxv0638nobodyさん
2007/06/04(月) 23:22:45ID:???0639nobodyさん
2007/06/04(月) 23:24:34ID:???0640nobodyさん
2007/06/04(月) 23:25:12ID:???0641nobodyさん
2007/06/04(月) 23:29:34ID:???↓
人のソースを見て、自分のソースをリファクタする。
これが、最強の教育アルゴリズム。
0642nobodyさん
2007/06/04(月) 23:33:42ID:???0643nobodyさん
2007/06/04(月) 23:35:13ID:???0644nobodyさん
2007/06/04(月) 23:42:42ID:???ありがとうございます トランバック、RSS、コメントにそれらを管理するものetc
確かに勉強になりそうです
>>641さん方式が向いてそうなのでそれで進めてみますが、おすすめの既存ソースはありますか?
読みやすくて完成度が高いもの、XSS等虚弱性なんて当然なくて
サニタライズがしっかりしているものはどんなものがありますか?wordpressのように高機能でなくて良いです
0645nobodyさん
2007/06/04(月) 23:43:59ID:???http://developer.yahoo.co.jp/
とか使ってなんか面白いものを作るとか。
生きてて変化するデータを使う方が何かと楽しいとは思う。
0646nobodyさん
2007/06/05(火) 00:03:22ID:???0647nobodyさん
2007/06/05(火) 00:26:04ID:/9Tx9T4K0648nobodyさん
2007/06/05(火) 00:31:46ID:m4nsZU4oああー
まずは継承や再利用の価値を勉強すればいいんですね
0649nobodyさん
2007/06/05(火) 00:58:06ID:???if($string == "1"){
$string == "一";
}
0650nobodyさん
2007/06/05(火) 01:03:27ID:???function hoge($val) {
if ($val==0) {return '零';}
$len = strlen($val);
$j = 0;
$kansuuji = array('','一','二','三','四','五','六','七','八','九');
$kurai1 = array('','十','百','千');
$kurai2 = array('','万','億','兆');
$answer = "";
for ($i = $len-1; $i >= 0; $i++) {
if (0==($j % 4)) {
$answer .= array_shift($kurai2);
} else {
$answer .= $kurai1[$j % 4];
}
$answer .= $kansuuji[substr($val, $i, 1)];
}
$j++;
}
}
ちゃんと動くかは知らん
0651nobodyさん
2007/06/05(火) 01:06:28ID:???唯一イベント駆動型のGUIで意味がある。ウインドウやボタンをオブジェクトとして、
オブジェクト毎に色や形(プロパティ)やイベント(メソッド)を定義するだけだから。
0652441
2007/06/05(火) 01:06:53ID:J7TorZ22継承と再利用の価値は 勉強つうか >>630 だとおもう
1)仕事じゃないんだったら、最初は周りくどいことは気にせずテキトーに Aという仕組みを作ってみる。
(登録・更新・削除・参照・バッチ処理があるようなものがいいか)
↓
2)テキトーに作ったAを機能分割、汎用化して一つ一つの処理の複雑度を下げてA’を作る
↓
3) 2を使ってBを作ってみる
↓
4) 1を使って Bを作ってみる
という流れかもね。
初めからいきなり 2) → 3)が作れればそれが最短だけど、
1)を作れないのならば、いきなり抽象化と再利用ができるようにはならないかも。
ついでに言うとコーディングレベルでの抽象化と再利用だけだとうまく分割出来ないともいえる。
規模・要件によって、最適解と抽象化の粒度は異なるわけ。
再利用する必要が無いものを、汎用化して工数が余計に掛かる位ならべた書きでも
速攻仕上げた方が最適だったりする。
0653nobodyさん
2007/06/05(火) 01:07:36ID:???1文字だけ変えるのなら>>649のような感じでいいけど、
数文字いっぺんに変えるなら正規表現で置き換えのほうが楽。
30000を三万とかにするならかなり複雑になると思う。
■ このスレッドは過去ログ倉庫に格納されています