【PHP】下らねぇ質問はID出して書き込みやがれ 114
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2012/01/02(月) 02:03:25.50ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 113
http://kohada.2ch.net/test/read.cgi/php/1322564127/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0002nobodyさん
2012/01/02(月) 02:04:06.84ID:???【PHP】下らねぇ質問はID出して書き込みやがれ 112
http://hibari.2ch.net/test/read.cgi/php/1320005469/
【PHP】下らねぇ質問はID出して書き込みやがれ 111
http://hibari.2ch.net/test/read.cgi/php/1317232566/
【PHP】下らねぇ質問はID出して書き込みやがれ 110
http://hibari.2ch.net/test/read.cgi/php/1314692611/
【PHP】下らねぇ質問はID出して書き込みやがれ 109
http://hibari.2ch.net/test/read.cgi/php/1311803617/
【PHP】下らねぇ質問はID出して書き込みやがれ 108
http://hibari.2ch.net/test/read.cgi/php/1309599473/
【PHP】下らねぇ質問はID出して書き込みやがれ 107
http://hibari.2ch.net/test/read.cgi/php/1307228162/
【PHP】下らねぇ質問はID出して書き込みやがれ 106
http://hibari.2ch.net/test/read.cgi/php/1304064660/
【PHP】下らねぇ質問はID出して書き込みやがれ 105
http://hibari.2ch.net/test/read.cgi/php/1300302034/
【PHP】下らねぇ質問はID出して書き込みやがれ 104
http://hibari.2ch.net/test/read.cgi/php/1297669559/
【PHP】下らねぇ質問はID出して書き込みやがれ 103
http://hibari.2ch.net/test/read.cgi/php/1295956018/
【PHP】下らねぇ質問はID出して書き込みやがれ 102
http://hibari.2ch.net/test/read.cgi/php/1292670453/
0003nobodyさん
2012/01/02(月) 02:04:24.09ID:???■本家マニュアル 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://www.smarty.net/manual/ja/
(以下英語)
■Zend本家 http://www.zend.com/
■Zend Framework http://framework.zend.com/
■php | architect http://www.phparch.com/
■Smarty http://www.smarty.net
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
0004nobodyさん
2012/01/02(月) 02:04:38.64ID:???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さん
2012/01/02(月) 02:04:53.06ID:???→ 確認すべきは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に保存?
→ 好きにしてください
0006nobodyさん
2012/01/02(月) 02:05:31.26ID:???0008nobodyさん
2012/01/02(月) 04:10:13.34ID:Vsxd7/Vo本当ですか?
0009nobodyさん
2012/01/02(月) 06:47:39.02ID:l3XFfeoy0011nobodyさん
2012/01/02(月) 09:29:15.27ID:???アクセスごとに処理されるわけだし
例えば全部のアクセスをメモリ上に置いたシングルトンなインスタンスで処理できるようなものになれば話が違ってくるけど
0012nobodyさん
2012/01/02(月) 09:31:14.28ID:???0013nobodyさん
2012/01/02(月) 09:37:46.62ID:???一度の処理でオブジェクト1つに制限したいとか2つに制限したいとか好きなように使えばいいだろ
0014nobodyさん
2012/01/02(月) 09:50:33.58ID:???PHPの書籍スレでベテランを装った素人が「PHPでシングルトンは出来ない」とか言ってるのを真に受けた?
デザインパターンを全く理解してない人のたわごとだから無視していい。
0015nobodyさん
2012/01/02(月) 09:53:32.11ID:???0018nobodyさん
2012/01/02(月) 11:02:52.10ID:???Pear Class: Net_UserAgent_Detect
PHP4でsingleton実装してる。
http://pear.php.net/package/Net_UserAgent_Detect/docs/latest/Net_UserAgent/Net_UserAgent_Detect.html#methodsingleton
0019nobodyさん
2012/01/02(月) 12:14:22.05ID:???0020nobodyさん
2012/01/02(月) 12:20:49.99ID:???0021nobodyさん
2012/01/02(月) 12:29:16.32ID:Vsxd7/Vo公式サイトに書いてありました。
シェアードナッシングとはプロセスごとにメモリ空間バラバラに
なるからということか。
このへんはマルチスレッドな言語とは事情が違うわけですね。
www.php.net/manual/ja/language.oop5.patterns.php
0023nobodyさん
2012/01/02(月) 16:10:22.97ID:???公式サイトにもPHPでは意味ないかもって書いてあるじゃん。
まったく無意味ではないけど複数プロセス・複数メモリ空間のPHPでは
本来の意味は無いって。
0025nobodyさん
2012/01/02(月) 17:10:05.14ID:???0026nobodyさん
2012/01/02(月) 17:18:55.87ID:jFXHaYiBクラス名でもAという名前をつけるとエラーが出たのですが
インターフェースとクラスでも名前がかぶるといけないのでしょうか?
0027nobodyさん
2012/01/02(月) 17:23:24.40ID:???それはオブジェクト設計がおかしい
0028nobodyさん
2012/01/02(月) 17:25:38.11ID:???どこがわかっていないか説明してあげてね。
>>25
おっしゃるとおり。1プロセスで1インスタンス生成。
PHPの場合は複数のプロセスで動くのでサイト内で
唯一のインスタンスにはならないね。
0029nobodyさん
2012/01/02(月) 17:43:31.44ID:???0030nobodyさん
2012/01/02(月) 17:46:06.37ID:jFXHaYiB設計がおかしいということはやはり、
同じ名前はつけられないことになってるんですね
ありがとうございます
0031nobodyさん
2012/01/02(月) 18:03:00.77ID:Vsxd7/Voこういった場合どのようにするのが効率的ですか?
トップページにニュースを表示させます。
ニュースのデータはDBへ保存しています。
ニュースは誰が訪問しても同じデータですので、
ユーザーごとにDBへ取りに行くのは不効率です。
そのためDBから取り出したデータを
他のユーザーもDBへ再アクセスせずに利用できるようにしたいのですが
どのような方法がありますか?
それともやはりユーザーごとにDBへ取りに行く必要があるのでしょうか?
0032nobodyさん
2012/01/02(月) 18:10:28.67ID:???サーブレットのライフサイクルを知らないんでしょ
>>30
コーディング規約でググるといい
クラス…名詞、インターフェース…形容詞と分けたり
プレフィックス (IUnko, IChinko) を付けたり
なぜそうしているのか?等勉強になるから
0033nobodyさん
2012/01/02(月) 18:24:49.10ID:???str_replaceとかstrlenとかなんだよ
str.replace str.lenとか
strreplace strlenとか
str_replace str_lenとか
いつになったらこういうのが統一すんだよ
一部でオブジェクト化してるが今のままで全ての手続き型からオブジェクト型に移行するのにPHP8ぐらいいきそうだな
0038nobodyさん
2012/01/02(月) 19:09:23.14ID:Lu/m0VMPサーバを再起動するとmemcachedに入っているデータは飛びますか?
0039nobodyさん
2012/01/02(月) 19:10:51.80ID:Vsxd7/Vo>>37
やっぱりそうなっちゃうんですね。
アプリケーション全体みたいなやつがあればいいんでしょうけど
PHPには無いのですね。わかりました。ありがとうございました。
0040nobodyさん
2012/01/02(月) 19:11:25.15ID:???APCなんかは無理だけど
つーかググれよ
0041nobodyさん
2012/01/02(月) 19:13:03.21ID:???おまえそもそもPHPをなんだと思ってるんだよ
トンチンカンすぎるだろ
ちなみにトンチンカンって言葉聞いたのすっげ久しぶりだ
0042nobodyさん
2012/01/02(月) 19:21:02.53ID:Vsxd7/VoPHPって今最も優れたサーバーサイド言語ですよね。
何かお気に障りましたか?
0043nobodyさん
2012/01/02(月) 19:24:45.27ID:???0044nobodyさん
2012/01/02(月) 19:25:31.63ID:Lu/m0VMPサーバを再起動してもmemcachedで保有するデータは飛ばないって事ですか
でもmemcachedを再起動したら飛びますよね?
こういう場合ってどうやってデータをバックアップしてmemcached再起動後にデータをリストアするのでしょうか?
0045nobodyさん
2012/01/02(月) 19:27:40.54ID:Vsxd7/Voお疲れさん。
今日の釣りはこれで終了する。
ごくろう。
0046nobodyさん
2012/01/02(月) 19:33:37.50ID:???0048nobodyさん
2012/01/02(月) 19:52:33.98ID:???すべてのユーザに同じデータならニュースサイトのRSSひっぱってくりゃいい
なんでもできる状態で”これしかできない”限定の質問が視野狭窄脳梗塞状態
周りにこーゆーヤツが多くてちょっとイラッ☆っときてしまった
反省はしてない
0050nobodyさん
2012/01/02(月) 20:41:19.53ID:???面倒くせえんだよ->ってうつの
0053nobodyさん
2012/01/02(月) 20:54:47.07ID:???低脳が自演すると、自分の間抜けさを補強しちゃうのが悲しいな
黒いものをいくら「白だ!」と自演してもみんなクスクス笑うだけ
0056nobodyさん
2012/01/02(月) 21:17:10.64ID:???0057nobodyさん
2012/01/02(月) 21:18:55.95ID:Vsxd7/Vo釣りって言ってるのに、入れ食い状態。
みんなに正月早々つきあってもらってごめんね。
またネタ用意してくるから待っててねwwwwwwww
0058nobodyさん
2012/01/02(月) 21:21:12.46ID:???'';;';';;,.,
''';;';';;'';;;,., ザッ
''';;';'';';''';;'';;;,., ザッ
ザッ ;;''';;';'';';';;;'';;'';;;
;;'';';';;'';;';'';';';;;'';;'';;;
vymyvwymyvymyvy ザッ
ザッ MVvvMvyvMVvvMvyvMVvv、
Λ_ヘ^−^Λ_ヘ^−^Λ_ヘ^Λ_ヘ
ザッ ヘ__Λ ヘ__Λ ヘ__Λ ヘ__Λ
__,/ヽ_ /ヽ__,.ヘ /ヽ__,.ヘ _,.ヘ ,.ヘ ザッ
/\___/ヽ /\___ /\___/ヽ _/ヽ /\___/ヽ
/ \/ / \ / \
. | | | | | |
| | | | | |
. | | | | | |
\ /\ \ / \ /
/`ー‐--‐‐―´\ /`ー‐- /`ー‐--‐‐―´\ /`ー‐--‐‐―´
「vipに帰ります」「vipに帰ります」「vipに帰ります」「vipに帰ります」
0059nobodyさん
2012/01/02(月) 21:22:02.25ID:???0060nobodyさん
2012/01/02(月) 21:57:14.73ID:???0061nobodyさん
2012/01/03(火) 00:37:02.85ID:5Pk6ggV8ドメインは同じです。
http://www.phppro.jp/phptips/archives/vol45/1
を参考にしてまずはphpのセッションをmysqlに入れる方法を試してみたのですが、
DBを見たところ以下のような形式でデータが保存されていました。
session_id: bhvsjrg7dsroutsea13q1ji52
session_data: name|s:7:"1234567";id|s:9:"123456789";
session_createdate: 2012-01-02 23:44:17
session_idとsession_createdateは特に問題ないのですが、
session_dataの保存形式がよく分かりません。
どういうルールに基づいた形式なのでしょうか?
またこのsession_dataの保存形式を変更することはできるのでしょうか?
0064nobodyさん
2012/01/03(火) 00:47:46.14ID:rKocSQ20PHPでマルチスレッドを実現する方法を教えて下さい。
0065nobodyさん
2012/01/03(火) 00:53:19.06ID:???>>63 apache
>>64 いくらでもあるがなggrks
0066nobodyさん
2012/01/03(火) 01:00:40.26ID:rKocSQ20すみません。
もっと詳しく教えてください。
どうやってマルチスレッドになるのでしょうか?
0067nobodyさん
2012/01/03(火) 01:19:51.05ID:rKocSQ20本当にPHPが単なる並行処理ではなく
マルチな「スレッド」として動くのでしょうか?
どのような仕組みか詳しく教えていただけませんでしょうか?
0068nobodyさん
2012/01/03(火) 01:30:14.56ID:???0069nobodyさん
2012/01/03(火) 01:32:37.21ID:???0070nobodyさん
2012/01/03(火) 01:38:20.07ID:rKocSQ20>>69
>>65の方が教えていただけませんので代わりに教えていただけませんでしょうか?
PHPをマルチな「スレッド」として動かす方法を。
0071nobodyさん
2012/01/03(火) 02:03:49.54ID:???>session_data: name|s:7:"1234567";id|s:9:"123456789";
s:7やs:9ってのはString(7) String(9)ってこと
つまり文字列型の変数で長さが7文字って書いてるだけ
>>70
PHPはマルチスレッド非対応
っぽいことはcURL使えばできる
0074nobodyさん
2012/01/03(火) 02:53:47.08ID:rKocSQ20あなたも嘘つきですか?
0076nobodyさん
2012/01/03(火) 03:48:48.69ID:???確認する暇がないんで嘘付いてたら悪いけど
JSONで保存するならこんな感じかね
> http://www.phppro.jp/phptips/archives/vol45/1
function read ($id) {
global $db;
mysql_select_db("db_name");
$result = mysql_query("SELECT *
FROM session_t
WHERE session_id='{$id}'");
if(mysql_num_rows($result) == 1){
$row = mysql_fetch_array($result);
- return $row['session_data'];
+ $_SESSION = json_decode($row['session_data']);
+ return session_encode();
中略
function write ($id, $sess_data) {
+ session_decode($sess_data);
+ $sess_data = json_encode($_SESSION);
0077nobodyさん
2012/01/03(火) 03:50:58.26ID:???中身と何かしらユーザーと紐付けるユニークなIDだけを格納しておいて新しいSESSIONへ入れるという実装が現実的
0078nobodyさん
2012/01/03(火) 03:52:02.64ID:5Pk6ggV8ありがとうございます。
ちょっと自分で調べてみて、seliarizeという関数がセッションのキーバリューをこの形式に変換していることが分かりました。
0079nobodyさん
2012/01/03(火) 04:00:17.52ID:5Pk6ggV8やっぱりそういう方法になりますかね…
とりあえず
http://www.1x1.jp/blog/2010/12/php_serialize_data_type.html
http://code.activestate.com/recipes/414334/
seliarizeが中でどんなことやってるのかが何となく分かりましたし、
php側での対応は特にせずにjavascript側でseliarize関数的なものを実装しようかと思います。
ありがとうございます。
0080nobodyさん
2012/01/03(火) 04:11:57.55ID:???0081nobodyさん
2012/01/03(火) 04:13:01.20ID:???0084nobodyさん
2012/01/03(火) 14:52:20.49ID:???で取得できるようですが、呼び出し元のローカル変数一覧を取得する方法は
ないのでしょうか?
0086nobodyさん
2012/01/03(火) 16:32:20.69ID:u/AA2OwX【OS名】FreeBSD 8.1-RELEASE-p5
【PHPのバージョン】5.3.8
【連携ソフトウェア】
【質問内容】
関数の呼び出し元はdebug_backtrace()で、ローカル変数はget_defined_vars()
で取得できるようですが、呼び出し元のローカル変数一覧を取得する方法は
ないのでしょうか?
0088nobodyさん
2012/01/03(火) 17:16:36.40ID:u/AA2OwXわかりました。ありがとうございます。
0089nobodyさん
2012/01/03(火) 17:19:27.22ID:???俺はコードを載せてもらわないと答えられないから
サンプルコードを出してもらってどこの変数をどこから取得したいのかコードで書いてくれ
基本的に俺は日本語だけの質問は答えないけど
0090nobodyさん
2012/01/03(火) 17:20:04.63ID:???009186
2012/01/03(火) 18:08:55.19ID:u/AA2OwXfunction a() {
$a = 123;
b();
}
function b() {
// ここでa()のローカル変数を取得したい
// (array('a' => 123))
}
0092nobodyさん
2012/01/03(火) 18:19:55.30ID:???function a() {
$a = 123;
b(get_defined_vars());
}
function b($vars) {
var_dump($vars);
}
0093nobodyさん
2012/01/03(火) 18:25:22.21ID:???$a = 123;
b();
}
function b() {
// ここでa()のローカル変数を取得したい
// (array('a' => 123))
}
これだけ見ると
b()に引数で渡せよってなるね
0094nobodyさん
2012/01/03(火) 18:36:58.73ID:???既に俺は渡した
0095nobodyさん
2012/01/03(火) 18:49:51.05ID:Ccq7mdky同じデザインで、色違いってのが3種類欲しいんだけど
0097nobodyさん
2012/01/03(火) 18:52:03.43ID:???こういう風にクラスに入れとくのは?
class Debug
{
public $debug = array();
public function get_vars(){var_dump(get_object_vars($this));}
}
class Test extends Debug{}
function a() {
$test1 = 1;
$test2 = 2;
$test3 = 3;
// デバッグモード
global $obj;
$obj = new Test();
$obj->debug["test"] = $test1;
$obj->debug["test2"] = $test2;
$obj->debug["test3"] = $test3;
}
function b() {
// デバッグモード
global $obj;
$obj->get_vars();
}
a();
b();
0099nobodyさん
2012/01/03(火) 20:27:11.00ID:???あくまでも同じユーザがリソースを使いまわすためにあるもので
別のユーザが使ってたリソースを別ユーザが再利用するなんてことは出来ない
>>31のようなものは単にキャッシュの仕組みを作ればいい
0100nobodyさん
2012/01/03(火) 20:39:04.35ID:???0101nobodyさん
2012/01/03(火) 20:40:01.09ID:???■ このスレッドは過去ログ倉庫に格納されています