[過去ログ]
【PHP】下らねぇ質問はここに書き込みやがれ 12 (1002レス)
【PHP】下らねぇ質問はここに書き込みやがれ 12 http://mevius.5ch.net/test/read.cgi/tech/1619667579/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
663: 620 (ワッチョイ 9a2c-QEAr) [sage] 2021/08/05(木) 15:59:24.92 ID:bqGeTZjz0 レンタルサーバーの速さを言っても、仕方ない。 他人と共有しているから、他人がリソースを使うと、待たされる 安いのだから、低品質も仕方ない。 そういうものと割り切るしかない KENTA は完全に割り切ってる。 PHP は一生使わないでよいと言ってる 金にならないから。 低品質で安い仕事 http://mevius.5ch.net/test/read.cgi/tech/1619667579/663
664: デフォルトの名無しさん (ワッチョイ d58c-By/s) [] 2021/08/05(木) 16:09:21.48 ID:IpTlZujB0 >>658 あなたこそ、理屈はともかく現実がわかってないかと。 以下をtest.phpにコピペしてブラウザからアクセスしてみてください。 (Chrome、FireFox、Edgeのどれでも) hello world が表示されて、接続が切断され、"これは表示されない"は受信されません。 ---------- <html><head> </head> <body>hello world <SCRIPT language="JavaScript"> window.stop(); </SCRIPT> <? echo str_pad(" ",4096); flush(); sleep(10); echo "これは表示されない"; ?> </body> </html> ---------- http://mevius.5ch.net/test/read.cgi/tech/1619667579/664
665: 620 (ワッチョイ 9a2c-QEAr) [sage] 2021/08/05(木) 16:10:32.06 ID:bqGeTZjz0 Ruby on Rails では、 XAMPP, MAMP など、Linux以外を使うことはない Linux コマンド・シェルスクリプト、Docker, Heroku, AWS も、 KENTA のサロンの初心者用コースに入っているから それに皆、AWS のくろかわこうへいのサロンにも入る Windows 10, WSL2, Linux, Docker, VSCode でも出来る XAMPP, MAMP とか、訳の分からない環境を使うことはない。 動きが本番環境と異なるから http://mevius.5ch.net/test/read.cgi/tech/1619667579/665
666: デフォルトの名無しさん (ワッチョイ bd34-9imK) [sage] 2021/08/05(木) 16:13:52.63 ID:cuxOZbzu0 id:F8+XC2Dv0ってPHPがApacheのモジュールとして動作する時の理屈すら理解してなさそうw http://mevius.5ch.net/test/read.cgi/tech/1619667579/666
667: デフォルトの名無しさん (ワッチョイ bd7b-LMHu) [sage] 2021/08/05(木) 17:59:10.16 ID:F8+XC2Dv0 >>664 まあわざわざコード書いてよこしたのだから、こちらでも試したよ。 ファイルは200Bytes, ダウンロードサイズは 4.4KBと表示されてる。 確かにそちらの意図どおり、ハロワだけ先に表示されるよ。(パースされてる) 4KBパディングすれば、通常ならバッファをキック出来るから、確かにパーサもキック出来るはずだし、実際そうなってる。 ただな、時間を既に書いたが、それでは間に合わないんだよ。 ネットワークってのは地味に遅くて、例えばここからPHP.netへのpingは264msかかってる。 後処理は平均29.5-58ms程度だと予想されてるので、window.stopがサーバーに間に合わない。 結果、パケットは送信済みで、受け取られたパケットが捨てられるだけだよ。 ただし確かにパースはされてる。(=その方法でもユーザーの体感速度は上がる可能性がある) ただ、それはページのhtmlだからであって、ajaxではその方法は使えない。 ページのhtmlはブラウザの速度競争のおかげで出来るだけ早くパースするように出来てるからだ。 xmlを送る場合、閉じタグ以降に何かあったらエラーだったので、パディングで押し込みは無理だ。 jsonについては後ろにパディングしてもエラーは出ないようなので、押し込み自体は出来るが、 そもそもAPIが途中のパース結果を見せるように出来てないから、普通に実装されてれば全部揃ってからパースだよ。 世の中の大部分のサイトがこの「押し込み」で高速化してる、というのならブラウザも対応するはずだけど、聞いたこと無いでしょ。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/667
668: デフォルトの名無しさん (ワッチョイ 5d01-RnN5) [sage] 2021/08/05(木) 17:59:23.81 ID:X/tiD49H0 記録37レスか 殿堂入りだな http://mevius.5ch.net/test/read.cgi/tech/1619667579/668
669: デフォルトの名無しさん (ワッチョイ 5d01-RnN5) [sage] 2021/08/05(木) 18:01:07.93 ID:X/tiD49H0 と思ったらまだ記録更新するつもりか http://mevius.5ch.net/test/read.cgi/tech/1619667579/669
670: デフォルトの名無しさん (ワッチョイ d58c-0pp8) [sage] 2021/08/05(木) 18:23:53.35 ID:IpTlZujB0 >>667 間に合わないの意味がわかりませんです。 本処理終了の時点でブラウザ表示に必要な情報と、その次の行にwindow.stopまでを一気に吐き出すんだから、そのあとにサーバーから何か来て破棄されようが、どうでもいいんじゃないかしら? 要は十分な情報を受け取った段階でブラウザ側から切断してるんですよ。 本処理の後の後処理を待たせてる時間をなんとかしたいのが目的なのに、4KBでぐだぐだ言われてもねぇ。 後処理を待たせてる時間と比較したら明らかに早い段階で通信終了してるはずですよ。なんとかしたいレベルってことは人間が認識できるレベルの待ち時間は発生してるんですよね。それと比較して4KBは人間にわからないレベルの時間ですよ。 xmlが〜とかは、htmlでラップするなり、頭良いんでしょうから工夫してくださいな。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/670
671: デフォルトの名無しさん (ワッチョイ 5d01-QEAr) [sage] 2021/08/05(木) 18:32:12.95 ID:xWv0yV5l0 接続の切断が目的なら、 <? echo str_pad(" ",4096); flush(); sleep(10); これは、いらない。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/671
672: デフォルトの名無しさん (ワッチョイ d58c-0pp8) [sage] 2021/08/05(木) 18:37:28.54 ID:IpTlZujB0 >>671 あら、そうなんですか? 後学のためにどうやるのか教えて下さい http://mevius.5ch.net/test/read.cgi/tech/1619667579/672
673: デフォルトの名無しさん (ワッチョイ 56bb-ds/h) [sage] 2021/08/05(木) 19:02:41.47 ID:Sb1zsMiv0 >>654 コレ、面白いね http://mevius.5ch.net/test/read.cgi/tech/1619667579/673
674: デフォルトの名無しさん (アウアウアー Sa5e-ci9S) [sage] 2021/08/05(木) 19:56:24.99 ID:uMZDvd8qa 無職のアスペルガーであるコミュ症プログラマーはエネルギーが違うね そのエネルギーをもっと違うところに使おうか http://mevius.5ch.net/test/read.cgi/tech/1619667579/674
675: デフォルトの名無しさん (ワッチョイ bd7b-LMHu) [sage] 2021/08/05(木) 20:15:50.49 ID:F8+XC2Dv0 >>670 「間に合わない」はこちらの勘違いだった。その後送信データはないので関係ない。 とはいえ、君の案を採用することはないから安心しろ。 それはexecより酷すぎる。 実際のところ、ajaxでhtmlを取っても途中でパースするとは思えないので、iframeに突っ込んでそこから取るしかないが、 そんなコードを見せられたら、ハア?ってなるだろ。 それよりはまだexecの方がマシ。環境依存コードは散らかされたら終わるが、俺がやるのでそれはないし、 とりあえず今回については linux.php と windows.php に纏めておけば、そんなに悲惨なことにならない。 纏めると、よい順に、 1. write_close()を呼ぶ。が、無いのでどうしようもない。 他言語では普通にあるこれがないのでPHPはクソ、 そしてこれが必要なことを理解出来ないのでPHPerもクソ。 (なおコントリビュートする気がある奴が居たら手伝うのでよろしく。 ちなみにexitとdieは同じらしいので今は分離はしてないね、多分。そしてこの辺の基本的な仕様すら抑えてないから俺だけでは無理だ) 2. 現実装。多分平均 29.5-58ms程度待たされることになる。 が、そもそもajaxはほぼ自動アップデータだし、実際のサイトではどれくらいの速度なのか不明だし、 これがもっさり感につながるかは分からない。 3. exec。待たされることはないが、環境依存コードになるので開発とデプロイの手間が増える。 とはいえ、今のところのPHP的な正解はこれのようだ。 4. htmlタグでラップしてiframeに突っ込んでパースさせる。 ただ、上から下のdomは触れた気がするが、下から上には触れなかった気がするので、実際はchannelで通信か? まあやれば出来るが、コード見たら呆れられるだろ。 execは精々数行で済むのに対し、こちらは一手間二手までは済まないし、execよりも遅いし。 やるのが目的ならそれで良いが、一応execという解があるのだから、それよりもマシでないと意味がない。 今のところ、現実装のままで本番環境まで持っていき、実際の使用感を確かめて、必要ならexecか、というところ。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/675
676: デフォルトの名無しさん (ワッチョイ bd7b-LMHu) [sage] 2021/08/05(木) 20:22:29.50 ID:F8+XC2Dv0 >>670 > なんとかしたいレベルってことは人間が認識できるレベルの待ち時間は発生してるんですよね。 ちなみにこれはない。まだ部品を動かしている段階。 ただそもそもC出身なので基本的にノーコストで速くなるのならそれを選択する。 そして普通の環境では有る close が無いので面食らっているわけだ。 俺が見落としてるだけだと思っていたが、本当にないのだから驚きだ。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/676
677: デフォルトの名無しさん (ワッチョイ 56bb-ds/h) [sage] 2021/08/05(木) 20:32:09.79 ID:Sb1zsMiv0 まー設計レベルでミスってるから write_close みたいなこと言い出してんだけど、2年ぐらい Web に関われば、自力で解決できるかもね がんばれw http://mevius.5ch.net/test/read.cgi/tech/1619667579/677
678: デフォルトの名無しさん (ワッチョイ 5d01-d0wC) [sage] 2021/08/05(木) 20:54:11.00 ID:xr/U2THc0 アスペおじさんに50の質問しようぜ >>675 ・PHPはクソクソという癖してPHPにしがみついてるのはなんで? ・なんで無料レンタルサーバーなの?無職だからお金ないの? ・任意でcloseできてウェブと親和性が高い言語って例えば何?あるならそれ使えば? ・例えばNodeならできるが?Nodeでやればいいのに何でやらないの? ・Nodeが使えるサーバーってVPSで500円ぐらいで用意できるけど500円も払えないの?それとも自分じゃサーバーを作れないの? ・何度かproc_openって出てるみたいだけどそれを無視してるのはなんで? ・そもそも働いてるの? ・そんなコミュ能力で仕事できるの? http://mevius.5ch.net/test/read.cgi/tech/1619667579/678
679: デフォルトの名無しさん (オッペケ Sr05-ETFs) [sage] 2021/08/05(木) 21:04:38.27 ID:tYvxU5+Zr 無料レンサバ案件受けるか普通 イキっててキメぇわ http://mevius.5ch.net/test/read.cgi/tech/1619667579/679
680: デフォルトの名無しさん (ワッチョイ d58c-0pp8) [sage] 2021/08/05(木) 21:05:44.43 ID:IpTlZujB0 >>675 あーいえは、こーいうで、なかなか楽しかったです あなたが不可能と断定したものを、あたしは2つも実現してみせたんですから、少しは敬意を表しなさいよ笑 断定したことをひっくり返されても、上からの態度とか、かっこわるいわよ そんなんじゃ、いつまで経っても童貞卒業できませんよ http://mevius.5ch.net/test/read.cgi/tech/1619667579/680
681: デフォルトの名無しさん (ワッチョイ 5d01-60o5) [sage] 2021/08/05(木) 21:19:16.52 ID:xWv0yV5l0 >>672 場合分けしました。 とは言え、ググって原因は予想したけど。 昔、「システム業界では、滅多に不可能と答えてはダメ」というようなことを言われたことがあります。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/681
682: デフォルトの名無しさん (ワッチョイ bd7b-LMHu) [sage] 2021/08/05(木) 21:22:27.97 ID:F8+XC2Dv0 >>678 proc_openはexecと変わらんだろ。 それで環境依存無しのコードが書けるわけでも無し。 PHPについては何度も言ってるように無料レンタルサーバーで動かす為で、 それは俺が使う用ではないからだよ。 PCのことなんて分からない連中でも動かせるようにして、しかも無料なら試しにやってみようかともなるだろ。 この辺については俺がどういうアプリ戦略を採るかだから、意見言われてもああそうですか、でしかない。 そしてここで色々ひけらかして後々粘着されてもウザイだけだから、特定出来るほど詳しく言うつもりもない。 なおNodeの無料鯖が日本に出現したら間違いなくそれに向けて作る。 今それがあるのならPHPは捨てるし、多分今後は書くこともない。 既に言ったが俺的にベストなのはサーバレスで、実際はレンタルサーバーよりもサーバレスが断然いい。 だからherokuの鯖が日本に出来るのがベストだが、無いのだから仕方ない。 PHPは糞だが、そもそも俺のアプリはそんなに大きいものではなく、 むしろSQLiteのラッパでしかないので、今はphp.netを睨みながらやってるような状況だが、それでも何とか進めてる。 ただまあ、俺が考えてることは今のWebからすると奇妙な事だから、君達と話が噛み合わないのは仕方ない。 それで君らが頭に来てるのも分からんでもない。 ただ先述の通り、詳しく言うと後々の憂いになるから、お互いに技術的なこと以外には踏み込まないようにした方がいい。 Webってのはそれくらいの距離感が丁度いいのだと俺は思ってる。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/682
683: デフォルトの名無しさん (ワッチョイ 5d01-60o5) [sage] 2021/08/05(木) 21:23:55.06 ID:xWv0yV5l0 場合分けしました。 →場合分けして検証しました。 たいした仕事ではなかったんだけど、 ある公式を忘れても、基本の基本から証明できるので、 基本の基本が用意されてれば、(システム業界では)不可能と答えてはダメなんです。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/683
684: デフォルトの名無しさん (オッペケ Sr05-ETFs) [sage] 2021/08/05(木) 21:24:45.00 ID:tYvxU5+Zr しかもSQLiteって笑うところだな http://mevius.5ch.net/test/read.cgi/tech/1619667579/684
685: デフォルトの名無しさん (ワッチョイ bd7b-LMHu) [sage] 2021/08/05(木) 21:25:17.35 ID:F8+XC2Dv0 >>680 つかまともな解じゃねえし。それでドヤられても困る。 動くっつうのと、やっていいかと、やるべきかは、別の問題だよ。 ただまあ、アイデアは面白いよ。それは他の人も言ってるとおり。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/685
686: デフォルトの名無しさん (ワッチョイ bd7b-LMHu) [sage] 2021/08/05(木) 21:30:22.62 ID:F8+XC2Dv0 >>684 エンタープライズ用途ならスケールアウト出来ないSQLiteは論外なのだろうけど、 ぶっちゃけ俺の用途ではSQLiteで十分だし、それは既にチェック済み。 というかね、単体では十分速いよSQLite。 まあ、他は使ったこと無いんだけどね。 SQLとか知らんし、とりあえず一番簡単な奴から、ってことで試して、十分だったのでそれまで。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/686
687: デフォルトの名無しさん (ワッチョイ 5d01-d0wC) [sage] 2021/08/05(木) 21:40:09.08 ID:tHJjXwU70 >>682 execとproc_openが同じなんだw もうこの一言で満足したわ http://mevius.5ch.net/test/read.cgi/tech/1619667579/687
688: デフォルトの名無しさん (ワッチョイ 5d01-d0wC) [sage] 2021/08/05(木) 21:44:25.28 ID:tHJjXwU70 ちなみに解決法の例 https://github.com/elazar/asynchronous-php あー面白かった 満足したわ http://mevius.5ch.net/test/read.cgi/tech/1619667579/688
689: デフォルトの名無しさん (JP 0H2e-3fhR) [sage] 2021/08/05(木) 21:48:51.81 ID:cTOwQa60H 上のレン鯖の人は、 ・無料で使える ・日本国内に鯖がある ・好きなミドルウェアや言語をセットアップできる という条件を満たす環境があるなら、PHPに拘らないという主旨の発言をしているようにみえるが、その認識であってる? http://mevius.5ch.net/test/read.cgi/tech/1619667579/689
690: デフォルトの名無しさん (ワッチョイ d58c-0pp8) [sage] 2021/08/05(木) 21:58:56.90 ID:IpTlZujB0 >>681 場合分けとは? 具体的にどういうコードにすればいいのか教えてもらえるとありがたいです。 「いらない」とは、単純に指摘箇所をコードから削除するだけですか? http://mevius.5ch.net/test/read.cgi/tech/1619667579/690
691: デフォルトの名無しさん (ワッチョイ ed5f-qgft) [sage] 2021/08/05(木) 22:05:04.22 ID:vJjfvU2/0 php嫌いなのは分かるし俺も別に好きじゃないが、じゃあなんで使うんだよ、使わざるを得ないなら従え、以外に帰着しねーんでは。 お得意のnode様でも他言語からしたらディスられるだろうし不毛だわ http://mevius.5ch.net/test/read.cgi/tech/1619667579/691
692: デフォルトの名無しさん (ワッチョイ bd7b-LMHu) [sage] 2021/08/05(木) 22:08:47.31 ID:F8+XC2Dv0 >>689 まあyes。正確には > ・無料で使える > ・日本国内に鯖がある ここまではその通りで、 > ・好きなミドルウェアや言語をセットアップできる この必要はない。好きでもないPHPを使ってるのがその証拠。 一番いいのはNode。 ただ、動的言語でないと無理なのではないかと予想してるので、(が、何故そうなのかは言えない、これはすまん) GoとRustは駄目だ。というかGoはPHP以上に糞だし、Rustは今のところ様子見してる。 それで、無料鯖で使える動的言語=PHP/Python/Rubyで、どれも知識ゼロだから、 とりあえずメジャーなPHPから試すか、で、まあ、言語と界隈が糞な所以外は問題ないから我慢して使ってる。(というほど使ってないけど) まあぶっちゃけ、PHPが糞だ糞だと言われつつものさばってるのは、確かに便利なんだよ。これは認める。 そしてPHP.netの出来はマジで素晴らしい。PHP.netと比べるとPythonやRubyのサイトはゴミだね。 この辺も、また、ググッて回答が出てくるかも含めて、知識ゼロならPHPから試すのが妥当だし、そうしただけ。 もしかして他の選択肢がある? ご指摘の通り、PHPは手段であって、目的ではない。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/692
693: デフォルトの名無しさん (JP 0H2e-3fhR) [sage] 2021/08/05(木) 22:18:22.41 ID:cTOwQa60H >>692 あるよ。俺はoracleが提供しているプラットフォームを無料で使ってる。メモリ1GBのインスタンス2つとoracleの自律型DB2台。東京と大阪リージョンがある。 あとGCPのGAEなら東京リージョンで使える無料枠がある。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/693
694: デフォルトの名無しさん (ワッチョイ bd7b-LMHu) [sage] 2021/08/05(木) 22:20:09.19 ID:F8+XC2Dv0 >>691 Nodeは、俺がJS好きなだけで、PHPerからすると糞なのは認める。 というかね、DBと非同期が壮絶に相性が悪くて、Nodeだと結構トンデモなコードになる。 それに慣れてる俺は良いが、慣れてない奴からしたら糞以外の何者でもない。 ただしasyncが導入されたから今書いたらだいぶマシなのかもしれんが。 とはいえ、PHPは真偽判定テーブルとか見るだけでマジで糞で、糞なのを知っててもどハマりするから俺的には無理なんだ。 直近だと三項演算子、勿論結合がおかしいのは知ってるが、癖としてやってしまうんだよ。 そして見た目、バグに見えないから嵌る。 だからまあ、PHPを主力に使ってる人にとっては問題ないのだろうけど、 他言語を普段使ってて、偶にPHPとかだと、本当に無駄に嵌って、あ〜、ってのが多すぎて悲しいんだよ。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/694
695: デフォルトの名無しさん (JP 0H2e-3fhR) [sage] 2021/08/05(木) 22:22:30.05 ID:cTOwQa60H >>693 DB必須ならGCPだと無料のGCEにDBセットアップすれば良いけど国外リージョンになるので、実質oracle一択かな。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/695
696: デフォルトの名無しさん (ワッチョイ bd7b-LMHu) [sage] 2021/08/05(木) 22:25:46.31 ID:F8+XC2Dv0 >>693 Oracleなんてガチ枠だから完全にノーマークでしたわ。 とはいえ、SQLとはまた違うとは聞いてるし、そもそもそれってあんまりど素人向けじゃないから不味い気が。 逆に無料レンタルサーバーなんて完全にど素人向けでしょ。 向こうもど素人が使う前提だし、やっぱりど素人にはレンサバがお似合いだと思うのだけど。 お互いトラブらないという意味で。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/696
697: デフォルトの名無しさん (ワッチョイ 5d01-60o5) [sage] 2021/08/05(木) 22:28:07.44 ID:xWv0yV5l0 >>690 勉強不足では困るので、 「ハードウェア」も「予想してから知識を呼び出す」のも必要です。 単純なプログラムを作ってから、魂を足し算します。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/697
698: デフォルトの名無しさん (JP 0H2e-3fhR) [sage] 2021/08/05(木) 22:29:03.23 ID:cTOwQa60H >>694 jsの真偽判定テーブルも他言語からみたらPHP8と50歩100歩だと思う。7や5はもう過去だから知らない。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/698
699: デフォルトの名無しさん (JP 0H2e-3fhR) [sage] 2021/08/05(木) 22:35:41.93 ID:cTOwQa60H >>696 補足しておくと、インスタンス2台無料だから、oracleのDB使いたくない場合は、インスタンス1台に好きなDBインストールする方法もあるよ。ど素人にどこまでのオペレーションを任せるかはわからんけど。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/699
700: デフォルトの名無しさん (ワッチョイ d58c-0pp8) [sage] 2021/08/05(木) 22:36:53.61 ID:IpTlZujB0 >>697 えっと、すいません、なにかの宗教ですか? http://mevius.5ch.net/test/read.cgi/tech/1619667579/700
701: デフォルトの名無しさん (ワッチョイ bd7b-LMHu) [sage] 2021/08/05(木) 22:44:02.23 ID:F8+XC2Dv0 >>698 JSのもそれなりに糞だが、 型を意識してれば実際問題としてそこに命中することはないんだよ。 だから一般のプログラミングをしてる奴にとっては問題ない。 PHP7のはなあ、なんだったか忘れたが、 JS的には問題ないものでもおかしなのがあって、しかもそれに普通に命中するから嵌るんだよ。 とはいえ最早PHP8を使うべきなのかな?三項演算子は解決されてるし。 今確認したが、無料鯖はまだ7のようなのだけど、 現実的に俺が今書いてるのを公開するのはどうやっても半年後とかでしかないから、 その頃に一般的に使えれば全く問題ないし、 駄目でもいつかはPHP8に移行するのだろうから、待ってれば済む話ではあるし。 今7を使ってるのは、実は4年前に味見だけしてて、その時に7だったからなんだよね。 まあ、PHP8は検討しとくわ。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/701
702: デフォルトの名無しさん (JP 0H2e-3fhR) [sage] 2021/08/05(木) 22:48:59.24 ID:cTOwQa60H >>701 10月に8.1出るし、今から開発するのに7.4はどうかと思う。アクティブサポートは今年の11月末で切れるし。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/702
703: デフォルトの名無しさん (ワッチョイ bd7b-LMHu) [sage] 2021/08/05(木) 22:53:13.39 ID:F8+XC2Dv0 >>699 OracleやAWSとかは、基本的に「将来有料のお客様になるかも」な人向けだろ。 だから、その気がない人がずっと使うのは不味いと思ってるんだよ。 勿論技術的な問題もあるけど。 無料レンサバはその点、広告を貼りますよ!だから、 永久に無料で使われてもいいですよ、な点が違う。 だからまあ、ガチ向けなものは基本ノーマークなんだわ。 ただ、技術的にはだんだん敷居が下がってて、サーバレスなんてその最たる物だろ。 たぶん、本当になんにも知らないど素人が、それが鯖であることを認識もせず鯖を運用する時代が来つつあるんだよ。 俺はそれに向けてちょっと仕掛けようとしてる。(まあ高確率でポシャるが、それは致し方ない) http://mevius.5ch.net/test/read.cgi/tech/1619667579/703
704: デフォルトの名無しさん (ワッチョイ bd7b-LMHu) [sage] 2021/08/05(木) 22:55:44.39 ID:F8+XC2Dv0 >>702 了解です。 現実的に古いバージョンを使う理由もないからね。 まあ問題は環境の再構築だが、これもやるしかないね。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/704
705: デフォルトの名無しさん (ワッチョイ 5d01-60o5) [sage] 2021/08/05(木) 22:57:56.82 ID:xWv0yV5l0 >>700 コマンドラインだけのプログラムでは、 ユーザーが使いやすいものではないので。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/705
706: 620 (ワッチョイ 532c-2tbN) [sage] 2021/08/06(金) 05:53:40.73 ID:13Hyhr+y0 無料サーバーは低品質だから、まともに動かない。 他のアプリがリソースを使うと、5秒ぐらいの動画広告でも、1時間動かない事もある 素人向けだから、PHP・SQLite でも良いと思う。 KENTA がPHPを一生やらなくても良いというのは、お金にならないから 未経験者の転職では、Ruby on Rails, Heroku, AWS だけ。 Node.js, Django も使われていない プログラミングの話というよりは、安い・低品質の仕事の話。 すごく限定されたことしか出来ない、世界の話 http://mevius.5ch.net/test/read.cgi/tech/1619667579/706
707: デフォルトの名無しさん (ワッチョイ 297c-O8K+) [sage] 2021/08/06(金) 06:20:19.81 ID:4ndH842K0 >>706 実稼働12時間程度で100万円超えの案件もあるぞ 言語やフレームワークだけで語ってる奴には一生回ってこないだろうなw http://mevius.5ch.net/test/read.cgi/tech/1619667579/707
708: デフォルトの名無しさん (アウアウアー Saab-IXul) [sage] 2021/08/06(金) 06:29:46.94 ID:UjnAn9a5a >>707 もう令和になっているのにこのネタにマジレスしちゃうの? http://mevius.5ch.net/test/read.cgi/tech/1619667579/708
709: デフォルトの名無しさん (ワッチョイ e191-lZJ8) [sage] 2021/08/06(金) 14:33:32.85 ID:Pmsm9i010 どういうネタならマジレスしていいの? http://mevius.5ch.net/test/read.cgi/tech/1619667579/709
710: デフォルトの名無しさん (ワッチョイ 895f-VlOp) [sage] 2021/08/06(金) 18:17:48.03 ID:sAaum+q/0 そもそも後処理とやらを軽くすればいい話ではないのかね DBの設計とSQLの書き方次第で速度がかなり違うよ そこを見直すのがいいんじゃないかな それとnode.jsはwebサーバーと一体だから切断があるがphpはwebサーバーからリクエストされるものであって接続の管理はできないのでは無いんでないのかね http://mevius.5ch.net/test/read.cgi/tech/1619667579/710
711: デフォルトの名無しさん (ワッチョイ 895f-VlOp) [sage] 2021/08/06(金) 18:35:46.02 ID:sAaum+q/0 そもそもphp上で接続するのではなくブラウザに終了を認識させればいいので ob_startとob_get_lengthなどを使い headerでContent-LengthとConnection: closeを出力する方法がマッチしているのではないかな 適当にググってみたけど下のサイトがわかりやすかったかな ttps://pisuke-code.com/php-send-response-immediately/ http://mevius.5ch.net/test/read.cgi/tech/1619667579/711
712: デフォルトの名無しさん (ワッチョイ c17b-NIVl) [sage] 2021/08/06(金) 20:51:49.77 ID:lgptz/Bq0 > Content-Length おお正解出てきたか。実はこちらもそこに気づいて試して(昼間に)確認済みだった。 んで、いちいち文句言われるからとりあえず夜まで待ってたところだった。 つかマジで、お前らだいぶ酷いわ。改めてPHPerは糞だと再認識した。 小学生同士の小手先テクニック大会は楽しいのだろうけど、そんなんだから上達しないんだと思うぞ。 >>710-711 こちらはheaderだけで問題なくなった。 とりあえずサイト読んでみたが、こちらの結果からすると、ob_xxxもconnection:closeも要らんね。 (というか多分 connection: close は問題になるからやらない方がいい) > そもそも後処理とやらを軽くすればいい話ではないのかね > DBの設計とSQLの書き方次第で速度がかなり違うよ > そこを見直すのがいいんじゃないかな 勿論分かってるが、今でも十分軽いし、これ以上どうしようもないので。 > 接続の管理はできないのでは無いんでないのかね これは違う。接続の管理を「しなくてもいい」のであって、「出来てもよい」んだよ。 単純には機能が足りてないだけ。 近いのはGUIのイベント、onXXXだが、 あれも最初は addEventListenerとかは不要(onXXXだけで問題ない)と思われてたんだよ。 でも、有るのと無いのとでは大違いで、今は全面的に採用されてるだろ。 といってもお前らは若すぎてこの話が意味不明なら、イベントバブルでもいい。 あれもHTMLは最初から搭載していたようだが、おまえらPHPerなら特に、バブルなんて無くても設計出来ると思ってるだろ? しかしこれも同様に有るのと無いのでは設計のしやすさの次元が違ってくるので、全面採用になりつつある。 機能が足りてないときでも、足りてないと気づけない人の方が多い。 ネットが無くても不自由しなかったし、その前は携帯が無くても不自由しなかった。 無ければ無いなりにやってしまうものなのだけど、これが有ればどんなに良いか!と思いつける人はほぼ居ないんだよ。 (一応言っておくが、俺も思いついたわけではなく、他言語で知ってたから不便を感じられただけ) 例えば、asyncとか、技術的には最初からあっても不思議ではなかったけど、誰も思いつけなかったろ。あれと同じ。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/712
713: デフォルトの名無しさん (ワッチョイ c17b-NIVl) [sage] 2021/08/06(金) 21:13:42.19 ID:lgptz/Bq0 >>711 > 適当にググってみたけど ちなみにどうググッたか教えてもらえないか? こちらも昼間ググリまくったが、このサイトは見てない。多分ヒットしてない。使ったのはBingだ。 んで、今google/duckduckgo/yandexで"Content-Length header"で試したが、ヒットしない。 ヒットしない(しにくい)理由は簡単で、多分仕様じゃないからだ。 ブラウザが勝手にそう動くだけで、動かなくても問題ないし、動くべきだともされてない物を、 Content-Lengthの紹介で書くことが出来ないからだ。 ただこちらは、前から意味不明なヘッダだなと思ってたので、今日改めて目にした時にピンと来た。 が、ググッてもそうは書いてないし、まあ試しにやってみるか、で、ビンゴだった。 (と書けば簡単そうに見えるが、実際はちゃんと動いているか確認するまでに結構手間取ってる) だからここみたいに個人レベルのTips集やQiitaとかじゃないと駄目なのだが、 そもそもこちらの検索結果にはそのサイトが出てこない。 どういうキーワードでどこで検索したか教えてもらえないか? http://mevius.5ch.net/test/read.cgi/tech/1619667579/713
714: デフォルトの名無しさん (ワッチョイ 895f-VlOp) [sage] 2021/08/06(金) 22:05:32.07 ID:sAaum+q/0 php 後処理 でgoogleで検索して最初に出てきたやつ 接続を切ることができないのはwebサーバーへの接続だから node.jsはwebサーバーを内包しているから出来ることでphpはwebサーバーを内包していない Content-Lengthは何バイト応答があったらコンテンツの終わりかブラウザが認知するのでそれを利用したテクニック http://mevius.5ch.net/test/read.cgi/tech/1619667579/714
715: デフォルトの名無しさん (ワッチョイ c17b-NIVl) [sage] 2021/08/06(金) 22:08:02.71 ID:lgptz/Bq0 >>711 すまん、713取り下げ。 Bingで「PHP 後処理」でググったら一番上に出た。 俺は仕様を確認しようとしていたのだが、やり方をググれば出るのか。 なまじ自分で出来るものだから「やり方」なんてググろうとも思わなかったのが問題だな。 PHPについては初心者だということを再認識して、「やり方」もググるべきだった。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/715
716: デフォルトの名無しさん (ワッチョイ c17b-NIVl) [sage] 2021/08/06(金) 22:36:18.90 ID:lgptz/Bq0 >>714 すまん、前後した。手間をかけて本当にすまん。 > node.jsはwebサーバーを内包しているから出来ることでphpはwebサーバーを内包していない これはその通りだが、PHPから出力をクローズしたら当然apacheにも伝わりクローズされる。 そしてこれはnodeでも同じだ。 実際は(Nodeでも)closeしてもhttpコネクションを切っているわけではない。 それだと再送要求が来た時に対応出来ないだろ。 だから、実際の低レベルの接続はNodeでもPHPでも同様に隠蔽されてる。 (勿論ApacheはHTTP/1.1だとgzipしてるし、別にバッファも持ってる) よって、PHPでもNodeと同様に『プログラミングモデルとしては』接続を切ることが出来る。 だからやっぱり機能が足りてないんだよ。 パイプで説明した方が分かりやすいかな? php | apache > /dev/eth0 な状況で、php が stdout(出力パイプ) をクローズすることは出来るだろ。それだけ。 その後も apache は必要なら動き続けるし、終了すれば終わる。 この構造はNodeも内部的に持ってないと話にならないから同様の筈だよ。 ただしそもそも論として「Content-Lengthは常に付けとけボケ!」なノリのようだ。 この手のTipsとしてはStackoverflowが秀逸で、 https://stackoverflow.com/questions/2773396/whats-the-content-length-field-in-http-header の回答の中に以下仕様書へのリンクとかがあるが、 https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4 読む限りContent-LengthはもしかしてHTTP/1.0時代には必須だったのかな? 今現在、 echo json_encode(...); でjsonを語れ流してるから、これアウトかよ、、、、ってちょっと萎えてる。 メモリを無駄に食わない素晴らしいコードだと思ってたんだがなあ、、、。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/716
717: デフォルトの名無しさん (ワッチョイ 895f-VlOp) [sage] 2021/08/06(金) 23:28:26.68 ID:RLLkP2Do0 >>716 最初に"TCP接続を明示的に切りたい"とあったので機能はないと回答した そのあたりは認識してほしい 環境依存にはなるがwebサーバーに通知つする仕組みはある fastcgi_finish_request tps://www.php.net/manual/ja/function.fastcgi-finish-request.php FastCGI用の物なのでapacheのmod_phpでは不可 また、Content-Lengthは後処理不要ならば付けなくても問題なし json出すならContent-Type: application/jsonは付けたほうがいいと思う http://mevius.5ch.net/test/read.cgi/tech/1619667579/717
718: デフォルトの名無しさん (ワッチョイ 895f-VlOp) [sage] 2021/08/06(金) 23:30:33.96 ID:RLLkP2Do0 楽に使うならクラス作って継承して使えばエレガントに書けると思う http://mevius.5ch.net/test/read.cgi/tech/1619667579/718
719: デフォルトの名無しさん (ワッチョイ 13ad-tZU0) [sage] 2021/08/07(土) 00:43:48.11 ID:f2WMK3C10 androidにPHPアプリとかあるけど役に立つ? http://mevius.5ch.net/test/read.cgi/tech/1619667579/719
720: デフォルトの名無しさん (ワッチョイ c17b-NIVl) [sage] 2021/08/07(土) 00:55:00.18 ID:dDF85n970 >>717 > 最初に"TCP接続を明示的に切りたい"とあったので機能はないと回答した 責める気はないが、これはさすがに屁理屈だろ。 572は確かに俺の書き方が悪い。 ただ、「初心者」が間違った「やり方」を選んでトンチンカンな方向に行くことはよくある話で、 これを防ぐ為には「最終的に何を目指してるか」を言わなければならないが、 俺は575の時点で、 ・俺が初心者であり、 ・後処理してる最中でもブラウザにパースさせてUXを改善したいから、 ・TCP接続を切りたい と全部揃えているのだから、本当に分かってる奴が居たら、この時点で 「それはやり方を間違ってる。ヘッダにContent-Lengthを付ければそれで済む」の回答が出てきて然りなんだよ。 それがおかしな小手先テクニック合戦になったり、 或いは上記のように全部正しく揃えているのにそれを理解せず「コミュ障」呼ばわりしてくるから、 PHPerは糞だと言ってるんだよ。 これは君も含めてね。何を相手に伝えるべきか分かってないんだよ。 まあコミュ障だからこそ、(=つまり何を伝えれば通じるかが分かってない) 相手がコミョ障かどうか(=つまり必要事項が全部含まれているか)を見分けることが出来ないという、 至極当然の話で、よくあるから慣れてはいるけども。 なんかNodeを勘違いしているっぽいが、プログラミングモデルのレイヤーはPHPと同じだよ。 PHPは上手く抽象化されてる(584)というのなら、そりゃNodeでもその他でも同じだよ。 実際書けば(文法が違うだけで)ほぼ同じコードになる。 下位のTCP接続を直接切りに行けるのはCで相当野蛮に書かれたものだけだが、そんな物存在してないでしょ。 だからこれはエスパーではなく常識で読み替えられる範囲だよ。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/720
721: デフォルトの名無しさん (ワッチョイ c17b-NIVl) [sage] 2021/08/07(土) 00:55:28.53 ID:dDF85n970 >>717 ただまあ、これはさておき、 そもそも環境依存コードを導入する気はないが、無料鯖は大体CGIモードだから行けるのか。 とはいえ少し金かけたらモジュールも選べて、 その際にいちいち「動かなくなりました」とか言われるのが面倒だから止めとくが。 ただ、これだとやっぱり昔は必要だと認識されてたって事だよ。 正直、Content-Lengthよりも直接的で分かりやすい解決策だから、俺も606で言ってるように、 最初に整備されるAPIであり、普通のプログラマにとっては第一選択肢の筈なんだよ。 ただこれだと、モジュール化した際に不要だと見なされて落とされたってことになる。これは何でだろう? 実装自体は至極簡単だし、基本的な物だから、「問題を多発させた」とかない限り落とす判断にはならないはずだけど。 > また、Content-Lengthは後処理不要ならば付けなくても問題なし MDNは「付いている時も、付いてない時もあります」と言い、 W3Cは「出来る限り付けろ。ストリーミング以外は付けられるだろ」と言い、 実際の他サイトは確かに「付いている」ので、ちと迷ってる。 > json出すならContent-Type: application/jsonは付けたほうがいいと思う これは勿論付けてる。てか、そうじゃないとブラウザで正しく読めないので。 > 楽に使うならクラス作って継承して使えばエレガントに書けると思う 問題はそこではなく、メモリを出来るだけ食わない方法でやろうとしてた。 jsonはDBの読み出し結果から直接生成する(長さを予期出来ない)ので、Content-Lengthを付けるにはob_xxxxを使うしかないが、 これだと単純に倍のメモリを食ってしまうので。 まあ君らは「でも物理で殴る方が速いんでしょ?」なノリで、実際これも事実ではあるが、俺としては以下と同様、 正しく使えばポンコツでも速いぜ!を目指したいんだよ。 https://qiita.com/masarufuruya/items/3bd72326448e4f8fa569 JSがそうなんだけど、おそらくPHPも同様で、糞コードばかり食わされて正当な評価を得ておらず、 それなりに洗練されたコードだったら意外と速いんだろうとは思うよ。 Webでは「速いよりも早い方が重要」だからある程度致し方ないのだとしても。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/721
722: デフォルトの名無しさん (ワッチョイ 9910-qxAg) [sage] 2021/08/07(土) 08:23:51.18 ID:xdlB1E9b0 phpでもやるかなって思ったけど、大勢で同じセッションみるとかできる? http://mevius.5ch.net/test/read.cgi/tech/1619667579/722
723: デフォルトの名無しさん (ワッチョイ c17b-NIVl) [sage] 2021/08/07(土) 09:24:23.62 ID:dDF85n970 >>717 一応こちらの現時点の結論を言っておくと、 Content-Lengthはストリーミング以外は全部つけないと駄目だな。RFCでもSHOULDだし、 https://datatracker.ietf.org/doc/html/rfc7230#section-3.3.2 動きを見る限り、apacheもこれをスヌープしてる。 よって、「仕様準拠」なら flush() だけで何も問題ないから、 fastcgi_finish_requestはモジュール化した際に廃止された、と見える。 だから711内のページ筆者もだいぶ間違ってて、 まずConnection: closeをTCP接続終了(いわゆるFIN/FINACK/ACK)と勘違いしてるが、 実際はこれは同じコネクションを再利用するかの話だから関係ないし、 HTTP/1.1だとデフォでkeep-aliveなので無駄にcloseにするとバグに当たる可能性があるから悪手だ。 https://en.wikipedia.org/wiki/HTTP_persistent_connection#HTTP_1.1 そしてContent-Lengthを付けたら上手く行くよ!ではなく、付けないと話にならなくて、 仕様準拠=付けてれば最初からこんな事にはならずに済んでる。 だからこいつも俺も『仕様を知っている者から見れば』ただのマッチポンプでしかない。 ここで711内ページ筆者、俺、或いは君らも含めての問題は、レイヤーを間違ってることだ。 PHPは生のヘッダを普通に扱えるレイヤーでのプログラミングになるから、ヘッダについての仕様を(本来は)熟知してないといけない。 だから575に対してはいきなり「Content-Lengthヘッダ付けろ馬鹿タレ」とぶった切れないといけない。 とはいえ昨今の状況であらゆる階層の仕様を熟知しろなんてどだい無理な話ではあるが。 だからやっぱりもう一つレイヤーを上げるべきなんだ。 ヘッダの知識がない状態で具だけ書きたいのなら、ヘッダ周りを自動的によしなにやってくれるフレークワークを使うべきだろう。 そしてLaravelは見たところそんな感じだ。 なるほど、「セッション周りとかはフレームワークに任せてLaravelだけ使ってろ」というのは当たってる。 (俺も含めて)素人ほどフレームワークを使うべきだろう。 とはいえ、俺はデプロイ先が無料サーバなのでいちいち仕様確認して素PHPレイヤでのプログラミングをするしかないのだが。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/723
724: デフォルトの名無しさん (アウアウアー Saab-MJGN) [sage] 2021/08/08(日) 13:58:58.59 ID:e9M5NaPRa ぶつくさ文句ノイズ垂れ流すの鬱陶しいからNGするためにコテつけてくれよ 「PHPerは糞」とかどうだ http://mevius.5ch.net/test/read.cgi/tech/1619667579/724
725: デフォルトの名無しさん (ワッチョイ 13f7-tZU0) [sage] 2021/08/08(日) 14:23:41.94 ID:sHQOKZVt0 chmateだと最初から荒らしってなって表示されないよ! http://mevius.5ch.net/test/read.cgi/tech/1619667579/725
726: デフォルトの名無しさん (ワッチョイ c134-y0A/) [] 2021/08/09(月) 02:00:02.31 ID:gYL5uhjB0 それにしてもThe老害を絵に書いたような奴だな 加齢臭が半端ない そんな奴が無料レンタルサーバーでできるPHP案件にしがみ付いてるのがまた笑うところ http://mevius.5ch.net/test/read.cgi/tech/1619667579/726
727: デフォルトの名無しさん (アウアウアー Saab-IXul) [sage] 2021/08/09(月) 07:34:41.94 ID:nmP8QoA6a 無職の人はたくさんレス書く時間あって良いよね http://mevius.5ch.net/test/read.cgi/tech/1619667579/727
728: デフォルトの名無しさん (ワッチョイ 532c-Lto6) [sage] 2021/08/09(月) 13:13:55.63 ID:78aLRiJY0 YouTube で有名な、雑食系エンジニア・KENTA は、 PHP は、一生やらなくてよいと言ってる 価格低下圧力がひどいでしょ。 客もプログラマーも、PHPを見下しているから、大金を出さない だから勉強しても、まず食えない それでサロンは、Ruby on Rails だけにしている。 マコなりとか普通、学校でも80万円コース 今はYouTube で、200万円の学校をぼったくりと言ったから、訴えられているけどw KENTAは日本一だから、学校も訴えて知名度を上げようとしてくる KENTAは、Railsを使っている会社は、モダンな会社とも言ってるし。 他の会社とは、明らかに異なる http://mevius.5ch.net/test/read.cgi/tech/1619667579/728
729: デフォルトの名無しさん (ワッチョイ a15f-b60h) [sage] 2021/08/09(月) 21:41:07.25 ID:Qit5eEqI0 一YouTuberの言うことを真に受けなくてもいい http://mevius.5ch.net/test/read.cgi/tech/1619667579/729
730: デフォルトの名無しさん (アウアウウー Sa55-YX0H) [] 2021/08/09(月) 22:11:02.95 ID:pjjWaghZa 1つ聞きたいんですが、SCSSを導入する際メンテナンスが面倒なら嫌だなと思ってます dart sassにサポートが切り替わった際にその前のruby−sassやnode-sassのコードをわざわざ書き換えないといけないんでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1619667579/730
731: デフォルトの名無しさん (アウアウウー Sa55-YX0H) [] 2021/08/10(火) 03:02:08.79 ID:0jLh5m3Ra 結局Javaもphpと同じで自分で考えて構築しないとダメなんですね… 人のコードを映しても環境の違いからエラーが出ると SASSを使うためにとんでもない時間掛かってます… http://mevius.5ch.net/test/read.cgi/tech/1619667579/731
732: 728 (ワッチョイ 532c-Lto6) [sage] 2021/08/10(火) 11:29:36.31 ID:9wi/dlAk0 ruby−sass は、かなり前に終了している Ruby on Rails 6 では最初から、Node.js, Webpack, Babel。 当然、SCSS でBootstrap を使うことも多い autoprefixer, browserslist とか、ミニファイなど、すべて全自動 会社では毎週、各ライブラリを更新してテストする。 この環境構築運用部門がないと、ずっと環境が古いままで直せないので、 ウイルス攻撃などを受ける こまめに更新・テストするのは常識。 貯めてはいけない だから、Rails入門者にも、CircleCI も必須。 最近は、AWS Fargate, Terraform なども必須で、 皆、AWSのくろかわこうへいのサロンにも入る KENTA のサロンの初心者向け勉強のコースは、 基本情報技術者資格、Rails, Linux, Docker Compose, Node.js(Webpack, Babel), Bootstrap VSCode(Remote Container, WSL2 ならRemote WSL), Heroku, CircleCI、データベース http://mevius.5ch.net/test/read.cgi/tech/1619667579/732
733: デフォルトの名無しさん (ワッチョイ 337d-QHSv) [sage] 2021/08/10(火) 14:40:11.44 ID:zAxh9PBJ0 JavaとJavaScriptの区別がついてない奴がいるらしいぞ。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/733
734: デフォルトの名無しさん (ワッチョイ e191-lZJ8) [sage] 2021/08/11(水) 13:59:27.76 ID:fZr8mTrx0 こんな紛らわしい名前を付けた犯人は誰? http://mevius.5ch.net/test/read.cgi/tech/1619667579/734
735: PHPerは糞 (ワッチョイ c17b-NIVl) [sage] 2021/08/11(水) 21:04:34.54 ID:C/NScrzP0 PHPでの参照渡しの「ノリ」が分からないのだが、どの辺が相場なのだ? なお、 https://tanakahisateru.hatenablog.jp/entry/2013/12/12/012728 は読んだ。これはいい記事だ。 そしてとりあえずコーディングルールを探してみたが、無い。 PSR/WordPress/Zend/Cakeのはさらっと見たが、文法だけで、動作については記述がないようだ。 だから、動作周りも含めての推奨コーディングルールがあればそれを教えてくれると助かる。 DBから読み出してフォーマットしてjsonで出力する場合、一番単純には、 $resultArr = fetch_from_DB(); format_for_API($resultArr); // 参照渡しで自己書き換え echo json_encode($resultArr); function &format_for_API(&$arr){ // ここで何かフォーマット return $arr; // 直上のコードでは必要ないが、直積み(以下)用にreturnしている。 } となる。ただしこのコードは以下の様な直積み echo json_encode(format_for_API(fetch_from_DB())); だと、 Notice: Only variables should be passed by reference が出る。(ただし動く) http://mevius.5ch.net/test/read.cgi/tech/1619667579/735
736: PHPerは糞 (ワッチョイ c17b-NIVl) [sage] 2021/08/11(水) 21:04:54.72 ID:C/NScrzP0 ここで、直積みコードを動かす為には format_for_API を「参照渡し」から「値渡し値返し」に変更する必要が有り、 コードは、 $resultArr = fetch_from_DB(); $resultArr = format_for_API($resultArr); // 再代入 echo json_encode($resultArr); となる。これだと結果としては速度/メモリ共に変化無い。ただし最近の『再代入禁止』には反するので、 $resultArr = fetch_from_DB(); $resultArr_formatted = format_for_API($resultArr); // 別名 echo json_encode($resultArr_formatted); と別名にすると、(今回の俺の場合、速度は大して変わらないが)使用メモリは増えてしまう。 これらから言えるのは、 A. format_for_APIは「参照渡し(参照返し)」が正しいはずだが、何故かNoticeが出されてしまう。 仕様としては、参照渡しに未初期化の変数が渡されたらそこでnull初期化される、ということだから、 直積みでも動くのは正しく、Noticeが過剰なように見える。(ただし以下7とは矛盾) (PHPの構造上 is_ref が変数上にしか持てないのが問題なのだろうが、 そこはボックス化みたく変数化すればいいだけで、このような右辺値を流し込んでいる状況なら危険性はないはず。 実際動いているし。だから何でNoticeなの?となる) B. 同名の変数に再代入する場合は(破棄されることが見えているから)最適化がかかり、問題はない。 C. 別名の変数に保存した場合、元の変数($resultArr)がそれ以降使われない場合でも、破棄されず、最適化がかからない。 結果、メモリを余分に消費する。 これについて、冒頭の記事では「そういう特殊な高級言語だ」と表現されているが、これは当たっている。 クダグダ考えずに「値渡し値返し」でひたすら全部組み上げてもそれなりに動くからだ。 そして昨今の『インミュータブル』で『再代入禁止』なのは下位での変更が上位のコードから見えないからであって、 PHPの場合は「値渡し」でガッツリ保護されているから、 『再代入禁止』『参照透過』何それ美味しいの?でも確かにそれなりに問題ないはず。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/736
737: PHPerは糞 (ワッチョイ c17b-NIVl) [sage] 2021/08/11(水) 21:05:17.28 ID:C/NScrzP0 俺の現環境ではBしか選択肢がないが、ここら辺はPHP界隈ではどうなってるのだ?具体的には、 1. 理想的にはAでNoticeが削除されるべきだが、既にそうなってる/これから削除予定か? 2. (知らんが、)実はPHPって一つのコードで出来てて、「おま環」ってのがあまり無く、 俺の環境でBが最適化されてれば、どの環境に持って行っても最適化されてて問題なく動くのか? (これについてJSが悲惨なのはご存じの通り) 3. まさか、notice切ればいいだけだろ、とか言うノリか?(個別に切れるのならこれも有りだが) 4. 最適化を期待して、参照渡しの使用自体を禁止/抑止する方向か? (真に必要な場合以外は使うな等。今回なら上記のように同名の変数に代入すればいいだけだよね、みたいな。) 5. この辺も含めての、文法(見た目)以外のコーディングルールで有名なのが有れば教えてくれ。 6. このPHP流の参照仕様、使い道無いよな?実は冒頭の記事を読んだ当初、 > PHPの参照はいちど変数が参照になってしまうと、二度ともとに戻ることができないので、扱いにくくてやっぱりダメです。 とあるので、参照は変数側に固定で、参照変数を値渡しの関数の引数にしても常に参照渡し、なら、 スゲーカッケー!!!と思って試したが、全くそうじゃなかった。 しかも参照渡しの関数の戻り値を普通に値変数として確保出来るし、「二度ともとに戻ることができない」というのが意味不明。 Cみたいに呼ぶたびに自由に切り替えられることを想定しているのなら、それは過剰で、 (そもそも元々出来たようだがPHP4.1.3で廃止された、というのを見た覚えがあるが、再確認出来ない) 実際はRustみたいに「mutableな変数は最初から決まっているので宣言時に固定する」で問題ない。 だからコピーオンライト(これってPHP.netでは書いてないだろ!今日初めて知ったわ!)で 全部見た目は値渡し値返し、なら、凄く先進的ではあったのだが。 (なお参照の取り扱いは他言語も苦労してて、C++でも失敗してる) http://mevius.5ch.net/test/read.cgi/tech/1619667579/737
738: PHPerは糞 (ワッチョイ c17b-NIVl) [sage] 2021/08/11(水) 21:05:44.32 ID:C/NScrzP0 7. > リファレンス渡しが想定されているところに、値渡しを行うとエラーになります。 > https://www.php.net/manual/ja/functions.arguments.php ってあるのだが、今回ってこれか?なら動いてはいるがやっぱりアウトなのか? ちなみに直積みになってるのは、元はfetch_from_DBの出力側で format_for_APIしてたのを、 json_encodeの入力側でやるように移動して、結果的に <?= => の間にブッ込まれてるからだ。 まあ色々文句有るんだろうが、それでも答えてやってもいいぞ、って人はよろしく。 一応724の要求どおりにこのスレ内ではコテにしておく。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/738
739: デフォルトの名無しさん (アウアウクー MMdd-aRn8) [sage] 2021/08/11(水) 21:40:15.37 ID:PueOOWfrM 参照返しも値返しもメモリ使用量差は今日日のメモリ容量から見たらわずかな違いだから気にしなくて良い。 参照返し、値返しを考慮したメモリ省使用量化はクセのあるコードになる。 書いた本人以外が今後保守する場合は、その人にもわかりやすく、ミスさせないためにそういうコードを書かないほうが良い。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/739
740: PHPerは糞 (ワッチョイ c17b-NIVl) [sage] 2021/08/11(水) 22:21:08.32 ID:C/NScrzP0 >>739 その記事とかからすると、どうも過度にやってる奴が居るようだが、今回の件は全くそうではないだろ。 むしろ、「値渡しで自己に再代入って、こいつ参照渡し知らない馬鹿だろ!」って、お前らなら突っ込んでくるところだろ。 がまあ、PHP鯖はPCでしかないので大富豪プログラミングでおk、なのは確かにその通りかもな。 http://mevius.5ch.net/test/read.cgi/tech/1619667579/740
741: デフォルトの名無しさん (ワッチョイ 51ad-Z6Ah) [] 2021/08/12(木) 00:47:16.96 ID:xG1RPqdX0 スクレイピングは逮捕される危険があるって聞いたんだけどマジ? http://mevius.5ch.net/test/read.cgi/tech/1619667579/741
742: デフォルトの名無しさん (ワッチョイ a15f-b60h) [sage] 2021/08/12(木) 01:38:59.56 ID:wrwwe/e30 威力業務妨害の可能性はあるだろう http://mevius.5ch.net/test/read.cgi/tech/1619667579/742
743: デフォルトの名無しさん (ワッチョイ 3163-Z6Ah) [sage] 2021/08/12(木) 02:19:59.04 ID:ZBXe4sG30 被害を受けた事を証明しないとならないぞ http://mevius.5ch.net/test/read.cgi/tech/1619667579/743
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 259 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.015s