トップページphp
981コメント288KB

PHP関連の書籍 第7版

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2011/12/27(火) 11:18:37.05ID:Px3be9gS
前スレ
http://kohada.2ch.net/test/read.cgi/php/1213919075/901-1000

よくわかるPHPの教科書,実践マスター PHP+MySQL PHP5対応,PHPレッスンブック―PHP5対応
上記が前スレで割りと評判良かったです。
*プログラミング未経験者向け

0747nobodyさん2012/08/19(日) 12:44:56.59ID:???
CやJavaとほとんど同じ関数が使える言語が
他にあるのか?

むしろPHPの方が、他の言語より覚えることが少ないだろw
0748nobodyさん2012/08/19(日) 13:38:11.21ID:???
というわけでPHPのシングルトンは意味がないとお話でした。
0749nobodyさん2012/08/19(日) 13:41:34.06ID:???
Phpはクソ言語とわかった上で使わなければならない。
0750nobodyさん2012/08/19(日) 13:53:38.25ID:???
PHPではシングルトンが複数できるってことですよね。
じゃあ、シングルトンの意味は?
0751nobodyさん2012/08/19(日) 14:23:07.41ID:???
>>748
違うだろw

元々はPHPの知識が、他の言語に応用が効くかという話

> 712 名前:nobodyさん[sage] 投稿日:2012/08/18(土) 16:59:50.77 ID:???
> PHPを構成している言語機能はPHP特有じゃなくて、
> 他の言語でも見られるものがほとんどなのに、
> 他の言語で役に立たないというのは理解できないを通り越して
> 間違ってるだろうな。
0752nobodyさん2012/08/19(日) 14:28:53.43ID:???
>>750
すっかり、PHPとは関係ない話になったなw
デザインパターンの話じゃないか。

言語関係なくマルチプロセス環境ではシングルトンは複数できてしまうもの
シングルトンというのは、同一のプロセス内において
オブジェクトが一つという定義であり、
PHPでも同一のプロセス内でオブジェクトを一つにできる。
0753nobodyさん2012/08/19(日) 14:51:34.07ID:???
PHPではマルチスレッド言語の感覚でシングルトンは使うなということ。
馬鹿なバグの原因になる。
当たり前だが、ネットでころがっている他の言語の説明は鵜呑みにするな。
0754nobodyさん2012/08/19(日) 14:52:42.96ID:???
>>716
こいつはwww 何言っているの?
0755nobodyさん2012/08/19(日) 14:59:30.71ID:???
>>753
シングルトンって基本はシングルスレッドだぞ。

マルチスレッドの場合、通常のシングルトンコードに
マルチスレッド対応のコードを追加するが。
お前、実はわかってないだろw
0756nobodyさん2012/08/19(日) 15:04:22.48ID:???
探せばいろいろ出てくると思うけど、

http://www.02.246.ne.jp/~torutk/cxx/designpattern/singleton.html
> GoF本の実装の問題
>
> GoF本の実装例のコードが抱える問題点を列挙します。
>
> マルチスレッド安全性がない
> if (instance == 0) {     // (1)
>   instance = new Singleton; // (2)

この人も書いているように、オリジナルのシングルトンは
マルチスレッド対応されてない。
0757nobodyさん2012/08/19(日) 15:07:45.57ID:???
>>753
言ってる意味があべこべだな。

マルチスレッド言語では、シングルスレッド言語のような感覚で
シングルトンは使うな。馬鹿なバグの原因になる。

これが正解じゃないか。

PHPはシングルスレッド言語だから、安心して使っていい。
0758nobodyさん2012/08/19(日) 15:29:04.86ID:???
>>755
お前、馬鹿じゃないの?シングルトン、公式サイトですら否定しているだろ
0759nobodyさん2012/08/19(日) 15:31:34.09ID:???
>>757
PHPではシングルトンが複数できるがマルチスレッドの場合は事情が違うから確かにそのとおり。
PHPのシングルトンはマルチトンだからな。
0760nobodyさん2012/08/19(日) 15:35:25.86ID:???
PHP公式サイトでシングルトンの意義疑っているから。
リソース共有しないPHPでは意味ないかもって。
0761nobodyさん2012/08/19(日) 15:36:35.73ID:???
>>757
そうだよ。
PHPではシングルトンが複数できるからマルチスレッド言語では意味は違うような。
0762nobodyさん2012/08/19(日) 15:39:50.78ID:???
>>756
Java言語だったらシンプルだよ。
0763nobodyさん2012/08/19(日) 15:45:48.25ID:???
PHPのシングルトンはマルチトンという結論でおk

>>716
なんでスレッドセーフ強調しているわけ?
0764nobodyさん2012/08/19(日) 16:05:36.48ID:???
結局、PHPでデザインパターンは学べないってことなんだよね
0765nobodyさん2012/08/19(日) 16:12:16.59ID:???
いや、こうやって学べてるだろw
0766nobodyさん2012/08/19(日) 16:14:18.21ID:???
>>763
いや、だから、プロセスが違えば
他の言語のシングルトンも、マルチトンになるんだよ。

嘘だと思ってるならやってみな。

CLIアプリでいいから、Javaでシングルトン作って、
そのプログラムを2つ以上実行して、
複数のプロセス間で、オブジェクトが一つなのか
複数なのか確認してみ。
0767nobodyさん2012/08/19(日) 16:14:50.14ID:???
PHPで「マルチトン」ではないシングルトン実現のためには外部キャッシュシステムを使えばいいんだが、
外部キャッシュ使える環境ならPHP使う意味も無い。
0768nobodyさん2012/08/19(日) 16:15:07.22ID:???
>>758
> お前、馬鹿じゃないの?シングルトン、公式サイトですら否定しているだろ

シングルトンの何を否定してるの?
シングルトンが意味ないってこと?
そりゃシングルトンの批判だろ?

0769nobodyさん2012/08/19(日) 16:18:05.85ID:???
>>766
君何言ってるの?それ当たり前じゃん。
0770nobodyさん2012/08/19(日) 16:18:09.36ID:???
>>767
PHPっていうか、マルチプロセス全般の話だよね。

マルチプロセスでシングルトンを使うには
確かに外部キャッシュシステムなんかを使えばいい。
memcachedとか。

でもそうすると、すべてのプロセスで共通のリソースを使うってことで
その部分がシングルポイントになりボトルネックとなる。
それではスケールしないシステムになってしまう。

つまり、シングルトンという仕組みそのものが、
時代遅れな設計。

そしてそのシングルトンを否定しているPHPは
将来を見据えた言語ということ。
0771nobodyさん2012/08/19(日) 16:19:14.02ID:???
PHPの公式サイトではPHPにおけるシングルトン使用には疑問を呈されています。
0772nobodyさん2012/08/19(日) 16:20:22.88ID:???
>>771
それは、シングルトンがスケールしない
時代遅れな設計だからだね。

さすがだ。
0773nobodyさん2012/08/19(日) 16:23:35.75ID:???
>>770
だよね。
シェアードナッシングだからリソースを共有しない。
だからたとえ同じデータでも毎回データベースなどに取りにいけばいいし。
共有データのために一回のアクセスで済むところを何千回もアクセスすればいいんだよ。
0774nobodyさん2012/08/19(日) 16:26:19.75ID:???
そう。リソースを共有できないため、データベースへ超絶アクセスだ。
シェアードナッシングを実現している
PHPの代表的なアプリとしてはOpenPNE。ついでWordPressなどがある。
これらは次世代型のシェアードナッシングアプリであるな。
0775nobodyさん2012/08/19(日) 16:26:56.63ID:???
なんかネタスレになってきたwww
0776nobodyさん2012/08/19(日) 16:29:37.91ID:???
あのーーー、リソース共有できたほうがよくね?
0777nobodyさん2012/08/19(日) 16:33:11.05ID:???
>>774
データベースへ超絶アクセスする。
これをシングルトンで解決しようと考える奴はイケてない。

なぜなら負荷分散のために、アプリサーバーを
複数台構成にした時、シングルトンでは解決できないからだ。

つまりシングルトンは何も意味が無い。
これがシングルトンが否定されてる理由の一つ。
0778nobodyさん2012/08/19(日) 16:33:54.08ID:???
スケールしないってどんな規模の話しだよ
0779nobodyさん2012/08/19(日) 16:34:10.09ID:???
>>776
そのとおりだよ。

だからリソース共有のために
memcachedなどを使う。

シングルトンでは、リソース共有といっても
複数のスレッドで共有するのが限界で、
プロセスが違っていたり、サーバーが違っていたりした場合
共有できないからね。
0780nobodyさん2012/08/19(日) 16:38:08.51ID:???
いやいやシングルトンなんて使わなくてもいいけど、
シェーアードナッシングってキツイくね?
君がいうアプリサーバーを複数台にしても
OpenPNE君とか悲惨だもんね。
複数台構成にする規模だとPHPを使う意味はないからね。
0781nobodyさん2012/08/19(日) 16:39:25.06ID:???
memcachedを使える環境であればPHP使う意味はない。
おかしな議論するんじゃない。
0782nobodyさん2012/08/19(日) 16:40:37.40ID:???
>>781
> memcachedを使える環境であればPHP使う意味はない。
その根拠が示されるまでは>>781は無視して良い。
0783nobodyさん2012/08/19(日) 16:40:48.72ID:???
facebookの失敗を見れば大規模ではPHPは使うべきでなない。
0784nobodyさん2012/08/19(日) 16:42:04.98ID:???
>>780
> シェーアードナッシングってキツイくね?

きつかったとしてもやらないといけない。
シングルポイントがあれば、そこが一つダウンしただけで
サービス全体が停止してしまう。

最近のクラウドサービスは、シェーアードナッシングか
それに近い状態になってる。
0785nobodyさん2012/08/19(日) 16:42:41.86ID:???
>>782
ルート権限がもてる環境でPHP使う意味なし。
はじめから高性能な言語を使えばよい。
0786nobodyさん2012/08/19(日) 16:43:41.81ID:???
>>784
どうやってOpenPNEを軽くすればいいのですか?
複数台構成でも激遅ですが。
0787nobodyさん2012/08/19(日) 16:44:45.69ID:???
>>784
PHPで構築されたクラウドサービスを教えてください。
研究してみます。
0788nobodyさん2012/08/19(日) 16:45:15.07ID:???
>>783
そのFacebookがPHPを使って
言語よりもキャッシュサーバーが重要って言ってるんだが。

キャッシュがスケーラビリティに大きな役割を果たしている
http://www.publickey1.jp/blog/09/facebook.html
0789nobodyさん2012/08/19(日) 16:46:14.19ID:???
facebookの大失敗>>782

PHPはout of the questionだってさ。
facebookの元お偉いさんが言っているよ。
0790nobodyさん2012/08/19(日) 16:46:49.60ID:???
>>786
まずどこにボトルネックがあるか調べる。
アプリ側か、データベース側か、
アプリ側であれば単純に増やせば良い。
0791nobodyさん2012/08/19(日) 16:48:11.86ID:???
>>788
ごめん、それかなり古い。今はHadoop系。
0792nobodyさん2012/08/19(日) 16:48:52.77ID:???
>>789
だから”元”お偉いさんで、
そいつが作ったサービスは
失敗したんだろうなw
0793nobodyさん2012/08/19(日) 16:52:30.43ID:???
>>790
そんなことは調べているし、実践している。
しかしつまるところ、「シェアードナッシング」だから遅いことがわかっている。
アプリが原因とも言えるがより深い原因はリソース共有できない言語に由来するよね。
こういう場合はどうしたらいい?
0794nobodyさん2012/08/19(日) 16:52:36.29ID:???
>>791
あぁこれだな

Large-Scale Data Processing with Hadoop and PHP (DPC11 2011-05-21)
http://www.slideshare.net/Wombert/largescale-data-processing-with-hadoop-and-php-dpc11-20110521


11. SOME NUMBERS? Facebook ? Google ? New data per day:
? Data processed per month: 400 PB (in 2007!) ? 200 GB (March 2008)
? Average job size: 180 GB ? 2 TB (April 2009) ? 4 TB (October 2009) ? 12 TB (March 2010)
0795nobodyさん2012/08/19(日) 16:54:21.18ID:???
>>788
今は基幹はJava系みたいですよ。
facebookはご存知のHadoopの開発元のひとつでもありましたから。
0796nobodyさん2012/08/19(日) 16:55:54.48ID:???
HadoopってPHPですか?
0797nobodyさん2012/08/19(日) 16:56:47.28ID:???
いつからHadoopがPHPになったのwww
0798nobodyさん2012/08/19(日) 16:58:02.99ID:???
>>793
> しかしつまるところ、「シェアードナッシング」だから遅いことがわかっている。

まずお前の勘違いから正していこうか。
あべこべなことを言ってるから話が進まない。

一言で言えば、シェアードナッシングは高速なGoogleが採用している設計

http://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%A7%E3%82%A2%E3%83%BC%E3%83%89%E3%83%BB%E3%83%8A%E3%83%83%E3%82%B7%E3%83%B3%E3%82%B0%E3%83%BB%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3

シェアード・ナッシング・モデルはスケーラビリティの観点からウェブ開発において頻繁に用いられる。
Google社が例示したように、純粋なシェアード・ナッシング・モデルシステムは廉価な
コンピュータを追加することによりほぼ無限にスケールすることが可能である。

それはシステムの処理速度を低下させる単一のボトルネックが無いからである。
Google社はこれをshardingと呼んでいる。典型的なシェアード・ナッシング・モデルシステムにおいては、
データは異なるデータベースの多数のノードに分散されるか(この場合ユーザやクエリごとに異なるコンピュータを割り当てる)、
あるいは何らかの同期化プロトコルを用い、全てのノードにアプリケーションデータのコピーを持たせる形をとる。
これはdatabase shardingと呼ばれるものである。
0799nobodyさん2012/08/19(日) 16:59:29.02ID:???
Hadoopはミドルウェアで
基幹じゃないだろ。

LinuxがCだから基幹がCと言ってるようなもんだ。
PHPが基幹で、Hadoopを呼び出しているだけだよ。
0800nobodyさん2012/08/19(日) 16:59:43.00ID:???
>>790
OpenPNEってアクセスするだけで相当なSQLを発行するって知っている?
デフォルトでインストールしてデバッグモードで調べるといいよ。
複数台構成にしてもあれだけSQLが多かったらどうにもならないよ。
0801nobodyさん2012/08/19(日) 17:00:27.69ID:???
>>798
PHPとGoogleは違うから、意味なし。
0802nobodyさん2012/08/19(日) 17:01:11.50ID:???
HadoopはPHP起源
0803nobodyさん2012/08/19(日) 17:02:06.24ID:???
>>790
複数台構成にしても発行されるSQLは変わらないから遅いまま
0804nobodyさん2012/08/19(日) 17:02:29.71ID:???
JavaはPHP起源
0805nobodyさん2012/08/19(日) 17:02:37.01ID:???
>>800
はい、詰み。

言語関係ない。
0806nobodyさん2012/08/19(日) 17:03:53.71ID:???
OpenPNEを高速化する方法を求む!
0807nobodyさん2012/08/19(日) 17:04:08.36ID:???
>>803
なら話は簡単だ。シャーディングを行なってデータベース側を増やせば良い
0808nobodyさん2012/08/19(日) 17:04:36.44ID:???
>>807
データベース3台
0809nobodyさん2012/08/19(日) 17:05:13.60ID:???
>>808
ユーザー数やアクセス数がわからんから
それだけじゃなんとも言えんだろw
0810nobodyさん2012/08/19(日) 17:06:01.43ID:???
データベース3台といっても
どうせバックアップに一台とか
そういう話しだろw
0811nobodyさん2012/08/19(日) 17:08:29.63ID:???
簡単な話、毎回同じデータを違う人が別々に取りに行くから遅い。
0812nobodyさん2012/08/19(日) 17:09:06.63ID:???
OpenPNE3で早いところって無いと思うよ。
0813nobodyさん2012/08/19(日) 17:10:10.95ID:???
あの、WordPressもいいですか?
これもなんで遅いんですか?キャッシュ系プラグインを当然いれています。
0814nobodyさん2012/08/19(日) 17:11:04.51ID:???
facebookはphp基幹やめました。いま脱却している最中です。
0815nobodyさん2012/08/19(日) 17:11:40.81ID:???
SQLの発行回数が多いって、
それシングルトンとなんの関係もないじゃんw

さっきから何熱くなってるの?

シングルトン使うように修正すればという話なら
さっさとキャッシュサーバー使えば解決する話。
0816nobodyさん2012/08/19(日) 17:12:37.98ID:???
ワードプレスもまあ遅いわな
0817nobodyさん2012/08/19(日) 17:13:18.84ID:???
>>811
だからキャッシュ使えばいい話ですよね?
0818nobodyさん2012/08/19(日) 17:13:47.84ID:???
OpenPNEってデフォルトで遅いわけでしょ?
開発元もわかっているし簡単にいかないわけよ>>815
0819nobodyさん2012/08/19(日) 17:14:03.70ID:???
>>816
http://ja.wordpress.com/

重いサイトってどれの話?
0820nobodyさん2012/08/19(日) 17:14:51.26ID:???
>>818
だから?

遅い原因がSQLの発行数が多いからって話はわかりました。
0821nobodyさん2012/08/19(日) 17:15:13.53ID:???
>>817
キャッシュ使えばいいんだけど根本から変えないといけないね
あれの場合は。
0822nobodyさん2012/08/19(日) 17:15:51.36ID:???
>>819
全部
0823nobodyさん2012/08/19(日) 17:16:37.96ID:???
OpenPNEってようするに設計がおかしいんだよ。
0824nobodyさん2012/08/19(日) 17:17:13.65ID:???
全部調べられるわけがないので、
嘘ついていることがはっきりしました。
0825nobodyさん2012/08/19(日) 17:17:40.28ID:???
>>819
どれもモッサリしてるなw
0826nobodyさん2012/08/19(日) 17:18:39.57ID:???
>>825
必死すぎで見苦しいよ。
0827nobodyさん2012/08/19(日) 17:19:34.99ID:???
結局のところ、PHPのシングルトンは意味ないんだよね
0828nobodyさん2012/08/19(日) 17:21:07.90ID:???
>>817
外部キャッシュの話ですよね?
OpenPNEでどうやって組み込めばいいですか?
たぶんみんな助かるとおもいますよ。
0829nobodyさん2012/08/19(日) 17:24:20.14ID:???
>>782
大規模開発でPHPを使う意味は?やりにくくない?
0830nobodyさん2012/08/19(日) 17:24:56.42ID:???
>>784
まじであるの?PHPクラウド?
0831nobodyさん2012/08/19(日) 17:26:00.63ID:???
>>827
スケールしたいならキャッシュサーバーを使って話だなw
0832nobodyさん2012/08/19(日) 17:29:05.76ID:???
>>828
えと、あなたプログラマでしょ?

俺だったらソース改造する。

>>829
別にやりにくくないよ。
逆にどうしてやりにくくなるのか理由が聞きたい

>>830
クラウドって、Amazon Web Serviceみたいなものだし。
awsが何提供してるのか知ってるの? 言語じゃないよ。

仮想マシンやデータベース。つまりアプリを作る言語はなんでもいい。
WordPressをクラウドで構築するサンプルをaws自身が提供しているし。
0833nobodyさん2012/08/19(日) 17:33:20.55ID:???
PHPはオブジェクト指向言語の代表格なのでPHPを先に学習すると
JavaとかC#とか簡単に覚えられるし、これからはPHPの高い信頼性を
生かして他の言語で作られたシステム、特に銀行系のシステムが
PHPに置き換えられていくと会社の先輩から聞きました。
そこでオススメの参考書を教えて下さい。
0834nobodyさん2012/08/19(日) 17:35:15.75ID:???
>>832
やはりPHPのクラウドは無いんですね
0835nobodyさん2012/08/19(日) 18:00:43.88ID:???
>>834
PHPのクラウドって?

クラウドを使ってるPHPアプリならあるけど、
「PHPのクラウド」という言い方は意味が分からない。
0836nobodyさん2012/08/19(日) 18:55:58.97ID:???
>>835
あれれ、言い訳ですか?PHPで構築されたクラウドサービスは無いんですね。
0837nobodyさん2012/08/19(日) 19:23:32.90ID:???
あったって言ったら、どんな言い訳をするか見ものだw

PHPのPaaSを提供する「cloudControl」と「PHP Fog」
http://www.publickey1.jp/blog/11/phpcloudcontrolphp_fog.html
0838nobodyさん2012/08/19(日) 19:45:20.38ID:???
国内にもあるでよ
http://phper.jp/
0839nobodyさん2012/08/19(日) 19:45:49.47ID:???
>>837
PHPで構築するのは珍しいらしいな。リンク先に書いてあるよ。
0840nobodyさん2012/08/19(日) 19:50:48.21ID:???
>>832
OpenPNEは最初から別言語で作り直した方がいい。あれはもともとのsymfonyから遅い。
データベースとかキャッシュの問題だけではない。
0841nobodyさん2012/08/19(日) 19:52:26.22ID:???
>>837
OpenPNEもまともに動かない言語でクラウドサービス構築は馬鹿げている。
0842nobodyさん2012/08/19(日) 19:54:01.35ID:???
>>841
OpenPNEを叩きたいの?PHPを叩きたいの?
0843nobodyさん2012/08/19(日) 19:55:53.30ID:???
>>842
たたく意図は無い。
OpenPNEも素晴らしいアプリだし、PHPも素晴らしい言語である。
0844nobodyさん2012/08/19(日) 20:20:51.35ID:???
結論、>>712は正しかった。

712 名前:nobodyさん[sage] 投稿日:2012/08/18(土) 16:59:50.77 ID:???
PHPを構成している言語機能はPHP特有じゃなくて、
他の言語でも見られるものがほとんどなのに、
他の言語で役に立たないというのは理解できないを通り越して
間違ってるだろうな。
0845nobodyさん2012/08/19(日) 20:24:26.79ID:???
すごい伸びてると思ったらまたこいつかorz
構うなよもう
0846nobodyさん2012/08/19(日) 20:26:48.05ID:???
結局、PHPのシングルトンはマルチトンということだね。
0847nobodyさん2012/08/19(日) 20:28:16.38ID:???
>>846

このやりとりをまた繰り返すのか?


766 名前:nobodyさん[sage] 投稿日:2012/08/19(日) 16:14:18.21 ID:???
>>763
いや、だから、プロセスが違えば
他の言語のシングルトンも、マルチトンになるんだよ。

嘘だと思ってるならやってみな。

CLIアプリでいいから、Javaでシングルトン作って、
そのプログラムを2つ以上実行して、
複数のプロセス間で、オブジェクトが一つなのか
複数なのか確認してみ。


769 名前:nobodyさん[sage] 投稿日:2012/08/19(日) 16:18:05.85 ID:???
>>766
君何言ってるの?それ当たり前じゃん。
■ このスレッドは過去ログ倉庫に格納されています