PHP質問・雑談スレ 2【初心者お断り(ROM歓迎)】©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん 転載ダメ©2ch.net
2016/10/17(月) 21:44:12.59ID:???初心者お断り(ROM歓迎)と書いてますが、初心者用のスレが用意されているからで、
難しい質問や話題をしなければいけないわけではありません。
PHPマニュアルの読み方を概ね理解していて、関数リファレンスが正しく読める方用のスレです。
PHP未導入の方や、手取り足取りが必要な初心者の方はム板のくだスレへどうぞ。
http://echo.2ch.net/tech/ (【PHP】で板内を検索)
前スレ
http://tamae.2ch.net/test/read.cgi/php/1461283091/
その他リンク
・PHPマニュアル
https://secure.php.net/manual/ja/index.php
・コードテスト・貼り付け用
http://ideone.com/
・プログラミングのお題スレ Part8 (求PHPer参戦)
http://echo.2ch.net/test/read.cgi/tech/1444216746/
このスレで扱う話題
・PHPのコード,設定や設定値に関する質問
・常識的範囲内でのコードレビュー依頼・改良相談
・PECL,PEARに関する質問
・PHP新機能やPHP関連トレンドの話題
(FWや非公式ライブラリの話題や特徴比較は良いが使い方から先の話題は専スレへ)
・PHPのバグ発見報告・公式に報告する前の検証依頼
このスレで扱わない話題
・直接関係ない○○特有の質問(専スレへ)
(HH,エディタ,IDE,サーバ,OS,DB,SQL,FW,テンプレート,非公式ライブラリ・アプリケーション等)
・PHPの改造
0565nobodyさん
2016/11/26(土) 20:31:12.19ID:???>>314
http://php.net/manual/ja/faq.using.php
フリーではない商用ライブラリである PDFLibを使わずに PDFファイルを生成するにはどうしたらよいでしょうか? フリーのもので、外部のPDFライブラリを必要としない ものがいいのです。
PHPで書かれている代替手段がいくつかあります。 ≫ FPDF や ≫ TCPDF などです。
また、Haru 拡張モジュールもあります。 これは、フリーな外部ライブラリ libHaru を使用しています。
0566nobodyさん
2016/11/26(土) 21:38:25.63ID:???0567nobodyさん
2016/11/26(土) 21:42:15.73ID:???0568nobodyさん
2016/11/26(土) 21:59:27.40ID:???http://ethna.jp/doc/
最新のニュース
2012/3/31 Smarty 3.1.8, simpletest 1.1.0 (stable) のパッケージ配布
Ethna 2.6.0 beta4 のリリースに先駆けて、Ethna の PEAR チャネルに Smarty 3.1.8、simpletest 1.
もうやる気ないなら打ち切り!って言ってしまえばいいのにね
0569nobodyさん
2016/11/26(土) 22:10:01.67ID:???dir構造とかオレオレ感溢れすぎだろ
0570nobodyさん
2016/11/26(土) 22:50:53.09ID:???HTML理解できねー奴がプログラム組めるわけねーじゃん。
0571nobodyさん
2016/11/26(土) 23:05:17.29ID:???UIなぞに手間取ってる暇はないってな
0572nobodyさん
2016/11/27(日) 14:08:29.40ID:???0573nobodyさん
2016/11/27(日) 14:47:54.60ID:???コードをいじることなく最新のHTMLに更新される
0574nobodyさん
2016/11/27(日) 16:05:01.56ID:???0575nobodyさん
2016/11/27(日) 17:38:43.47ID:???んなわけねーじゃん。
状況に合わせていろんなフレームワーク使わなきゃいけないのに
特定フレームワークのヘルパーの使い方なんか、いちいち覚えてられるかよ。
0578nobodyさん
2016/11/27(日) 21:55:32.63ID:???そんな突っかかるほどのものでもなかろうに
0579nobodyさん
2016/11/28(月) 00:25:10.38ID:???0580nobodyさん
2016/11/28(月) 02:46:37.95ID:Jo2/Mp4P素人のメモ書き参考にしてどうすんの?
0581nobodyさん
2016/11/28(月) 03:34:03.02ID:???0582nobodyさん
2016/11/28(月) 11:31:56.39ID:???そういうオナニーは一人でやってろ
0583nobodyさん
2016/11/28(月) 11:49:10.27ID:???HTMLヘルパーを使う=1つのFWしか使いません=謎
いろんなFWに学習コストは割けるのに
その一部でしかないHTMLヘルパーに割けれないって矛盾してる
状況にあわせてといいつつ状況にあわせられていない
使うことが必須なわけでもないし覚えたくないなら覚えなくていい
0584nobodyさん
2016/11/28(月) 13:17:07.33ID:???0585nobodyさん
2016/11/28(月) 18:11:00.66ID:???>その一部でしかないHTMLヘルパーに割けれないって矛盾してる
何言ってんだこいつ?
割く必要もない労力を何故割きたがるんだ?
ノータリンの考えかたはわからんな。
>使うことが必須なわけでもないし覚えたくないなら覚えなくていい
使ってあったら必要もないのに調べなきゃならなくなんだろ
迷惑なんだよ、お前みたいなゴミクズ
0587nobodyさん
2016/11/28(月) 18:24:40.63ID:???0588nobodyさん
2016/11/28(月) 18:42:52.73ID:???ホザイてろ、ゴミ
>>587
お前が何言ってるかわからんが、HTMLを記述すればいいだけだ。
ヘルパーとか考えるやつも便利だと思うやつも、センスない。
0589nobodyさん
2016/11/28(月) 18:48:15.28ID:???完全無視推奨
0590nobodyさん
2016/11/28(月) 19:15:15.69ID:???htmlヘルパー
echo $this->Html->image("recipes/6.jpg", array(
"alt" => "ブラウニー",
'url' => array('controller' => 'recipes', 'action' => 'view', 6)
));
出力結果:
<a href="/recipes/view/6">
<img src="/img/recipes/6.jpg" alt="ブラウニー" />
</a>
0591nobodyさん
2016/11/28(月) 19:28:39.69ID:???おまえの脳みその出来が悪いことを俺貶める理由にするなよ。
まだヘルパー()とか便利だと思ってるのかよ、おサルさん。
0592nobodyさん
2016/11/28(月) 22:36:37.48ID:Jo2/Mp4Pサイトにも書いてるけど俺のメモ書きなので
真似してバグってもしらねーよ。
よく使うコードだけどメモっておくとほんと便利だわ。
コピペでスイスイ開発がすすむ。
0593nobodyさん
2016/11/28(月) 22:39:19.39ID:???小規模(フォームとか掲示板とか)のプログラム作るときって
フレームワーク使いますか?それとも使わずに書きますか?
0596nobodyさん
2016/11/28(月) 23:11:21.71ID:Jo2/Mp4P知らん。
ただ、メモっておくとほんと便利。
コード忘れても基本自分のノート代わりにしてるので
検索してすぐ欲しい情報が見つかるからね。
他人が書いたくそメモサイトと違って
自分の言葉で自分が分かる事に特化した記載をしてるのでほんと快適♪
0597nobodyさん
2016/11/28(月) 23:17:13.31ID:???そもそも正規表現で弾くような必要が本当にあるのか問い詰めたい
0598nobodyさん
2016/11/28(月) 23:45:26.94ID:???開いただけで使うかどうかはまた別の話。
タイトルや引っかかった文で目的のものか開いてみるけど、開いたら全然見当違いだったってことは多い。
0599nobodyさん
2016/11/28(月) 23:47:06.69ID:???あなたが書いてるコードがどういうものか分からないけど、そのくそメモサイトの同類になってないなら別にいいと思うよ。
ただ、自分用のメモなら全世界に公開する必要なんてないだろとも思う。
0601nobodyさん
2016/11/29(火) 01:00:04.73ID:???別に>>592が悪いと言ってるわけじゃないよ。
嫌だとも思ってないし。ただ調べものしてるとサイトを開いた回数と、その内容が参考になる回数は大幅に違うってだけ。
0603nobodyさん
2016/11/29(火) 09:25:35.65ID:???公開すると適度な緊張が生まれて微妙に洗練されるんだよな
まぁそれで助かる人もいるだろうしいいんじゃね?
俺は一応エラーと解決方法を積極敵に載せるようにしてるよ。ハマったときが一番きついからな
0604nobodyさん
2016/11/29(火) 10:45:32.56ID:???新着に近い場合は評価も付かないから、リンク開かないと内容がわからん
で、開いてがっかりする
0605nobodyさん
2016/11/29(火) 10:52:03.75ID:???永遠なんて、ないんだよ
0606nobodyさん
2016/11/29(火) 11:07:31.92ID:QC5ddTRE>俺は一応エラーと解決方法を積極敵に載せるようにしてるよ。ハマったときが一番きついからな
うん、これで何度か救われた
>>604
見るなバカ
0607nobodyさん
2016/11/29(火) 15:29:54.33ID:???0608nobodyさん
2016/11/29(火) 16:03:32.57ID:/xcsBLK+0610nobodyさん
2016/11/29(火) 17:05:20.73ID:???同じアホなら見せなきゃ損損
0611nobodyさん
2016/11/29(火) 19:58:25.40ID:QC5ddTREのぞいてんじゃねーよ。変態!
0612nobodyさん
2016/11/29(火) 21:45:24.60ID:???0613nobodyさん
2016/11/29(火) 23:53:26.53ID:???0614nobodyさん
2016/11/30(水) 00:02:30.80ID:J1ZKp0ZYうっせーばか。仕切るな
0615nobodyさん
2016/11/30(水) 03:51:04.75ID:???0617nobodyさん
2016/11/30(水) 18:20:49.91ID:???・関数を3つに分ける
例)photoSmallUrl, photoMediumUrl, photoLargeUrl
・関数の引数で指定させる
例)photoUrl(int $id, str $type = 'small')
どちらがベストプラクティスですか?
0618nobodyさん
2016/11/30(水) 19:37:49.32ID:J1ZKp0ZYお前の脳みそでは無理
がベストチョイス
0619nobodyさん
2016/11/30(水) 20:15:36.96ID:???1案のコードを書いてみると、おそらく3つの関数でほとんど同じコードが出てくる結果になるだろう。
その場合、当然2案にリファクタリングすることになる。
0620nobodyさん
2016/11/30(水) 20:16:49.27ID:???後者
まぁ前者は可変関数なんてのもあるけどな
http://php.net/manual/ja/functions.variable-functions.php
0621nobodyさん
2016/11/30(水) 20:48:32.17ID:???可変にしてもコードが重複するのは変わらんからね。
関数を可変にするのは今回のような場合の為じゃないかな。
0622nobodyさん
2016/11/30(水) 20:54:41.13ID:???0623nobodyさん
2016/11/30(水) 22:28:20.62ID:???0624nobodyさん
2016/12/01(木) 05:11:23.70ID:???だから違和感があってな
0625nobodyさん
2016/12/01(木) 05:11:55.22ID:???まぁさっしてくだし
0626nobodyさん
2016/12/01(木) 17:15:12.06ID:???elseif?
0627nobodyさん
2016/12/01(木) 20:26:43.07ID:aRkR7W4hお前の顔もおかしいよ
0628nobodyさん
2016/12/02(金) 12:55:15.56ID:???http://php.net/index.php#id2016-12-01-3
0629nobodyさん
2016/12/02(金) 13:26:41.26ID:???0630nobodyさん
2016/12/03(土) 13:17:39.70ID:???0632nobodyさん
2016/12/17(土) 09:45:26.51ID:???$fp = stream_socket_client( "tcp://xxx.xxx.xxx.{$i}:1234", $errno, $errstr, 0.3 );
if ( $fp ) {
echo "{$i} OK\n";
fclose( $fp );
}
}
一括サーバチェックコードなのですが、
$iを増やせば増やすほど正常なのにレスポンスが返ってくることが少なくなります。
たまに調子が悪いと漏れますが、1個ずつやれば自分とのやり取りは0.2秒でも問題のない国内サーバ群です。
タイムアウトを3秒ぐらいにすれば問題がなくなるのですが、それだと時間がかかりすぎます。
これは単純にPHPだけの問題じゃない気がするのですが、どこを見なおせばいいでしょうか?
0633nobodyさん
2016/12/17(土) 10:19:26.66ID:???0634632
2016/12/17(土) 11:22:19.39ID:???ありがとうございます。
sleep挟んでみましたが特に効果は見られませんでした。
3秒ぐらいにすると10までしかいかなかったのが20ぐらいになる程度には改善するのですが、すぐに手詰まりになります。
OS(Windows)側でTcpTimedWaitDelayを30秒に変更もしてみましたが、それも特に効果はありませんでした。
一番安定するのはソケットのタイムアウトを0.3秒から増やすことで、それ以外はあまり効果がないようです。
0.3秒でもリスト(上のコードはforですが実際はforeachでやります)の最初のほうに持ってきたIPはポンポン返るんですけどね。
0635nobodyさん
2016/12/19(月) 10:56:38.32ID:???まず何エラーが発生してるのか教えろ
問題の把握&解決法
・tcpをダンプして何が起こっているのか観察する
・スレッドを使える言語にしてタイムアウトを伸ばす
・PHPじゃなきゃ駄目なら、複数プロセスを同時に起動させて対象を分割しタイムアウトを伸ばす
0636nobodyさん
2016/12/19(月) 11:36:42.72ID:???> これは単純にPHPだけの問題じゃない気がするのですが、どこを見なおせばいいでしょうか?
別手段で同じ事やってみて、再現するかどうか試してみたら?
0637nobodyさん
2016/12/19(月) 14:57:55.84ID:???前提として、まず、*.*.*.0と*.*.*.255が同時に使えるということはない。
さらに、*.*.*.256〜は使えない。
それはわかってるのか?
0638nobodyさん
2016/12/19(月) 15:57:55.19ID:???0639nobodyさん
2016/12/19(月) 16:06:34.88ID:???0640nobodyさん
2016/12/19(月) 17:32:46.69ID:???0641nobodyさん
2016/12/19(月) 20:17:26.20ID:???0642632
2016/12/20(火) 15:57:45.40ID:???> 接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。
> または接続済みのホストが応答しなかったため、確立された接続は失敗しました。
エラーはこんな感じです。
遅延を伸ばせば期待通りになります。
wiresharkの使い方もよくわからず、tcpダンプとかちょっとレベルが高くて無理なので、
あれから試行錯誤してみたところわかったことが1つありました。
チェックに使うサーバ郡は、応答が返って来ないサーバのほうが多いぐらいなのですが、
その中から返ってきたもののみを抽出して、再度チェックしたところ、
全てのサーバが0.1秒でも問題なく返ってきました。
>>632のコードで全部ifの中を通ってきたということなのですが、
ひょっとしたらfcloseしないことが何か関係しているのでしょうか?
スレッド使えというのはもっともな意見ですね。
とりあえず今回の問題の原因が気になるので、もうちょっと調べてみようと思います。
0643nobodyさん
2016/12/20(火) 16:56:26.59ID:???> チェックに使うサーバ郡は、応答が返って来ないサーバのほうが多いぐらいなのですが
そのサーバは、ポート1234でlistenしているの?してないの?
してるとしたら、サーバ側でログは出せないの?
別手段で試すことはできないの?
0644632
2016/12/20(火) 17:44:20.39ID:???サーバの管理者は自分ではありません。
そのため、今現在各サーバ管理者がlistenしてるかどうかまではわかりません。
サーバがどういうものかよくわかっていないような人でも、
設定不要でワンクリックでWindows上で立てれるような代物なので、
中にはダイナミックなIPアドレスでDDNSを使わず運用してる人もいると思います。
古い情報も多く整理するためにやっているのですが、
今の書き方だと問題のないサーバまで弾いてしまう可能性があるので、
原因がどこにあるのか(PHPの問題なのか)知りたいです。
専用クライアント使って別手段で1個ずつ試すことは出来ますが、時間がかかりすぎる上に手動になるので・・・
0645nobodyさん
2016/12/20(火) 18:14:23.46ID:???> 専用クライアント使って別手段で1個ずつ試すことは出来ますが、時間がかかりすぎる上に手動になるので・・・
少しは調べろ
https://www.google.co.jp/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=windows+tcp+%E7%96%8E%E9%80%9A%E7%A2%BA%E8%AA%8D
0646nobodyさん
2016/12/20(火) 18:21:39.38ID:???> 遅延を伸ばせば期待通りになります。
期待通りって何だよ?
> 1個ずつやれば自分とのやり取りは0.2秒
とあるが、>>632のコードのタイムアウトを10秒とかにすると、生きてるサーバは全部0.2秒以内に戻るのか?
0647nobodyさん
2016/12/20(火) 18:51:50.60ID:???0648632
2016/12/20(火) 20:13:02.88ID:???別手段ってそういうことだったんですね。
なんか特別な専用ツールがないかみたいなことを聞かれてるかと思ったので。
>>646
>>641へのレスだったのですが、長めに5秒にしてみたのですが、生きてるものはちゃんと返ってきました。
この生きてるものというのは、0.3秒で10個ずつ分割して、コンソールからやったときに正常に返ってきたものと同じです。
これを10個ずつとか分割しないで、一気に1回でやったら5秒なら返ってきました。
>生きてるサーバは全部0.2秒以内に戻るのか?
生きてるサーバにたいしてタイムアウトを0.1秒にしたら(分割しないでも)全部返ってきました。
>>647
なんか他にいい手段ありますか?
0649nobodyさん
2016/12/20(火) 22:49:27.33ID:???0650nobodyさん
2016/12/21(水) 11:05:46.46ID:???>>648
> これを10個ずつとか分割しないで、一気に1回でやったら5秒なら返ってきました。
と
> 生きてるサーバにたいしてタイムアウトを0.1秒にしたら(分割しないでも)全部返ってきました。
は、矛盾してるが。
> なんか他にいい手段ありますか?
質問の意図は、なんでstreamを使ってるのか、だ。
普通の手段をなんで使わないんだ?
http://php.net/manual/ja/book.sockets.php
とか
http://php.net/manual/ja/ref.network.php
(つか、検索しろよ)
0651nobodyさん
2016/12/21(水) 13:12:59.09ID:???0652632
2016/12/21(水) 15:25:46.59ID:???いくつかのタイトルのゲームサーバです。
>>650
>>632のコードで、0〜255までのうち、偶数は正常で応答があり、奇数は異常で応答がないとし、
これは正常なサーバの状態とします。
stream_socket_clientのタイムアウトは0.3秒に設定されていますが、
これでは、最初の方は正常に応答があるものの(分割した理由はこのため)、ある程度いくと、
正常なはずの偶数のサーバの応答も返ってこなくなります(100%ではありませんが)。
しかし、タイムアウトを5秒まで伸ばしたところ、全て正常に応答が返ってくるようになりました。
ちなみに分割というのは、sleepを挟んでということではなく、
一度スクリプトを終了して、再度スクリプトを起動しています(引数でstartとendを指定するイメージ)。
forのインクリメントを$i++から$i+=2にし、正常な偶数のサーバのみに問い合わせた場合、
タイムアウトを0.1秒にしても全て正常に応答が返ってきます。
教えていただいた関数ですが、上のはクライアント側には使わないと思います。
下のはfsockopenのことを言っているのなら、stream_socket_clientとほぼ同じ関数です。
0653632
2016/12/21(水) 15:41:28.87ID:???使わないというのは語弊があったので、訂正します。
使う必要がないというニュアンスでお願いします。
サーバの仕様がわからないので・・・
0654nobodyさん
2016/12/21(水) 16:38:45.41ID:???0655632
2016/12/21(水) 16:40:31.51ID:???正しくはWindows7+PHP5.4です。
ハード的にいえばWindowsのものよりだいぶ劣っているのですが、
先ほどCentOS7+PHP7の別環境を構築したので(VM上ではなく専用機)、
>>632のコードを実行しましたが、同一回線で問題なく最後まで正常に動作しました。
Windowsのソケットが悪いのか、ハードに問題があるのか、
何が原因かまではわかりませんが、どうも環境依存っぽいです。
環境依存となると、正確な情報が欲しければタイムアウト伸ばしたほうがよさそうなので、
一応Javaでもためそうとおもいますが、とりあえず構築したLinuxで気長にやることにします。
0657nobodyさん
2016/12/21(水) 18:35:56.95ID:???お前らいい加減学習しろよ
0658nobodyさん
2016/12/22(木) 12:51:15.27ID:???0659nobodyさん
2016/12/23(金) 23:24:25.82ID:GYV6CxEoSESSIONなのか、classなのか、それともtmp用のテーブルを作るのか・・・
何か色々作ってみたいのですが、前に勧めません。とりあえずなんでもいいから作って見たほうが良いんでしょうかe?
こういうのは場数を踏むしかないんでしょうか?
0660nobodyさん
2016/12/23(金) 23:58:36.32ID:???IOは別クラスに切り出すと後のストレージ切り替えなんかの変更に強い
が, 考え過ぎて手が動かないよりは最初は手を動かした方が良い
0661nobodyさん
2016/12/24(土) 00:05:01.87ID:Zz5BM5EIありがとうございます
失敗しても何かの糧になると思って、やってみます
0662nobodyさん
2016/12/24(土) 07:51:09.57ID:???だいたいあれこれ考えてると完成までしないで構想で終わるから
0663nobodyさん
2016/12/24(土) 08:43:49.53ID:???そう。あとセキュアも完璧主義になりすぎると、リリースできない。
破壊される前提で設計したら負けない。
0664nobodyさん
2016/12/24(土) 09:02:16.35ID:Zz5BM5EIそれちょっと違うくね
■ このスレッドは過去ログ倉庫に格納されています