トップページ⇒php
1001コメント296KB

【PHP】下らねぇ質問はID出して書き込みやがれ 126

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2013/02/02(土) 21:41:08.72ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 125
http://kohada.2ch.net/test/read.cgi/php/1357738303/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
04124072013/02/26(火) 16:28:09.70ID:WtFsOe6T
>>411

借りているサーバーなのでtcpdumpが出来ないです、
100件程度だとリクエストが返ってきてる事は確認できました。
0413nobodyさん2013/02/26(火) 16:38:18.56ID:???
じゃあnetstatも見られないってこと?
擬似環境を手元に作るのがいいよ。というか、外部のサーバでそんな怪しげなことやっていいの
0414nobodyさん2013/02/26(火) 16:39:16.30ID:???
1件当たりソケットいくつ使ってるか計算してみた?
04154072013/02/26(火) 17:57:33.12ID:WtFsOe6T
>>413
>怪しげな
一応許可はもらってるはずですが、言われている通りに
プログラムしているだけなのでわかりません。

>>414

その計算方法がわかりません。
1件当たりのリクエストは1kもないと思います。
0416nobodyさん2013/02/26(火) 18:08:56.68ID:???
1件当たり1kもソケット使ってたら鼻がもげる
0417nobodyさん2013/02/26(火) 18:12:16.02ID:???
ほぼ上限だな
04184072013/02/26(火) 18:20:13.24ID:WtFsOe6T
ローカル環境で動かしてみました。上が実行前、下が実行後です。

IPv4 の TCP 統計

アクティブ オープン = 114
パッシブ オープン数 = 2
失敗した接続試行数 = 73
リセットされた接続 = 7
現在の接続 = 21
受信したセグメント = 1017
送信したセグメント = 742
再送信されたセグメント = 152

IPv4 の TCP 統計

アクティブ オープン = 2216
パッシブ オープン数 = 5
失敗した接続試行数 = 540
リセットされた接続 = 103
現在の接続 = 212
受信したセグメント = 14062
送信したセグメント = 14970
再送信されたセグメント = 6287
04194072013/02/26(火) 18:20:43.43ID:WtFsOe6T
下は5分後の結果です。
0420nobodyさん2013/02/26(火) 18:22:53.34ID:???
数字が変わってるなら順調に動いてるんじゃないの?
経過をログに出すようにしてみたら
04214072013/02/26(火) 18:27:43.04ID:WtFsOe6T
>>420

curlでログを出すとしたら受信データそのまま出すことに
なりませんでしょうか?調べてみます。
前回は10000sec動かしても終わりませんでした。
件数が少ないと動いているので、無限ループはないと思いますが。
0422nobodyさん2013/02/26(火) 18:30:27.53ID:???
50サイトずつ10msずらして200回やったらどうか
04234072013/02/26(火) 18:35:17.54ID:WtFsOe6T
>>422

なるほどですね。試してみます。
今出ている要件はこの10倍の件数を1度に処理して
欲しいと事です、まいりました。
04244072013/02/26(火) 18:49:49.81ID:WtFsOe6T
仕事が終わったので帰ります。明日は>>422さんの方法を試します。
返答した頂いた方々、ありがとうございました。
0425nobodyさん2013/02/26(火) 19:18:07.57ID:???
まいりましたって、一度に処理するっていうのを全部並行してやると受け取ったのが間違いじゃないかねぇ。
リクエストの送信タイミングをほぼ同じにしたいとかあんのかな。
0426nobodyさん2013/02/26(火) 20:33:20.01ID:???
>>405
やっぱ、派生した異なるファイルのインスタンスでは共有されないのか。
そうか、クラス名が変わるからか!
0427nobodyさん2013/02/26(火) 20:35:17.51ID:???
クラス名を同じにすればいい
0428nobodyさん2013/02/26(火) 20:45:41.97ID:???
いやいや、クラス名が同じだと意味ないでしょ!
0429nobodyさん2013/02/26(火) 20:57:18.21ID:???
>>426
どんなコード書いたの?隠蔽した?
0430nobodyさん2013/02/26(火) 21:13:51.58ID:???
え?!隠蔽とは???
↓こんなコードなんですが、アドバイスお願いします!
http://codepad.org/BSv0axet
0431nobodyさん2013/02/26(火) 21:17:34.07ID:???
つまり要件としては、上のcodepadのサンプルだと、
fooとbarでhogeのstatic変数$touchを共有したいのですが、
方法はありますか?
0432nobodyさん2013/02/26(火) 21:53:37.14ID:bJMiHUyQ
$no='1';
この$noを数字か判定する関数ってなんでしたっけ?
0433nobodyさん2013/02/26(火) 21:56:42.16ID:???
isnumeric
0434nobodyさん2013/02/26(火) 22:20:30.73ID:XMFJPtNA
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】sqlite
【質問内容】
アクセス解析を行いたいのですが、
sqliteにどのようなデータを入れたらよいのか助言をいただきたいです。

単純にアクセス元と時間だけでもよいのですが、
長いスパンで数千万アクセスあるとsqlite内にかなりデータがたまってしまうと思うのですが、
問題ないのでしょうか?
何かアクセス解析で一般的なデータの入れ方などないのでしょうか?
0435nobodyさん2013/02/26(火) 22:37:44.05ID:???
>434
普通にwebalizerあたりを使ってみて、
足りないところを足したり、要らんとこを端折ったり
0436nobodyさん2013/02/26(火) 22:44:14.28ID:???
>>431
http://codepad.org/8dsXbgA0
どういうことなんだろね。
ちなみに>>366とは違う人?
0437nobodyさん2013/02/26(火) 22:50:05.70ID:KXtCVoKY
>>436
同じ人です。
0438nobodyさん2013/02/26(火) 22:52:15.21ID:???
>>366だと共有されて困る!だけど、>>431では共有されなくて困る!だったから違う人なのかとおもっちゃった。
>>366の件は解決でよい?
>>430と>>431の違いについてはこれからちょっと調べてみる。
何も書かないと継承先にコピーが作られてるような雰囲気だよね。
0439nobodyさん2013/02/26(火) 22:52:55.48ID:KXtCVoKY
>>436
いわゆるオーバーライドってやつですね。
それは知ってますが、それだと、基底クラスで定義する意味がなくなっちゃうんですよね、、、
0440nobodyさん2013/02/26(火) 22:56:27.14ID:KXtCVoKY
>>438
あ、すいません、最初は困ったんですけど、よくよく考えたら便利だと気付いたんです。
0441nobodyさん2013/02/26(火) 22:56:34.27ID:???
あれ、オーバーライドすればこの挙動が変わること自体には納得してるってこと?
知ってるなら教えてください
04424342013/02/26(火) 23:05:02.77ID:XMFJPtNA
>>435
助言ありがとうございます。
Webalizerというものを調べてみたのですが、
apacheのログを解析するもののようで、
アクセス元を集計するというものよりはログ表示用のソフトという感じなのでしょうか?

言葉足らずで申し訳ないのですが、
レンタルサーバでサーバの一部分を使用しているものですから、
うまく使用できないのではと思ったのですがいかがでしょうか?

sqlite内に数千万のデータができてしまった時に問題ないかどうかを知りたいのですが、
どなたか助言いただけないでしょうか?
0443nobodyさん2013/02/26(火) 23:51:37.32ID:KXtCVoKY
>>433
thx!
0444nobodyさん2013/02/27(水) 00:32:28.07ID:???
googleアナルスティック使え
0445nobodyさん2013/02/27(水) 12:10:25.16ID:???
>>442
生ログをそのまま保存すると数十万でも重く感じる。
だから一定周期で集計して、
管理画面などでは集計後のデータを表示するんだよ。
04464342013/02/27(水) 14:25:13.61ID:6JQheFYl
>>445
やっぱりそうなんですね
アクセスごとに生ログを保存しつつ、
cronなどで集計するイメージでしょうか

参考になりました。
ありがとうございました。
0447nobodyさん2013/02/27(水) 18:02:57.95ID:PEaEofv4
オブジェクト指向を勉強し始めたのですが、
$hoge = new self()
self()ってどういうことなんでしょうか
そのクラス自身をインスタンス化するってことなんでしょうか?
0448nobodyさん2013/02/27(水) 18:15:09.30ID:???
コンストラクタを実行するってことです
0449nobodyさん2013/02/27(水) 18:19:02.33ID:???
>>447
()なんていらん
0450nobodyさん2013/02/27(水) 18:22:01.15ID:???
PHPでオブジェクト指向か
0451nobodyさん2013/02/27(水) 18:26:07.39ID:???
>>450
若いうちに転び方を学ぶのはとても良いことだと思うぜ。
0452nobodyさん2013/02/27(水) 18:49:12.26ID:???
selfっていうクラスがあるんだろ
普通そんな名前つけないけど
0453nobodyさん2013/02/27(水) 18:50:46.42ID:???
クラスの最初は大文字にしろって言っただろ!!!!!!!
04544472013/02/27(水) 18:52:14.18ID:PEaEofv4
>>448
__constructでの記述ではなくて、わざわざnew self();にする理由はなんでしょうか

理解できてないソース
private static $_instance = null;
public static function getInstance() {
if (self::$_instance === null) {
self::$_instance = new self();
}
return self::$_instance;
}

selfってクラスはないです
PHPリファレンスにも同じような記述はあるのですが、解説もないのでわからないです
0455nobodyさん2013/02/27(水) 19:09:42.92ID:???
上の回答は全部変だから忘れて。

自分自身のインスタンスのインスタンスを作ってるだけ。
0456nobodyさん2013/02/27(水) 19:10:20.67ID:???
インスタンスのインスタンスってなんだよ・・・
一個消してください・・・
0457nobodyさん2013/02/27(水) 19:11:38.14ID:???
シングルトンかよ
0458nobodyさん2013/02/27(水) 19:13:33.51ID:???
それclass名がHogeだとしたら
普通は new Hoge()って書くんだよ
self()なんてPHPルール覚えたらだめ
04594472013/02/27(水) 19:37:18.12ID:PEaEofv4
呼び出し側でインスタンス化するのではなくて、
呼び出されたときに初回に自動的にそのクラス自体をインスタンス化するってことであってますか?
インスタンス化しなくても呼び出せる静的メソッドにしておいて、
静的メソッドを呼び出した際に、自動的にインスタンス化できるから
__constructを使わずに上記方法を使ってるってところでしょうか?
0460nobodyさん2013/02/27(水) 19:47:05.26ID:???
シングルトンがなんたるかを調べたほうがいいんじゃねえの
0461nobodyさん2013/02/27(水) 20:28:55.66ID:???
__constructはnewによってインスタンスが生成される過程で呼び出されるもの。
派生クラスのコンストラクタから基底クラスのコンストラクタを呼び出したいときなどには明示するよ。

あと、用途にもよるけど new static にするといい場面もあるよ。違いは調べてみてね。

>>458
なにそのクソ規約。
コンストラクタ名も__constructじゃなくてクラス名で書いてそうだね。
0462nobodyさん2013/02/27(水) 20:33:54.10ID:???
PSR-1だろ
0463nobodyさん2013/02/27(水) 20:37:37.90ID:???
__construct使わないとPHP4流で古臭いという勘違いしてるのがPHPerには多いのが問題だな
0464nobodyさん2013/02/27(水) 20:46:11.11ID:???
基底クラスのコンストラクタ呼ぶときに Base::Base() って書くの?
0465nobodyさん2013/02/27(水) 21:14:05.24ID:???
不安になったのかな
0466nobodyさん2013/02/27(水) 21:50:51.34ID:???
なんで基底クラスのコンストラクタをstaticコールしてんの?
0467nobodyさん2013/02/27(水) 22:10:36.17ID:???
え?
0468nobodyさん2013/02/27(水) 22:15:43.19ID:???
self::と 勘違いかな?
0469nobodyさん2013/02/27(水) 22:27:04.15ID:???
__constructってインスタンス化した時に1度だけ呼ばれるもので
それを明示的にコールするっておかしくない?
initializeとか別メソッド作ってそっちを呼ぶならまだしも
0470nobodyさん2013/02/27(水) 22:30:43.83ID:???
なんか勘違いしてるのでは
0471nobodyさん2013/02/27(水) 22:32:21.24ID:???
基底クラスのコンストラクタは自動では呼ばれないよ?
0472nobodyさん2013/02/27(水) 22:35:50.71ID:???
言いたいことをコードで説明汁
http://ideone.com
0473nobodyさん2013/02/27(水) 22:37:22.49ID:???
そうね、>>458や>>463はコードを書いて見せるべき。
0474nobodyさん2013/02/27(水) 22:39:17.90ID:???
いや俺は
>派生クラスのコンストラクタから基底クラスのコンストラクタを呼び出したいときなどには明示するよ。
これが分からん
0475nobodyさん2013/02/27(水) 22:43:25.08ID:???
>>459が__constructを使わずに、と書いてるから
通常暗黙に呼び出されるけど、基底クラスのコンストラクタを呼ぶときは__constructって関数名を使うよって話
0476nobodyさん2013/02/27(水) 22:58:34.67ID:???
いや質問者はそんな事聞いてないでしょう・・・
道理で話が読めないわけだ
0477nobodyさん2013/02/27(水) 23:01:00.00ID:???
> __constructでの記述ではなくて、わざわざnew self();にする理由はなんでしょうか
これは new self()と__constructの区別がはっきりしてない初心者だからこそじゃないの

んで、関連して>>458や>>463みたいなわけ分からん人が出てきた。
多重継承のある言語とは状況が違うんだけどそこを混同してんのかなぁとは思うけど
0478nobodyさん2013/02/27(水) 23:08:25.38ID:???
ソレは、 >>448 みたいな間違ったことかいたやつがいるからだろ。
new演算子と、 コンストラクタはまったく別の概念。
コンストラクタなんて、なくてもいいんだぞ。
0479nobodyさん2013/02/27(水) 23:10:02.86ID:???
>>477
たぶんあなたが一番理解してない

あのコードの前には
private function __construct()
があるはずで
そこにself::$_instance = new self();を記述しないのはなぜかと聞いてるんだよ
0480nobodyさん2013/02/27(水) 23:16:51.48ID:???
>self()ってどういうことなんでしょうか
>selfってクラスはないです
>PHPリファレンスにも同じような記述はあるのですが、解説もないのでわからないです
↓
>>458(ただし質問者に意味がわかるかは不明)

>なにそのクソ規約。
>コンストラクタ名も__constructじゃなくてクラス名で書いてそうだね。
↓
>>463
0481nobodyさん2013/02/27(水) 23:18:22.20ID:???
たしかに、シングルトンというキーワードが出ていたことで、本質じゃないレスをしていたとは思う。
ごめんなさい。
>>459
うん、それに加えて、クラス自身にインスタンスを管理させることで、
インスタンスをひとつに制限する目的があるコードです。

>>478
それは暴論。コンストラクタを記述するかしないかで挙動が変わる場面はある。

>>479
そうなのかもね。
0482nobodyさん2013/02/27(水) 23:27:31.43ID:???
>>481
コンストラクタのないクラス想像すればいいんだよ。

new -> コンストラクタ みたいな話してるから、
インスタンスの生成に必須ではないコンストラクタの話で混乱してんだよ。
0483nobodyさん2013/02/27(水) 23:33:32.60ID:???
結局質問者は何がわからなかったんだろうな
0484nobodyさん2013/02/27(水) 23:35:22.96ID:???
>>482
必須ではないというが、空のpublicコンストラクタの有無で挙動が変わる場面があることを
伝える必要はないのか
0485nobodyさん2013/02/27(水) 23:36:19.11ID:???
>>483
new self()が何をするものなのかが分からなかったんじゃない?
シングルトンを知っていれば予想はついたと思うけど、それも知らなかったのだろう。
0486nobodyさん2013/02/27(水) 23:38:57.60ID:???
中途半端な知識と中途半端な用語を使うとカオスになるのはよくあること。
0487nobodyさん2013/02/27(水) 23:41:21.10ID:???
>>484
質問者無視していろいろやってもあんまり意味ないからあれだけどさ、
無くてもいいと分かれば分かるもんがあるかもと思っただけだよ。
0488nobodyさん2013/02/27(水) 23:42:01.29ID:???
>>458が非効率なコードを生み続けていそうなことと
>>463の納得のいく説明がないのが
ちょっと残念。
0489nobodyさん2013/02/27(水) 23:52:19.04ID:???
たかだかコーディング規約でムキになんなよ。
人それぞれだろ?

PHPでいちいちthisつけたりselfとかわけわからんのがあったり、
マジックメソッドだの、オーバーロードの意味が違うだの、
PHPルールが存在しても、それを把握するのは簡単だから、
PHP流の書き方を覚えるもよし、他言語に応用可能な書き方を覚えるもよし。
04904072013/02/28(木) 09:39:59.00ID:ZLVdVzup
>>422の方法で解決しました。
0491nobodyさん2013/02/28(木) 09:50:31.67ID:???
えがったな
04924072013/02/28(木) 13:37:48.81ID:ZLVdVzup
またまた質問です。

curlで複数サイトのヘッダー情報を取得しているのですが
Aサーバー(レンタル)→エラー(Empty reply from server:リクエストが空です)
Bサーバー(ローカル)→取得できる

AでもBでもagentを送っています。差異はないはずです。
Empty reply from serverが発生する原因を教えていただけないでしょうか?
04934072013/02/28(木) 13:39:08.82ID:ZLVdVzup
Aサーバー(レンタル)では取れるものと取れないものがありますが
Bサーバー(ローカル)では大抵取れてきます。
0494nobodyさん2013/02/28(木) 13:46:22.44ID:???
モバゲーのサーバにアクセス拒否されたなど
04954072013/02/28(木) 15:31:21.58ID:ZLVdVzup
>>494

アクセス拒否でもAサーバーとBサーバーで違いが出るものですか?
特定のサーバーに対してヘッダー情報すら返さない事ってありえるのでしょうか?
0496nobodyさん2013/02/28(木) 15:39:33.47ID:???
具体的にどこからどこにどういう手段でつないでるんだよ。
シェル使えないのかな、そこ
0497nobodyさん2013/02/28(木) 15:49:24.01ID:???
>>495
ごく普通にありえるよ
でもリクエストが空だというエラーなのならモジュールに差異があるんだろうよ
04984072013/02/28(木) 16:03:20.32ID:???
>>496
phpのcurlで繋いでいます。

>>497
リクエストが空のものは対象外として仕様扱いにしてもらう
事にしました。

ですが、そういうサイトからリクエストを返してもらう方法が
無いか調べてみます。
ありがとうございました。
0499nobodyさん2013/02/28(木) 16:14:45.08ID:???
>>498
phpのcurlなんてわかってんの
httpでポート80なの?
05004072013/02/28(木) 16:30:09.79ID:???
>>499

phpのcurlは今回初めて使っています。
CURLOPT_PORTは設定していないのでデフォルトで80になっています。
0501nobodyさん2013/02/28(木) 16:52:29.73ID:???
javaなら余裕
05024072013/02/28(木) 17:25:30.23ID:???
>>501

javaならどう余裕なのでしょうか?
やった事ないですが、javaとc++とc#、.net、objective-cと大抵の言語は使えます。
0503nobodyさん2013/02/28(木) 17:26:46.19ID:???
サーバ側のログも見たいところだけど、そうはいかなさそうだもんね。
DoSと勘違いされるような行為はしてないよね
0504nobodyさん2013/02/28(木) 17:33:44.82ID:???
じゃあC#のスレッドプールが最強
0505nobodyさん2013/02/28(木) 17:36:16.62ID:???
10000サイトは無理。
サイトへ同時に接続できる数に制限がある。
それにファイルオープンとも関係しているはずでC言語を直に使っても
ファイルやサイトへのコネクションの総数は127以下までとか決まっている。
05064072013/02/28(木) 17:36:39.27ID:???
>>503
ログに目新しいエラーはなかったです。
ここに貼り付けるのは確認がいるのでやめときます。すいません。

timeout設定していないので内部で何度もアクセスを繰り返している
可能性はありますね。
そういうサイトは対象外で扱うことにしました。
ありがとうございました。
0507nobodyさん2013/02/28(木) 17:39:52.93ID:???
そういえばプロバイダはどこよ?
プロバイダがP2Pと勘違いして規制することがあるらしい。
しかも規制されているのかどうかもよくわからないようにするために
コネクションを接続するわけでも切断するわけでもないらしい。
0508nobodyさん2013/02/28(木) 17:41:18.71ID:???
共用鯖じゃないよね?
0509nobodyさん2013/02/28(木) 17:45:57.92ID:???
>>506
通信相手のサーバのログの話なんだけど、それに特にめぼしいものはなかったってことかな。
05104072013/02/28(木) 17:51:37.23ID:???
>>507

某最大手のNT○です。プランまでは言えません。
0511nobodyさん2013/02/28(木) 17:52:18.40ID:???
通信相手のログなんて見えるわけなかろう。よそ様のサイトなのに。
■ このスレッドは過去ログ倉庫に格納されています