【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カテゴリ)の各スレで
0002nobodyさん
2007/04/12(木) 16:56:03ID:???【PHP】下らねぇ質問はここに書き込みやがれ 37
http://pc10.2ch.net/test/read.cgi/php/1169644229/
【PHP】下らねぇ質問はここに書き込みやがれ 38
http://pc10.2ch.net/test/read.cgi/php/1170520777/
【PHP】下らねぇ質問はここに書き込みやがれ 39
http://pc10.2ch.net/test/read.cgi/php/1171280039/
【PHP】下らねぇ質問はここに書き込みやがれ 40
http://pc11.2ch.net/test/read.cgi/php/1172151461/
【PHP】下らねぇ質問はここに書き込みやがれ 41
http://pc11.2ch.net/test/read.cgi/php/1173163186/
0003nobodyさん
2007/04/12(木) 16:57:00ID:???■本家マニュアル http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル http://pear.php.net/manual/ja/
■メーリングリスト http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル http://framework.zend.com/manual/ja/
(以下英語)
■Smarty http://smarty.php.net/
■Zend本家 http://www.zend.com/
■Zend Framework http://framework.zend.com/
■php | architect http://www.phparch.com/
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
0004nobodyさん
2007/04/12(木) 16:57:52ID:???1.文字コードは何を使えばいいの?
→1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
→ http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
→ Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
→ {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
→ cronかタスクスケジューラを使え。
7.extractって危険なの?
→変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
→ .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
0005nobodyさん
2007/04/12(木) 16:58:40ID:???→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
→ データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
→ ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
→ 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
→ よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
15. クッキーの情報をユーザから隠したい
→ セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
→ strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
→ まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
→ C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
→ fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
→19.を参照
21. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
0007nobodyさん
2007/04/12(木) 17:34:39ID:W4YgAsOnPHP+MySQLの本がなくて、アマゾンや有隣堂で検索してみると大部分のこの手の本が絶版に
なってるんですが、もはや主流ではなくなったってことですか?
0008nobodyさん
2007/04/12(木) 18:08:12ID:???0009nobodyさん
2007/04/12(木) 18:10:26ID:???主流かどうかはしらないけど、
普通にPHP+MySQL使ってるよ。
本がないならWebで勉強するのも手だと思う。
資料たくさんあるしね。
0011nobodyさん
2007/04/12(木) 18:26:29ID:jGSSJUCn$period = 5 //表示する期間
こういう条件だとして、現在の日時から終了日時を割り出したいと思っています。
(2007-04-17 18:24:00 こう表示したい)
そこで
echo date("$today",strtotime("+$period day"));
とかしてみましたが、思い通りになりません。どのように記述したら良いのでしょうか?
0012nobodyさん
2007/04/12(木) 18:42:36ID:???どうもです。入門用のPHP+MySQL本がほとんど絶版になっていて、アマゾンではコレクターとして
1冊8000円〜1万円になってるのもありました。
やりたいことは、下記の価格コムみたいに、絞り込み検索、並べ替えができる商品リストを
作りたいんです。個人サイトですが。
http://kakaku.com/bb/ranking/1110000011401500000000000000000000012000/
普通のPHPとMySQL、SQLiteの本で大丈夫ですかね…?
0013nobodyさん
2007/04/12(木) 18:43:39ID:???, 二¨-―-- 、`丶、
/_ ..-――-.. 、十ヽ\
//::.::,:.:.:./::/::.::.l::.::`ヽ、\ヽ
〃::/:::/:.:.:/::/::.:/::|::.:、:.::.::ヽ ハ `、
l::.:::l:: ,':l:::/::/::.:/::;小:::l::ト、::.:V l ヽ
{::.:::|:::l::|::l::/::.:/::/:/:_j⊥l::ヽ:!} \
. ハ::.::l:::|┼く:/::/ /'´ノ ヽ:∨::.:l | /
〈 l::.:|:::l::|∠、ノ , =≡V::.::/|/
ヽヘ::ヽ::V⌒゙ , "゙ / :::,' l〔
/rヘ::\ ゛゛ rーヘ 彡: / /:::Y⌒i 下らねぇ質問は
l冫/ }`ヽミヽ、ヽ、ノ, イ:`7十/::.::.:l | ここに書き込みやがれ
// /:::_rヘ_`二√ __〉/ レヘ::} | ですぅ!
// ,'/夕r==、∨---/、/ f==ミフ 厂ト、
. // 〃r7,イ| >トマ ̄〉 7ヽ厶ィ {ヽ 」__/ / 〉
, -‐'7/ /:.rク/ {ニ=彳/ ハ ∨, / ̄:{八_‐-┴勹
/ / /: :/7/ /,イ/ / /、/_ /: : : :|:厶 `^´ 人
ヽ冫< / {: : :Y〈__ //〃 ,' / 7ヽ ,仆、: : :|| : :`¨¨´: :冫、
\/ rヘ :`ヾ//__/> //V/ /」 ハ: : l|: :丶: : : ,': ヽヽ
0014虚弱PHP
2007/04/12(木) 19:48:07ID:???これを買うのはもう愚行。
PHP本なら定番はマンモス本かなぁ?
赤マンモスが初心者向け。
0015nobodyさん
2007/04/12(木) 20:48:31ID:???$today = mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("y"));
echo date("Y-m-d G:i:s",$today + ($period*24*60*60));
こんなん?
てきとーだから動かなくてもしらん
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。その次に・・・
と順番にこなしていけ
それでおぼえる
■ このスレッドは過去ログ倉庫に格納されています