【PHP】下らねぇ質問はここに書き込みやがれ 44
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/04/12(木) 16:54:47ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 43
http://pc11.2ch.net/test/read.cgi/php/1175368910/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
001811
2007/04/12(木) 20:57:53ID:jGSSJUCnすみません、ID晒します。
>>15さんの方法でいけました。自分が書いた>>1を分解して
mktimeに当てはめたら、希望通りになりました。ありがとうございました。
0021nobodyさん
2007/04/12(木) 22:15:31ID:???0022nobodyさん
2007/04/12(木) 23:48:19ID:???イマドキ、特定のRDBMSに特化したようなPHP解説本は時代遅れ。
二昔ほど前は、Perl/CGIではRDBMSを使わない人が多かったせいで
DBサーバーの設置方法から解説しないと十分にPHPを使いこなせない場合が多く、
それでPHP+MySQLをまとめて解説するような「くだらない初心者向け本」が多かったが
そんな本には元々価値なんてほとんど無いんだよ。
今はPerl/CGIも含めてRDBMSを使うのが常識なので、あえて解説する必要は無くなり
役に立たない本が淘汰されただけ。
0023nobodyさん
2007/04/12(木) 23:51:12ID:???データベースとの連携って必須だと思われますか?
phpのみでいけそうですか?
0024nobodyさん
2007/04/12(木) 23:54:19ID:???必須かどうかと問われたら全然必須じゃない。
元々、RDBMSが「必須」になる場合ってのはほとんど無く、
大抵は信頼性・高速性・機能性を求めて
「より良いものとして」RDBMSを使うことを選択するものだ。
それらの条件を捨て去れば、ほとんどのシステムはRDBMS無しでも組める。
0025nobodyさん
2007/04/12(木) 23:58:57ID:???phpの処理は軽いと聞くのでDB無しでも大丈夫そうかな?
でもアップローダ色々探してみたんですけど検索機能の付いたものって1つも見つからないんですが
やっぱり自分でつくってみるしかないのかなぁ。
0026nobodyさん
2007/04/13(金) 00:03:57ID:???PHPの処理が軽いってのはCGIと比べてのオーバーヘッドの有無の話で、
ファイルアクセスとかは全然速くないので今回の話とはまるで関係しない。
大丈夫かどうかは「要求するシステムの性能」による。
・アップロードされるファイルがどのくらいの数があるのか
・同時に何人くらいのユーザがアップロードや検索をかけてくるのか
・予想される最大アクセス時にどのくらいの速度で検索結果を出したいのか
によって選択すればいい。
これらが大したことないのであればDBは無くてもそれほど困らない。
ただ、DBを使えば複数同時アクセス時にログが壊される心配などが無くなるので
気楽にプログラミングができるというメリットもある。
0027nobodyさん
2007/04/13(金) 02:02:30ID:???>気楽にプログラミングができるというメリットもある。
ふ〜ん(笑)
0028nobodyさん
2007/04/13(金) 02:08:16ID:???最近C#も楽しい。
ただJavaだけは好きになれない。
全く持って面白くない。なんでだろ?
0029nobodyさん
2007/04/13(金) 02:30:00ID:5ULGyn4lSHA1って非可逆なん?cryptよりもいいん?
0032nobodyさん
2007/04/13(金) 10:19:02ID:6sDwYx0uDBを登録更新するものと、DBから取り出してきて表示する2つのスクリプトがあるのですが、
ちょうど更新中に、表示側のスクリプトにアクセスしたときってどうなるんですか?
DBの更新は100項目5秒ほどで終わると思うのですが、
更新したとこまでのデータがちゃんと表示されるのかな?
0033nobodyさん
2007/04/13(金) 10:20:15ID:???0034nobodyさん
2007/04/13(金) 10:29:42ID:6sDwYx0uナルホド・・・
クエリーを上から1つずつ実行してるので、
更新したとこまでしか表示されなさそうですね。
どうまとめるか今のスキルじゃ検討がつきませんが、
そのうち全て1回で処理するように書き換えたいですね。
0035nobodyさん
2007/04/13(金) 10:30:57ID:???100項目の更新ってupdateを100回なのか?1回のupdateで100項目が更新されるのか?
1回のupdateで全部更新されるなら、それが終わるまではselectが止まる。
よって5秒後まで表示自体が行われない。
100項目がバラバラのupdate実行ならそこまでの内容が表示される。
0036nobodyさん
2007/04/13(金) 10:34:08ID:???全部更新されるまでselectできないようにするなら
update前にlock tableをかけとく手もあるよ。
0037nobodyさん
2007/04/13(金) 10:36:06ID:6sDwYx0u効率は悪いかもしれませんが100回updateです。
1回のupdateにかかる時間は、0.1秒〜1秒ほどで、
それを100回行っています。
>1回のupdateで全部更新されるなら、それが終わるまではselectが止まる。
>よって5秒後まで表示自体が行われない。
これは困りますね。最長1分ぐらいは止まるので。
0038nobodyさん
2007/04/13(金) 10:49:22ID:6sDwYx0u実はSQLは覚えたてなので、lock tableなるものは知りませんでした。
DBの排他制御ですか。
全部更新されるまでは1分以上とまる可能性があるのでやめようと思います。
>更新をできるだけ早く処理するために、WRITE ロックは、通常、READ ロックより優先されます。
>そのため、あるスレッドが READ ロックを取得し、別のスレッドが WRITE ロックを要求している場合、
>後続の READ ロック要求は、WRITE スレッドがロックを取得し、その後そのロックを解除するまで待機します。
ということなので、update文1つ1つにWRITEロックをし、表示スクリプトにREADロックをしようと思います。
なんかスレ違いすみませんでした・・・
0040nobodyさん
2007/04/13(金) 11:04:01ID:???必要ないですか?ならばしないことにします。
書き方が悪かったです。
update処理自体はすぐ終わるのですが、
update内容を取得するプログラムが、
サーバの応答時間によって変わるので、
(サーバダウン時の対策でtimeoutを1秒に設定しているので最長1秒)
それで処理が遅れるっていう話です。
DBとは無関係でしたね。すみませんorz
0042nobodyさん
2007/04/13(金) 11:23:01ID:???1トランザクションにすればいいだけじゃないか?
それで全部updateする前かした後かどちらかになるっしょ
selectが止まることはない
0043nobodyさん
2007/04/13(金) 11:36:44ID:6sDwYx0u>>41
更新感覚が3分と短いので、取得に1分かかっては4分ということになってしまうので、
順番に登録という設計にしたのですが、やはりこっちのほうがいいですかね。
>>42
これがトランザクションの開始ですかー
勉強になります。(PHPスレで何勉強してるんだorz)
timeout感覚を0.1秒(100ミリ秒)にして、(これなら最長10秒ほどに)
>>41さんの設計にして、BEGIN〜COMMITでupdateしてみたいと思います。
スレ違いに付き合っていただいて感謝です。
0044nobodyさん
2007/04/13(金) 11:47:18ID:???どういう更新しようとしてるか分からないから何とも言えないけど、
データ取得とSQL発行は普通は分けるね。
まとめて取得+トランザクションやればまず確実じゃね。
0045nobodyさん
2007/04/13(金) 11:52:19ID:6sDwYx0u>じゃ2分ごとに処理を実行させればいいじゃん?
3分ほぼちょうどに拘りたくて。
ただよくよく考えると、後ろのほうのデータがどっちみちずれるので、
"だいたい"3分でいいですよね。ちょっと拘りすぎてました。
>データ取得とSQL発行は普通は分けるね。
>まとめて取得+トランザクションやればまず確実じゃね。
参考になります。一般的にこうならやはり分けることにします。
これ以上はDBスレっぽくなってしまうので、これで引きたいと思います。
皆さんお答えくださってどうもありがとうございました。
0047nobodyさん
2007/04/13(金) 13:34:41ID:???どちらがいいでしょうか?
0048nobodyさん
2007/04/13(金) 13:35:51ID:???0050nobodyさん
2007/04/13(金) 14:38:34ID:pJrPoZVNfsockopen ($addr, $port, $errno, $errstr, $timeout);
で配信している時の確認はいいのですが、配信してない時には
>>環境によってはUNIXドメインまたはオプションの接続タイムアウトは利用 できません。
というわけで永遠に探しに行って固まります。
なにかfalse時の良い処理はないでしょうか?
0052nobodyさん
2007/04/13(金) 15:14:41ID:???ちゃんとクッキーを食べさせてからリダイレクトされますが、
これはブラウザの標準的な動作ですか?
ブラウザによって、このやり方では駄目ということはないでしょうか?
トリッキーなやり方の気がして
動かない環境があるか気になってます。
0053nobodyさん
2007/04/13(金) 15:27:50ID:???0055nobodyさん
2007/04/13(金) 15:36:44ID:???マニュアルを見ながら、数行の簡単な処理をこなしていけば、
自然とできるようになるもんだよ。
>どんな工程が必要でそのためには何の関数を使うとかが知りたいです
それは作る人によって工程は異なるし、使う関数も異なる。
実装する機能によって異なってくるから決まったものにはならない。
プログラムの面白いところは、1パターンではなく、
何パターンのやり方でも、結果として同じものが作れるという所。
0056nobodyさん
2007/04/13(金) 15:59:00ID:???何も返さないというときに返り値にnullを指定してもいいんですよね?
結果はどっちとも同じになるのですが、意味あいが違うんだと思います。
nullっていまいちよくわからない・・・
0057nobodyさん
2007/04/13(金) 16:05:25ID:???0058nobodyさん
2007/04/13(金) 16:33:27ID:???それは承知です。しかし、覚え方のタイプの違いだと思うのですが。
確かに理系の頭ではないです。
>>55
では、参考になるコードが書かれているURLなどありますでしょうか?
よろしければ教えてください。
0059nobodyさん
2007/04/13(金) 16:52:03ID:???公開されてるソースが腐るほどあるだろ
0060nobodyさん
2007/04/13(金) 17:00:59ID:???むしろreturnを書かなくていい。値を返さないってことでnullになるから。
もし条件によって値を返さない時があるなら、
return;だけで値は書かなくていい。これも同じくnullになる。
空の文字列は普通に空の文字列、nullは値がないって事。
たとえばisset()でfalseになるとかね。
しかしID出さないの増えたね。
0061nobodyさん
2007/04/13(金) 17:03:44ID:???現在の実力でできる範囲でいいからそれを少しずつ作っていく。
その過程で分からないことが出てくるからそれを随時調べたり、
調べていく過程で興味を持った情報を深く調べてみたりしてれば、自然にレベルアップしていくよ。
0063nobodyさん
2007/04/13(金) 17:10:38ID:???作り出すため何が必要か情報収集して、実際に色々作ってくしかないわな。
ある程度やったら作り始めるのが一番早いだろうし。
0064nobodyさん
2007/04/13(金) 17:34:46ID:???すごいよくわかる。
やりたてのころはいきなり掲示板とかメールフォームをつくりたくて教本とか
webからコードぱくってたけどけど、
勉強していくうちに知識をためてくと自分らしい組み立てができるようになった
0065nobodyさん
2007/04/13(金) 17:35:33ID:???0066nobodyさん
2007/04/13(金) 17:52:17ID:???前質問したらどれでも好きなの嫁って言われて困ってphpshotの掲示板読もうとしたけどよく読めなくて
今はとりあえずレッツphpの掲示板読んでる
作りたいのは掲示板じゃないんだけど掲示板の動作が参考になるかなと思って
こうしたらもっと効率よく出来る ってより こういう場合は定番としてこういう処理する ってのが知りたい
公開されてるものが腐るほどあるのはわかる でもどれ見ていいのかよくわかんないんだよ
0067nobodyさん
2007/04/13(金) 18:07:01ID:???まずは配列関数のarrayから。その次にempty。その次に・・・
と順番にこなしていけ
それでおぼえる
0069nobodyさん
2007/04/13(金) 18:12:14ID:???ひとつ、ひとつ作りこんでいけばいいだけだよ。
まずはフォームに入力したデータをcsvファイルに書き込む、
次にそのcsvファイルをHTMLで一覧表示する、
次に10件ずつデータを表示して「次のページ」のリンクを表示させる。。。
という感じで。
まず何を作りたいか設計して、順番に作っていくのが基本だから、
その作業の中で、そこはどう処理しているのか参考になりそうなスクリプトを
見ていけば理解は早いかと。というより初心者向けの本を何冊か手元において
おけば、必ず分かりやすい解説がどこかの本にあるとおもう。
あとはばかばかしいかもしれないけど、参考にしたいスクリプトをそのまま
模写、つまり打ち直す。厳しいけどそれが習得の基本らしいよ。
0071nobodyさん
2007/04/13(金) 18:16:00ID:???プログラムセンスある奴にはウケが悪い言語だからw
0073nobodyさん
2007/04/13(金) 18:18:47ID:???他人の書いたソースを一から読み進めるのってよっぽど読みやすい書き方してない限りはただの苦行だぞ
0074nobodyさん
2007/04/13(金) 18:19:00ID:???他のスクリプトを読むのはいいけどその背景となってる考えを理解しないと最悪な勉強法だぞ。
掲示板作るために何をすればいいかさっぱり分からないうちは、ソースを読むことではなくもっと基礎を学ぶ時期だと思うが。
ちなみに定番を知りたいならマニュアルが最高にお勧め。
0075nobodyさん
2007/04/13(金) 18:21:22ID:???適当にソース拾ってきてごちゃごちゃいじってりゃ
嫌でもわかるようになるだろ
悩む暇があったら読め書けそして動かせ
0076nobodyさん
2007/04/13(金) 18:24:25ID:???>こういう場合は定番としてこういう処理する
具体的にどの場合か、ここで質問しちゃうほうがいいんじゃないの?
5通りぐらい方法が出てきたら笑うけどw
0077nobodyさん
2007/04/13(金) 18:35:38ID:???ちゃんとローカルなテスト環境作って、とりあえず動かすことだけ考えて前に進みまくれ
あまりにもおかしい書き方はそのうち気付く
0078nobodyさん
2007/04/13(金) 18:35:49ID:???むしろ変な癖つくから絶対参考にしないほうがいい気がする
0079nobodyさん
2007/04/13(金) 18:40:22ID:???0080nobodyさん
2007/04/13(金) 18:55:57ID:???0081nobodyさん
2007/04/13(金) 18:57:31ID:???定番とか気にせずにまず作れというのは同意。
0082nobodyさん
2007/04/13(金) 19:20:42ID:???手取り足取り教えてもらっても、全く自分のためにならない。
人に聞いてしか問題を解決出来ないならプログラムなんか出来ないよ。
ヒントや自分で探す術を覚えない限り、教えてもらって終わり。
そのレベルに達していないなら、まずは気に入ったテキストとマニュアルと関数逆引きを読んでみるべき。
0083nobodyさん
2007/04/13(金) 19:40:35ID:???↓
名前で検索する→ひっかかったサイトを自分で見に行って時間をつぶす
↓
【ほしい】を【買う】へ→【買う】から【ショッピング】に変換する
↓
でてきたサイトをチェック
↓
ヤフーショッピングでWindowsVistaが買えることがわかったが、
いろんなバージョンがあってどれを買えばいいのかわからない。
↓
検索キーワードを変えて振り出しにもどる
上級者だってはじめから何でもわかるわけでもなかったんだ。
何か壁にぶつかったら自分で検索して調べる能力があるだけでも効率があがるから
0084nobodyさん
2007/04/13(金) 19:46:42ID:???でも他の人がどう処理しているのかは気になる。
今、プログラム系の学校とかどうなんだろ。
チュートリアルをこなすだけなのかな?
自分のスクリプトを評価してくれる人はちょっと欲しい。
0085nobodyさん
2007/04/13(金) 19:47:55ID:???0087nobodyさん
2007/04/13(金) 20:12:46ID:???0088nobodyさん
2007/04/13(金) 20:13:58ID:???0089nobodyさん
2007/04/13(金) 20:17:19ID:???プログラミングヲタになれないと続かないし伸びないよ
0090虚弱PHP
2007/04/13(金) 20:21:18ID:???俺はソース読んだことないけどw
定番とかは確かに知りたくなるもんだけど、
その前にスパゲッティソース作ってにっちもさっちもいかなくなる経験はした方がいいと思う。
0091nobodyさん
2007/04/13(金) 20:27:51ID:???0092nobodyさん
2007/04/13(金) 20:44:51ID:???009466
2007/04/13(金) 21:23:47ID:???自分なりにどんどん書いて動いた。
動かないときは手直ししていけばそれでよかったんだけど逆に動いてるときに
これでいいのかな?何かまずい処理してなかったかな?
って気になって他人の定番のソース見るのがいいかと思ったんです
定番と比べて抜けてる処理があれば自分の見落としがわかるかなあと。
自分で気付くようになるまで放置で大丈夫なんですね。ありがと
0095nobodyさん
2007/04/13(金) 21:26:22ID:???まぁ遊びならいいんか
0096nobodyさん
2007/04/13(金) 21:50:11ID:???だからショボイのでもソース公開したほうがいいよ。
小粒でも人の役に立つのを書くとかね。
欠点を突っ込んでもらったほうがいい。
短ければここでソース晒すとかね。
第二回 自作スクリプト発表会【PHP】
ttp://pc11.2ch.net/test/read.cgi/php/1156116687/
とかもある。
0097nobodyさん
2007/04/13(金) 22:42:30ID:???早く読むのはそれなりにコツみたいなものが必要だからヒマなときにでも磨いとくといいよ。
ctagsとかそういうたぐいの物の扱いに慣れとくとかね
0098nobodyさん
2007/04/13(金) 23:29:51ID:???以後の処理はロックかかってる事に
なってるんですかね?
ロック解除まで
$cwlog=fopen("comment.txt","a+");
flock($cwlog,LOCK_EX);
$noline=file('comment.txt');
$nocount=count($noline)-1;
$bno=explode("\t",$noline[$nocount]);
$no=$bno[0]+1;
$cwdata="$no\t$name\t$contents\t$time\t$delkey\n";
fputs($cwlog,$cwdata);//$wlogの最初の行に$wdataを追加
flock($cwlog,LOCK_UN); //ファイルロック解除
fclose($cwlog);//ファイルを閉じる
0101nobodyさん
2007/04/14(土) 05:40:57ID:???fclose前のロック解除は不要だしあまり推奨もされない。
バッファフラッシュ前にロックを解除しちゃあかんよ。
fcloseすればバッファをフラッシュした上でロックも自動解除してくれる。
flockでのロックは「他のプログラムも同じ方法でロック処理をしてくれている」
という前提で使うものだが、それが満たされているなら特に問題はないかと。
NFS環境とかでは正常動作しなくなったりするけどな。
0102nobodyさん
2007/04/14(土) 06:07:20ID:???WEB制作はプログラムのスキルだけじゃだめだからねえ。
PHP使えるWEBデザイナーも増えてきてるし、WEB制作の中の
ひとつの技術としてとらえるのが普通じゃねえかな。
オタプログラマーじゃなくてWEB制作オタなんだよね。
0104nobodyさん
2007/04/14(土) 09:49:01ID:NyirOBTJ俺のことか
0105nobodyさん
2007/04/14(土) 09:53:14ID:6mTTKqeLいっちょ前に
善人面こいて偉そうに他人を評価できると思っている
ずうずうしい滑稽な
糞団地住民ども死ね。
0106nobodyさん
2007/04/14(土) 12:15:24ID:Okv6CUFW1.クラスや関数・変数などのネーミングはPascal Camel どちらが推奨、というか基準みたいなのある?
2.if とか foraech とか(自作問わず)関数とかで使う半角スペースってなんか基準ある?
if($i=0) //スペース全くなし
if ( $i = 0 ) // ()の前にも、()内の前後にもスペースあり
我ながらくだらね〜質問かと思うけど、プログラマーさんなら結構いいたいことがあるかな〜と期待してw
0109nobodyさん
2007/04/14(土) 12:34:53ID:???逆だ。
技術を次々と習得できる人間はだいたい優秀なんだよ。
デザインセンスのないやつはPHPを覚えるセンスもやっぱりない。
最近は才能格差が激しいね。
0110nobodyさん
2007/04/14(土) 12:40:44ID:???下等生物に相応しい下等言語。
HTMLに毛が生えた程度のレベルであり中学生でもマスターできる。
むしろPHPを覚えることは恥である。
このような恥ずかしい言語をマスターしていい気になってるやつは
(ry
0111nobodyさん
2007/04/14(土) 12:45:51ID:???だめなやつはなにをやっても…
>>110
中学生でも使える言語をマスターしてないお前は
世間の笑いものだな…
0112nobodyさん
2007/04/14(土) 12:46:27ID:???専任のWebデザイナーやネットワーク技術者が居てもね
プログラミングヲタでもWeb製作ヲタでもいいけど、ヲタがヲタ知識を増やす要領で勉強する方が楽しいし伸びるよって話
>>110みたいなタイプのヲタではダメだけどねw
0113nobodyさん
2007/04/14(土) 13:33:56ID:xk0Q7Wzmこのひとってまだ生きてるの?
0114106
2007/04/14(土) 16:08:13ID:???推奨する記述ってあったのね、勉強になった。
ところで foraech とか書いている俺はアホですか。
0115nobodyさん
2007/04/14(土) 16:23:45ID:???勉強になりました
0116nobodyさん
2007/04/15(日) 01:06:25ID:???試しに別のサーバを利用してみたら、正常に取得できました。
allow_url_fopen は On になってます。
どこか設定の違いだと思うのですが、
他に設定が必要な所ってありますか?
詳しい人、教えてください。
Warning: file_get_contents(http://www.example.com/) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in /****/test.php on line 4
$url = "http://www.example.com/";
$file = file_get_contents($url);
print "$file";
■ このスレッドは過去ログ倉庫に格納されています