PHP質問・雑談スレ4【初心者お断り(ROM歓迎)】 [無断転載禁止]©2ch.net

1nobodyさん2017/06/28(水) 21:34:09.26ID:???
PHPに関する質問や雑談をするスレです。
初心者お断り(ROM歓迎)と書いてますが、初心者用のスレが用意されているからで、
難しい質問や話題をしなければいけないわけではありません。
PHPマニュアルの読み方を概ね理解していて、関数リファレンスが正しく読める方用のスレです。

PHP未導入の方や、手取り足取りが必要な初心者の方はム板のくだスレへどうぞ。
http://mevius.2ch.net/tech/ (【PHP】で板内を検索)

前スレ
http://medaka.2ch.net/test/read.cgi/php/1486956982/

その他リンク
・PHPマニュアル
 https://secure.php.net/manual/ja/index.php
・コードテスト・貼り付け用
 http://ideone.com/
・プログラミングのお題スレ (求PHPer参戦)
 http://mevius.2ch.net/test/read.cgi/tech/1480579110/

このスレで扱う話題
・PHPのコード,設定や設定値に関する質問
・常識的範囲内でのコードレビュー依頼・改良相談
・PECL,PEARに関する質問
・PHP新機能やPHP関連トレンドの話題
 (FWや非公式ライブラリの話題や特徴比較は良いが使い方から先の話題は専スレへ)
・PHPのバグ発見報告・公式に報告する前の検証依頼

このスレで扱わない話題
・直接関係ない○○特有の質問(専スレへ)
 (HH,エディタ,IDE,サーバ,OS,DB,SQL,FW,テンプレート,非公式ライブラリ・アプリケーション等)
・PHPの改造

369nobodyさん2018/05/21(月) 14:36:19.77ID:???
gRPCがPHPでRPCサーバーを作るのには対応していないのって何で?

PHP単体で動く(Apacheやnginxを使わない)まともなHTTPサーバーがないのが原因みたいに言われてたけど
それだけ?

そうだとして何でPHP単体で動いて
テストだけでなく本番でも十分使えるHTTPサーバーが無いのか

370nobodyさん2018/05/21(月) 14:42:31.54ID:???
WEB画面から文字列を入力しDBにInsertすると文字の頭になんか変な文字が入ってました。

そこで、テーブル上のデータをSQLファイルでダウンロードして
サクラエディタで見たところ空白にしかみえないです。

しかし、その空白部分を選択してみると、サクラエディタの右下に
U+30AD となっています。何かの文字を表している様ですが分かりません。

これは一旦何が入っているのでしょうか?

371nobodyさん2018/05/21(月) 15:29:39.14ID:???
>>367
JSONで非同期にしたら?

そんな処理でSessionとかcookie使うもんなの?

3723702018/05/21(月) 15:47:02.23ID:???
SQLで insert文で 'キ' と入力するとなぜか'キ'の左側に

U+FEFF ← が入ってしまっています。



(U+30AD  → 「キ」でありこれは問題ありません。)


BOM??らしいです。なんで'キ'入力の時だけ入るんだろうか。

373nobodyさん2018/05/26(土) 21:31:37.47ID:???
Laravelのドキュメントってどこにありますか?
公式laravel.jpのドキュメントはインストール設定と期待したものじゃないし
いくつか機能の紹介してるリンクはリンク切れだし
http://laravel4.kore1server.com/docs/routing
唯一まともなクイックスタートもちょっと少なすぎます
なんか1つテーマにしてサンプルを説明つきで作るようなやつはないんですかね

374nobodyさん2018/05/27(日) 01:53:43.88ID:???
甘えるな小僧

375nobodyさん2018/05/27(日) 10:33:53.98ID:???
PHPはFWが乱立しすぎて首をしめてるな
その点node.jsはどこいってもexpressでいいよだから楽
環境構築でいえばPHPのほうがだいぶ楽だから
サーバエンジニアがいないとどうしてもPHPになってしまうのだろう

376nobodyさん2018/05/28(月) 11:18:24.32ID:???
>>375
他に比べたらオプソFW乱立って程でもない

総じて質が低いのが問題
それに起因するのかオリジナルFWが輪をかけてゴミまき散らしてて首絞めてる

377nobodyさん2018/05/28(月) 12:20:46.25ID:???
このスレで使うFWを統一しよう(名案
そしたら他の死んだスレで一向に答えが来ない独り言しないで済むしな

378nobodyさん2018/05/31(木) 15:25:27.48ID:???
public function foo()
{
  return [
    'a' => 'b',
    'c' => 'd',
  ];
}

FWでこういうコードを入れる必要があるのですが、
何を意図してこんなことをさせるのですか?
$foo = ['a' => 'b', 'c' => 'd'];
でよくないですか?

379nobodyさん2018/05/31(木) 15:47:30.82ID:7ebU4p49

380nobodyさん2018/06/07(木) 15:40:45.53ID:???
ここのイケメン先輩達に質問しようと思って質問内容を整理して文を書いていたら、途中で答えがわかりました
ありがとうございました

381nobodyさん2018/06/07(木) 16:12:26.53ID:???
おう良いってことよ
感謝を忘れるなよ

382nobodyさん2018/06/07(木) 17:10:31.89ID:???
>>380
よくあるやーつ

383nobodyさん2018/06/16(土) 10:55:24.21ID:XFveZCTu
PHPって1リクエストで1プロセス使うの?
効率悪くね?
1万件コネクションあったら1万プロセス生成するの?
無理じゃね?

384nobodyさん2018/06/16(土) 11:33:21.06ID:???
>>383
その辺はうまく最適化されてるからそこまで考えなくてもいい
実際、動いてるっしょ

385nobodyさん2018/06/16(土) 12:28:52.66ID:XsXx5YxH
【誘われたら、優秀″】 手に、マイクロ・チップ  ←<関/輿水>→  メール、ネットで公開処刑
http://rosie.5ch.net/test/read.cgi/liveplus/1529112504/l50

386nobodyさん2018/06/16(土) 12:38:57.88ID:WL8j0F1D
>>384
貧弱なサーバーだと一万もプロセス生成できなくね?

プロセス大量に生成しない他言語の方が有利でしょ

387nobodyさん2018/06/16(土) 13:48:58.44ID:???
WebサーバがPHPを実行する際の仕組みに依存するんだから言語は関係ない

Apache+CGIならリクエスト毎にプロセス立ち上げるし
Apache+mod_phpならApacheのMPM次第だし
Apache/nginx+php-fpmならひとつのプロセスで複数のリクエストを捌くし

388nobodyさん2018/06/16(土) 14:16:49.57ID:XFveZCTu
>>387
>ひとつのプロセスで複数のリクエストを捌くし

同時には無理でしょ?

1万件接続されても1万プロセスは作らないけど
リクエストが来た時割り当てられるプロセスが無かったら
空きが出るまで待たされるってことだろ

nodeはそもそもApacheモジュールとかFastCGIとか使ってなくて
node単体でもHTTPサーバーとして動作するって話だ
nginxと組み合わせる場合はHTTPで通信する

nodeは非同期I/Oだから前のリクエストが終わらないと一切次のリクエストの処理が開始できないって事も無い

FastCGI自体1996年ぐらいに出てきてから
そんな進歩してないっぽいし

389nobodyさん2018/06/16(土) 16:23:45.43ID:???
>>386
もちろんそう
phpは基本Cのラッパーだから、直接C言語で書けば爆速で動くよ
いつ完成するかは知らないけど頑張って

>>388
言ってる意味がよくわからなi
おそらくリクエストが最多のgoolgleやyahooが重くて仕方ないならその意見はわかるけど、
一体何に対しての意見なの?

390nobodyさん2018/06/16(土) 17:51:24.35ID:EG3qtVlZ
レストランで喩えると
コース料理を全部出し終わるまで
次の客を待たせるのがPHP

料理を作り終わって
客が食べている間に時間が空いても
他の客の料理は決して作らない

391nobodyさん2018/06/16(土) 19:20:14.63ID:m7Q1wvls
客一人に一人ウェイターが付くシステムのレストラン=PHP

ウェイターが5人なら注文を聞ける客は5人まで
それでもレストランで食事がしたい客は待つしかない
混雑に対応するにはウェイターの人数をかなり増やす必要がある
しかし常に大人数のウェイターを待機させておくと暇な時の人件費が嵩む
だからって混雑時だけ応援を呼ぶと対応に時間が掛かる

普通のレストラン=Node.js
一人のウェイターが複数の客の注文を取るので遥かに効率的
混雑していても客はとりあえず店に入って注文を出せる
客の人数がウェイターの人数を超えると一切注文を出せず、料理も来ないPHPとは対照的
混雑時もPHPほど大人数のウェイターは必要ない

392nobodyさん2018/06/16(土) 21:53:50.62ID:???
PHPスレで, しかもPHPに限らないことでPHPをディスってもなぁ

nodeが最適な場面は確かにPHPには向いてないだろうけど, それ以上でもそれ以下でもない

393nobodyさん2018/06/16(土) 22:52:57.98ID:DoWXS1Yy
プロセス生成(prefork)するので
今でも使われてるのってRubyのUnicornぐらいしか知らない

394nobodyさん2018/06/17(日) 14:49:10.70ID:???
知ったかが何人もいるのか。お先真っ暗感

395nobodyさん2018/06/17(日) 14:52:25.05ID:???
phpはそういう言語だからね
大丈夫

396nobodyさん2018/06/17(日) 15:15:30.67ID:dwEPgyzc
PHPでもnodeみたいな非同期処理を実現するものとして
php-pmとかSwooleがあるけど
本番で使ってる奴なんておらんやろ?

397nobodyさん2018/06/17(日) 15:47:59.14ID:???
結局goの方が早いしな

398nobodyさん2018/06/17(日) 16:21:08.45ID:???
非同期処理でややこしくするよりかはサーバー増やしたほうがよっぽどコストがかからん

399nobodyさん2018/06/17(日) 17:20:28.95ID:dwEPgyzc
Swoole使うと
最大で30倍近く速くなるらしいのでそれは暴論

400nobodyさん2018/06/17(日) 23:16:57.06ID:???
1万リクエストあるからって1万生成されるわけじゃないし
プロセス生成数なんて気にする必要はない

401nobodyさん2018/06/18(月) 00:32:48.78ID:???
実際Node.jsでそれだけ回すと非同期(笑)状態がよくあるしな

402nobodyさん2018/06/18(月) 09:00:28.15ID:vorT3MqW
https://laravel-news.com/laravel-swoole

nginx/FPMの一般的な構成だと80.93リクエスト/秒なのが
Swoole仕様では8717リクエスト/秒に増加している
30倍どころか100倍以上
同期(笑)

メモリリークや不具合を起こす危険と引き換えに時間の掛かるPHPやフレームワークの初期化も省略できるからな
そりゃ早いだろ

php-pmはメモリリークを防ぐために一定数のリクエストを処理後に再起動出来たが
Swooleは知らない

403nobodyさん2018/06/18(月) 09:10:51.86ID:???
Swoole自体は面白いと思うけど, FPMのチューンが分からないからその比較に意味は無い
仕組み上捌けるリクエストは増えると思うけども

404nobodyさん2018/06/18(月) 16:16:03.97ID:???
Swooleって何?PHPのアプリケーションサーバー?

405nobodyさん2018/06/18(月) 16:20:58.89ID:???
非同期ネットワークIOの拡張モジュール written by C

406nobodyさん2018/06/18(月) 16:41:14.62ID:???
reactphpとはちがうのん?よくわからん・・・

407nobodyさん2018/06/18(月) 17:07:22.53ID:???
使ったことないからアレだけど, 機能的には重複すると思う
Cで書かれた拡張かPHPで書かれたライブラリかの違い

408nobodyさん2018/06/18(月) 17:15:36.91ID:???
なるほど、じゃSwoolのほうがよさそうだね
日本語資料少ないけどちょっと使ってみよう

409nobodyさん2018/06/18(月) 19:07:53.58ID:???
Falconみたく中身弄れる人限定とかじゃないの?

410nobodyさん2018/06/19(火) 01:56:57.10ID:???
従来PHPですべてやってたことを
PHP+AngularJSで開発しようとおもってます。
この場合PHPが行うことはWebAPIとして入力値からCRUDして
JSONなどAngularJS側で使うデータの出力でいいんですよね?

411nobodyさん2018/06/19(火) 23:28:58.36ID:sZEZNTYu
認証も必要

412nobodyさん2018/06/20(水) 08:19:33.32ID:???
>>411
どうもありがとうございます。
作ったことはないのですが、確か最近の応用情報かなんかの過去問見たとき、
WebAPI作る問題出てて、そこでも確かにHTTPSでBasic認証してました。
ちゃんとWebAPIの作り方調べてやってみたいと思います。

413nobodyさん2018/06/20(水) 09:14:44.17ID:Xst2QP85
>>412
何で例に出すのがBASIC認証なのか
APIならOAuthとかじゃねえの

414nobodyさん2018/06/20(水) 09:26:37.65ID:Xst2QP85
自分一人が個人的に使うシステムでも無い限り
OpenAPIやSwaggerで仕様を明確化した方がよい

あるいは昔ながらのREST APIではなくGraphQLでも良いかもしれない

RESTは自分でも作れるかもしれないが
GraphQLは割と複雑な仕様なのでライブラリーが必須

OAuthはOAuthで難しい
変な実装をすれば車が通れる程の大穴セキュリティホールが開く
https://www.sakimura.org/2012/02/1487/

415nobodyさん2018/06/20(水) 09:52:37.08ID:???

416nobodyさん2018/06/20(水) 20:32:46.35ID:UnZq46Ab
プログラミングを誰でも習得できる方法は、「前場アキドルのプログラミングマスター方法」というブログで見られるらしいよ。ネットで調べると見られるらしいです。

5648W

417nobodyさん2018/06/21(木) 04:46:25.17ID:joNehjCV
掲示板が作りたくてデータベースとのやり取りをするPHPとそれのインターフェイスとなるHTMLを作りました
投稿時の想定は「まずHTMLにアクセスしてそこで項目を入力してPHPを通してデータベースにデータを入力」です
これはAjaxやPDOを使うことで作ることが出来ました
しかしHTML(JavaScript)のソースコードからPHPのファイル名を見つけてPHPを直接叩くことで簡単に荒らしが出来てしまいます
この問題を解決したいと思い、PHPをドキュメントルートから外したのですがそれはアクセスが出来ず失敗に終わりました
皆さんはこのような問題に対してどのような対策を施しているのでしょうか?

418nobodyさん2018/06/21(木) 05:56:58.20ID:???
相手が荒らすのに苦労する仕組みを作るといい

1文字 同じ文字のみ 英数字のみ URLとかスパムに使われそうなものを制限する
連投制限の仕組み作る(IPベース、クッキーベース、セッションベース、それら組み合わせ)
若干面倒な登録を経て登録者のみ投稿できる会員制にする
ログと投稿をつきあわせて類似度を比較する(処理は遅くなる)
AIで意味のある文章か判断する(PHPerには難易度が高すぎる)

419nobodyさん2018/06/21(木) 06:50:01.75ID:???
ワンタイムトークン

新着レスの表示
レスを投稿する