X



PHP質問・雑談スレ4【初心者お断り(ROM歓迎)】 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
垢版 |
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の改造
0376nobodyさん
垢版 |
2018/05/28(月) 11:18:24.32ID:???
>>375
他に比べたらオプソFW乱立って程でもない

総じて質が低いのが問題
それに起因するのかオリジナルFWが輪をかけてゴミまき散らしてて首絞めてる
0377nobodyさん
垢版 |
2018/05/28(月) 12:20:46.25ID:???
このスレで使うFWを統一しよう(名案
そしたら他の死んだスレで一向に答えが来ない独り言しないで済むしな
0378nobodyさん
垢版 |
2018/05/31(木) 15:25:27.48ID:???
public function foo()
{
  return [
    'a' => 'b',
    'c' => 'd',
  ];
}

FWでこういうコードを入れる必要があるのですが、
何を意図してこんなことをさせるのですか?
$foo = ['a' => 'b', 'c' => 'd'];
でよくないですか?
0380nobodyさん
垢版 |
2018/06/07(木) 15:40:45.53ID:???
ここのイケメン先輩達に質問しようと思って質問内容を整理して文を書いていたら、途中で答えがわかりました
ありがとうございました
0381nobodyさん
垢版 |
2018/06/07(木) 16:12:26.53ID:???
おう良いってことよ
感謝を忘れるなよ
0383nobodyさん
垢版 |
2018/06/16(土) 10:55:24.21ID:XFveZCTu
PHPって1リクエストで1プロセス使うの?
効率悪くね?
1万件コネクションあったら1万プロセス生成するの?
無理じゃね?
0384nobodyさん
垢版 |
2018/06/16(土) 11:33:21.06ID:???
>>383
その辺はうまく最適化されてるからそこまで考えなくてもいい
実際、動いてるっしょ
0386nobodyさん
垢版 |
2018/06/16(土) 12:38:57.88ID:WL8j0F1D
>>384
貧弱なサーバーだと一万もプロセス生成できなくね?

プロセス大量に生成しない他言語の方が有利でしょ
0387nobodyさん
垢版 |
2018/06/16(土) 13:48:58.44ID:???
WebサーバがPHPを実行する際の仕組みに依存するんだから言語は関係ない

Apache+CGIならリクエスト毎にプロセス立ち上げるし
Apache+mod_phpならApacheのMPM次第だし
Apache/nginx+php-fpmならひとつのプロセスで複数のリクエストを捌くし
0388nobodyさん
垢版 |
2018/06/16(土) 14:16:49.57ID:XFveZCTu
>>387
>ひとつのプロセスで複数のリクエストを捌くし

同時には無理でしょ?

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

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

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

FastCGI自体1996年ぐらいに出てきてから
そんな進歩してないっぽいし
0389nobodyさん
垢版 |
2018/06/16(土) 16:23:45.43ID:???
>>386
もちろんそう
phpは基本Cのラッパーだから、直接C言語で書けば爆速で動くよ
いつ完成するかは知らないけど頑張って

>>388
言ってる意味がよくわからなi
おそらくリクエストが最多のgoolgleやyahooが重くて仕方ないならその意見はわかるけど、
一体何に対しての意見なの?
0390nobodyさん
垢版 |
2018/06/16(土) 17:51:24.35ID:EG3qtVlZ
レストランで喩えると
コース料理を全部出し終わるまで
次の客を待たせるのがPHP

料理を作り終わって
客が食べている間に時間が空いても
他の客の料理は決して作らない
0391nobodyさん
垢版 |
2018/06/16(土) 19:20:14.63ID:m7Q1wvls
客一人に一人ウェイターが付くシステムのレストラン=PHP

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

普通のレストラン=Node.js
一人のウェイターが複数の客の注文を取るので遥かに効率的
混雑していても客はとりあえず店に入って注文を出せる
客の人数がウェイターの人数を超えると一切注文を出せず、料理も来ないPHPとは対照的
混雑時もPHPほど大人数のウェイターは必要ない
0392nobodyさん
垢版 |
2018/06/16(土) 21:53:50.62ID:???
PHPスレで, しかもPHPに限らないことでPHPをディスってもなぁ

nodeが最適な場面は確かにPHPには向いてないだろうけど, それ以上でもそれ以下でもない
0393nobodyさん
垢版 |
2018/06/16(土) 22:52:57.98ID:DoWXS1Yy
プロセス生成(prefork)するので
今でも使われてるのってRubyのUnicornぐらいしか知らない
0394nobodyさん
垢版 |
2018/06/17(日) 14:49:10.70ID:???
知ったかが何人もいるのか。お先真っ暗感
0395nobodyさん
垢版 |
2018/06/17(日) 14:52:25.05ID:???
phpはそういう言語だからね
大丈夫
0396nobodyさん
垢版 |
2018/06/17(日) 15:15:30.67ID:dwEPgyzc
PHPでもnodeみたいな非同期処理を実現するものとして
php-pmとかSwooleがあるけど
本番で使ってる奴なんておらんやろ?
0397nobodyさん
垢版 |
2018/06/17(日) 15:47:59.14ID:???
結局goの方が早いしな
0398nobodyさん
垢版 |
2018/06/17(日) 16:21:08.45ID:???
非同期処理でややこしくするよりかはサーバー増やしたほうがよっぽどコストがかからん
0399nobodyさん
垢版 |
2018/06/17(日) 17:20:28.95ID:dwEPgyzc
Swoole使うと
最大で30倍近く速くなるらしいのでそれは暴論
0400nobodyさん
垢版 |
2018/06/17(日) 23:16:57.06ID:???
1万リクエストあるからって1万生成されるわけじゃないし
プロセス生成数なんて気にする必要はない
0401nobodyさん
垢版 |
2018/06/18(月) 00:32:48.78ID:???
実際Node.jsでそれだけ回すと非同期(笑)状態がよくあるしな
0402nobodyさん
垢版 |
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は知らない
0403nobodyさん
垢版 |
2018/06/18(月) 09:10:51.86ID:???
Swoole自体は面白いと思うけど, FPMのチューンが分からないからその比較に意味は無い
仕組み上捌けるリクエストは増えると思うけども
0404nobodyさん
垢版 |
2018/06/18(月) 16:16:03.97ID:???
Swooleって何?PHPのアプリケーションサーバー?
0405nobodyさん
垢版 |
2018/06/18(月) 16:20:58.89ID:???
非同期ネットワークIOの拡張モジュール written by C
0406nobodyさん
垢版 |
2018/06/18(月) 16:41:14.62ID:???
reactphpとはちがうのん?よくわからん・・・
0407nobodyさん
垢版 |
2018/06/18(月) 17:07:22.53ID:???
使ったことないからアレだけど, 機能的には重複すると思う
Cで書かれた拡張かPHPで書かれたライブラリかの違い
0408nobodyさん
垢版 |
2018/06/18(月) 17:15:36.91ID:???
なるほど、じゃSwoolのほうがよさそうだね
日本語資料少ないけどちょっと使ってみよう
0409nobodyさん
垢版 |
2018/06/18(月) 19:07:53.58ID:???
Falconみたく中身弄れる人限定とかじゃないの?
0410nobodyさん
垢版 |
2018/06/19(火) 01:56:57.10ID:???
従来PHPですべてやってたことを
PHP+AngularJSで開発しようとおもってます。
この場合PHPが行うことはWebAPIとして入力値からCRUDして
JSONなどAngularJS側で使うデータの出力でいいんですよね?
0411nobodyさん
垢版 |
2018/06/19(火) 23:28:58.36ID:sZEZNTYu
認証も必要
0412nobodyさん
垢版 |
2018/06/20(水) 08:19:33.32ID:???
>>411
どうもありがとうございます。
作ったことはないのですが、確か最近の応用情報かなんかの過去問見たとき、
WebAPI作る問題出てて、そこでも確かにHTTPSでBasic認証してました。
ちゃんとWebAPIの作り方調べてやってみたいと思います。
0413nobodyさん
垢版 |
2018/06/20(水) 09:14:44.17ID:Xst2QP85
>>412
何で例に出すのがBASIC認証なのか
APIならOAuthとかじゃねえの
0414nobodyさん
垢版 |
2018/06/20(水) 09:26:37.65ID:Xst2QP85
自分一人が個人的に使うシステムでも無い限り
OpenAPIやSwaggerで仕様を明確化した方がよい

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

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

OAuthはOAuthで難しい
変な実装をすれば車が通れる程の大穴セキュリティホールが開く
https://www.sakimura.org/2012/02/1487/
0416nobodyさん
垢版 |
2018/06/20(水) 20:32:46.35ID:UnZq46Ab
プログラミングを誰でも習得できる方法は、「前場アキドルのプログラミングマスター方法」というブログで見られるらしいよ。ネットで調べると見られるらしいです。

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

1文字 同じ文字のみ 英数字のみ URLとかスパムに使われそうなものを制限する
連投制限の仕組み作る(IPベース、クッキーベース、セッションベース、それら組み合わせ)
若干面倒な登録を経て登録者のみ投稿できる会員制にする
ログと投稿をつきあわせて類似度を比較する(処理は遅くなる)
AIで意味のある文章か判断する(PHPerには難易度が高すぎる)
0419nobodyさん
垢版 |
2018/06/21(木) 06:50:01.75ID:???
ワンタイムトークン
0421nobodyさん
垢版 |
2018/06/21(木) 17:51:48.90ID:???
直接PHP叩くのと、フォームから入力するのと、
マクロにとっては荒らしのしやすさになんの差もないと思うのだけど。
0422nobodyさん
垢版 |
2018/06/21(木) 22:09:54.17ID:p4z3zI1o
reCAPTCHA v3ではユーザーのアクションなしに相手がロボットがどうか
判別できるようになるらしい
0423nobodyさん
垢版 |
2018/06/22(金) 06:56:12.83ID:0CbeJ1vw
回答ありがとうございます

>>418-420
ワンタイムトークンが良さそうだと思いました

>>421
マクロだと確かにそうですね
IPアドレスで連投を規制したりすることも検討してみます
0424nobodyさん
垢版 |
2018/06/22(金) 14:11:43.65ID:HDxTbLco
PeachPieって言う.NETでPHP動かす環境あるらしいけど
どうなの?
そもそも使い物になる?
0425nobodyさん
垢版 |
2018/06/22(金) 21:01:21.02ID:???
検索したらエロい店ばっかりでてきて吹いた
0426nobodyさん
垢版 |
2018/06/22(金) 21:02:21.49ID:???
>>424
使ったこと無いけど、ASP.NET Webサーバー使ってるなら良さそう
ってかそれ意外になにもメリットなさそう
0427nobodyさん
垢版 |
2018/06/22(金) 21:16:34.26ID:???
力技すぎて面白い
0429nobodyさん
垢版 |
2018/06/23(土) 11:55:24.07ID:???
CILにコンパイルされてから実行されるわけだからパフォーマンスは向上するわな(Phalangerと同じ)
あとはエクステンションがどのくらい互換性持って提供されるかだと思う
使い物になるかで言えば公式が「まだexperimentalだよ」って言ってる以上は(productionでは)全く使えない

>>428
plaintextのベンチとか意味あるの?
0430nobodyさん
垢版 |
2018/06/23(土) 12:38:28.80ID:JGE8gBSU
単なるプレーンテキストの送信でも言語やフレームワークによってかなり差が出るのは分かる

PeachPie自体はまだ実験的な物ではあるが
WordPressは既に動かせるらしい
0431nobodyさん
垢版 |
2018/06/26(火) 00:02:49.58ID:vSUzM4yv
composerってメモリ使い過ぎじゃね?
サーバーの利用可能なメモリが少ないとSymfony4のインストールすら完了しない

composerのロックファイルは
十分メモリのあるローカル環境で作り
メモリーの少ないサーバーではロックファイルからcomposer installするのがオヌヌメらしい
とは言えもう少し少なく出来ないのか?
0433nobodyさん
垢版 |
2018/06/26(火) 00:10:24.54ID:R+4nVO22
あくってなに?
0435nobodyさん
垢版 |
2018/06/28(木) 16:38:17.84ID:???
早くしろよ

あくしろよ

あく
0436nobodyさん
垢版 |
2018/06/28(木) 20:03:07.10ID:???
汚ねえスレだなあ
0437nobodyさん
垢版 |
2018/06/29(金) 00:44:22.34ID:???
>>410あたりを見て気になったんだけど
API作るというだけでは認証機構入れる必要これっぽっちもないよね?

BASIC含め簡単なものや固定のものは投げてる要求確認すれば丸わかり

バッチ等からのアクセスが主だったり他サイトに利用させるとかが絡むなら
事前認証してtoken吐いて……って機構が必要かもしれないけど>>410はブラウザ経由

認証つけるにしても、もしAPI以外でログイン認証してるならそっちのセッションをそのまま使える
0438nobodyさん
垢版 |
2018/06/29(金) 08:59:46.28ID:???
いろんなところから利用可能にするためにWebAPI使うんじゃないのか
0439nobodyさん
垢版 |
2018/06/29(金) 09:31:29.33ID:???
そらTwitterみたいに本家がユーザ認証前提の仕組みで他所でも認証してあーだこーだって話なら、な
例えばYahooのルビ振りWebAPIなんかは認証なんてない
0440nobodyさん
垢版 |
2018/06/29(金) 10:47:32.20ID:???
appidってのがそうなんじゃないの
0441nobodyさん
垢版 |
2018/06/29(金) 12:09:11.00ID:???
事前登録したIDを送るのは認証とはちょっと違くね
0442nobodyさん
垢版 |
2018/06/30(土) 13:16:02.58ID:HFlHS16J
composerはなぜかパッケージのダウンロードが一個ずつって特徴もある
並列化する非公式プラグインはあるが
何で公式は並列ダウンロードしないのか

https://github.com/hirak/prestissimo
0443nobodyさん
垢版 |
2018/06/30(土) 13:23:07.35ID:???
なぜかって普通だし
さして重要じゃないだろそれ
0444nobodyさん
垢版 |
2018/06/30(土) 14:09:23.84ID:HFlHS16J
並列ダウンロードが当たり前の他のパッケージマネージャに慣れていると
遅く感じる

プラグイン作者によるプルリクエストがcomposerにあったが
マージされるのはいつか分からない
0445nobodyさん
垢版 |
2018/06/30(土) 14:13:48.30ID:???
composer使うのやめればいいじゃん
0446nobodyさん
垢版 |
2018/06/30(土) 15:02:10.11ID:TwF5k2FW
PHPもやめます
0447nobodyさん
垢版 |
2018/06/30(土) 17:48:37.84ID:???
そもそもcomposerってなんで出てきたの?
必要なのこれ
composerじゃなきゃダメなことなんかあるの
0448nobodyさん
垢版 |
2018/06/30(土) 18:04:13.84ID:grfnyPlf
知らないのに使わなければ良いとか言ってんの?
0449nobodyさん
垢版 |
2018/06/30(土) 18:11:10.91ID:???
フレームワーク使いたい奴には必須かもしれないけど
それ以外は別に使わなくても問題ない っていうイメージ

つか何故公式が云々って公式の気持ちなんか知るか国語のテストかよ
0450nobodyさん
垢版 |
2018/06/30(土) 18:44:02.99ID:grfnyPlf
composerの中の人は忙しいので
並列ダウンロードは皆があったら便利だと思う機能とは知っているが
優先度を低くしている
そんな感じでプルリク作成から2年経った
0451nobodyさん
垢版 |
2018/07/01(日) 01:30:55.83ID:???
あれから2年、君は成長できただろうか
0452nobodyさん
垢版 |
2018/07/01(日) 12:23:54.18ID:???
composerは車輪の再発明が嫌いな
再利用大好人間たちがコードを持ち寄って使いあったり
そこから新しいのを作るためのなれ合いツール
0453nobodyさん
垢版 |
2018/07/01(日) 12:49:01.19ID:???
pear/peclが要らなくなるわけじゃないんだよな
0454nobodyさん
垢版 |
2018/07/01(日) 13:49:42.07ID:???
peclはともかくpearはいらないだろ
0455nobodyさん
垢版 |
2018/07/02(月) 09:37:25.47ID:???
composerにあるライブラリって全部PHPでしょ?
pearを進化させたようなもんだよねたぶん
0457nobodyさん
垢版 |
2018/07/03(火) 19:57:52.06ID:???
最近必死すぎだろw
飢え死ねアフィカスwww
0458nobodyさん
垢版 |
2018/07/03(火) 20:05:02.85ID:???
ComposerのロゴはGo以来のイラッと感を覚えるわけよ
0459nobodyさん
垢版 |
2018/07/03(火) 22:45:29.42ID:nJxIsGZ6
PHPの拡張ってプロジェクト毎にはインストール出来ない?

拡張を実行時に動的に読むdlって関数が昔あったらしいが
削除されてるし
dlは使い物にならなかったのか

他言語ではC拡張のあるライブラリも
他のライブラリと同じ様に
そのプロジェクトだけのインストールができるのが普通
0461nobodyさん
垢版 |
2018/07/04(水) 00:54:24.18ID:???
>>459
現状出来ない
実行時に拡張をロードする機能自体が存在しないのでどうにもならない
やりようがあるとすれば実行時ロード機能を提供するPHP拡張を作成することくらい
PECLに登録して最終的に本体にバンドルされるところまで至らないとエコシステムには取り込まれないだろうなぁ
rasmusとかandiとかzeevとかの基幹メンバーがとんでもなく保守的だし正直何やっても絶望的だと思う

この辺は割とマジで根本的に設計上の欠陥だと思うわ
0462nobodyさん
垢版 |
2018/07/04(水) 02:12:15.23ID:???
.phpから拡張を読み込むことができるようになると
セキュリティホールが量産されそうな気がするが
その辺、大丈夫なのか?
0463nobodyさん
垢版 |
2018/07/04(水) 03:09:24.37ID:???
何となくそういう懸念が浮かぶのは分かる
ただ他言語, 具体的にはPythonとかRuby, Nodeなんかでは頻繁に使われてる
system系の関数使って実行ファイルを叩くのとどう違ってくるのかと考えると別に実行時に拡張ロード出来ても良かろう(dlが削除されたのは安定性が理由だと書いてあるし)
0464nobodyさん
垢版 |
2018/07/04(水) 03:49:54.33ID:???
PHPの用途で動的に読み込めると何が嬉しいのか、
まともな理由がないから削られちゃったんだろ
0465nobodyさん
垢版 |
2018/07/04(水) 06:31:20.45ID:???
プロジェクト毎にPHPインストールすりゃいいんじゃね
0466nobodyさん
垢版 |
2018/07/04(水) 07:52:00.71ID:???
>system系の関数使って実行ファイルを叩くのとどう違ってくるのかと考えると

systemやexecは、php.iniで包括的に設定するしか手がない disable_functions 設定で禁止できる
かなり違うんじゃないかね

http://php.net/manual/ja/info.configuration.php#ini.enable-dl
>このディレクティブは、Apacheモジュール版のPHPを使用した場合にのみ 有用です。
>PHPの動的ロード拡張機能をdl()で 仮想サーバー毎またはディレクトリ毎にオンまたはオフに変更することが できます。
>
>動的ロード機能をオフにするのは主としてセキュリティ上の理由によります。
>動的ロード機能により、 open_basedir の拘束を全て 無視することが可能になります。
0467nobodyさん
垢版 |
2018/07/04(水) 09:59:47.40ID:VNkVp5lL
そもそもdlって最近は削除されて使えないんじゃなかったの?
0468nobodyさん
垢版 |
2018/07/04(水) 20:40:21.34ID:???
exec使える状態って
アホなアップローダとか置いてた日にはopen_basedirの拘束なんて無視して好き放題されちゃうよね
0469nobodyさん
垢版 |
2018/07/05(木) 04:15:11.30ID:???
>>466
いや, php.iniだけで動的モジュールロードの可否を与える(php.iniのみで設定可能な)ディレクティブがあれば一緒だろ
自分でdlの例出してるじゃん

mod_phpで実行する場合は権限がWebサーバになるからそれが嫌だというのはよく分かるが
0470nobodyさん
垢版 |
2018/07/05(木) 04:17:30.15ID:???
変なところにペーストしちゃったけどまぁいいや
0471nobodyさん
垢版 |
2018/07/05(木) 08:10:38.44ID:6vNW6Lds
dlは安定性に問題があるから削除したって言うけど
他の言語で出来ていることが何で出来ない?
PHPはリクエストの度にメモリの内容破棄するから?
0472nobodyさん
垢版 |
2018/07/05(木) 16:56:15.00ID:???
extensionの動的ロードしたいってどんなとき
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況