- 1 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 12:39:39.75 ID:P0iZ4CYt0.net]
- !extend::vvvvv:1000:512
!extend::vvvvv:1000:512 !extend::vvvvv:1000:512 ★スレ立て時 ↑ が3行以上になるようコピペ PHPに関する質問スレです 前スレ 【PHP】下らねぇ質問はここに書き込みやがれ 11 https://mevius.5ch.net/test/read.cgi/tech/1591334726/ 次スレは>>980以降 VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
- 577 名前:565-567 mailto:sage [2021/08/04(水) 16:12:58.96 ID:QhYrANy70.net]
- foreach とか for で、解決しました。
- 578 名前:デフォルトの名無しさん mailto:sage [2021/08/04(水) 16:36:34.91 ID:BE8GLseK0.net]
- Ruby なら、zip で複数の配列を、組み合わせられる
ary_1 = [ 1, 2, 3 ] ary_2 = [ 10, 20, 30 ] p tmp_ary = ary_1.zip( ary_2 ) #=> [[1, 10], [2, 20], [3, 30]] p results = tmp_ary.map{ |a, b| a + b } #=> [11, 22, 33]
- 579 名前:デフォルトの名無しさん mailto:sage [2021/08/04(水) 19:56:28.27 ID:JeeF5Fq/0.net]
- ゴミのような流れに草w
- 580 名前:デフォルトの名無しさん mailto:sage [2021/08/04(水) 20:48:03.21 ID:nRiwNpi/0.net]
- 相変わらずRubyガイジがPHPのスレを荒らしに来るw
- 581 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 00:28:51.82 ID:F8+XC2Dv0.net]
- PHPで接続を明示的に切る方法ってある?
本処理後、後処理としてDBの整理を行うのだが、 本処理と後処理が同程度の重さになるので、可能であればTCP接続を明示的に切りたい。 そうすればブラウザが確実に処理を始めるので、クライアント側の体感速度が上がることを期待している。 とりあえずfush()はした。出力バッファは使ってないので、ob_xxxxはやってない。 他に何かある?
- 582 名前:デフォルトの名無しさん [2021/08/05(木) 00:42:12.36 ID:N2Iw/qnR0.net]
- 意味不明
- 583 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 00:45:52.55 ID:JVVnzoun0.net]
- DBがクローズされているなら、PHPへのアクセスは関係ないんじゃ?
というか、設計がおかしくない?
- 584 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 01:01:42.06 ID:F8+XC2Dv0.net]
- ああすまん、書き方が悪かった。
こちらはPHPの初心者なので、そちらが想定しているような高度なことはしていない。 「TCP接続」をDBとの接続だと想定したのだと思うが、こちらはSQLiteだ。 クライアント(ブラウザ)からのアクセスで、SQLiteを操作してhttp出力を行う。 その後、ユーザーに対しての追加の出力はないので、ここでユーザーとのTCP接続(=http接続)を切りたい。 (確かGoかNodeだとこれが出来た) さらにその後、後処理を行うのだが、これが本処理と同じ程度に重い。 そしてexitで終了する。 ブラウザがexitにてTCP接続が切れてからパースを開始すると、体感2倍重くなってしまう。 flushでデータを全部送りきることは出来るが、 ブラウザはパースしないと全部来たことが分からないので、fulsh後にすぐ動くことは期待出来ない。 http接続が切れれば、それ以上のデータはないと確定するので、パースを確実に開始する。 だからこれを早めたい。 何か明示的に出来る方法ってある?
- 585 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 01:28:56.20 ID:qQkilq/Na.net]
- 404のっとファウンドなどのエラーページを自作しる
- 586 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 01:43:30.62 ID:JVVnzoun0.net]
- >>575
クライアントに応答を返すPHPは、応答を返したら、 後処理を行うPHPを起動し、自身はその終了を待たずexitする
- 587 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 03:48:16.16 ID:9Ap3lZssd.net]
- >>575
〜ここまで本処理 // 結果を待たずに次の行へ進む非同期コマンド exec('php 後処理.php > /dev/null &'); exit; もし後処理.phpに何かパラメーターを渡したい場合は exec('php 後処理.php パラ1 パラ2 パラ3 > /dev/null &'); 受け取る側の「後処理.php」の中で$argvに配列として格納されてる
- 588 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 06:36:47.33 ID:F8+XC2Dv0.net]
- >>577-578
なるほど、マルチプロセスだから根本的に考え方が違うんだな。ありがとう。 (だとすると、途中で明示的に接続を切れたのはNodeか?) マニュアルページが完全にstackoverflow並のtips集になっていることにも驚いた。 https://www.php.net/manual/ja/function.exec (やたらWindowsについての言及が多いが、意外にIIS上で動かされてるのか?) 見た目同期コマンドだが、出力を捨てれば確かにバックグランウンドで動くらしい。 そしていきなり環境依存コードを注入するというのはプログラマとしては頂けない。 ここら辺のノリがPHPの嫌いなところだ。 プログラマ向けに作ってないから、プログラマの常識でやってると変に嵌ったり、見落としたりする。 とはいえ、便利なのは事実だし、所詮スクリプトだと割り切るのも必要なのだろうけど。 とりあえずの問題は、開発環境がローカルホストのXAMPP(つまりwindows)で、 実行環境がレンタルサーバー(つまりLinux)ってところだが。 まあ、いずれにしてもありがとう。 この質問には確かにexecが正解のように見える。
- 589 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 06:50:31.72 ID:Sb1zsMiv0.net]
- >>579
ローカルコマンド叩くのに環境依存がない言語なんてあるわけ無いだろ 嫌いになるのは勝手だけど、アホな理由で嫌いになるなよ
- 590 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 07:24:02.52 ID:F8+XC2Dv0.net]
- >>580
だから発想が『プログラマとしては』おかしいんだよ。 少なくともNodeでもGoでも、環境依存無しのコードを記述出来る。 PHPでは出来ないのに、それでも良しとされてる。 そういうところが嫌いなんだよ。 覚えだが、上記の通り、明示的に切れたのは多分Nodeだ。 これはそもそもシングルスレッドだから、PHPのようにスクリプト終了=接続終了とは出来ないから当たり前だが。 そしてGoなら内部プロセス(goroutine)で、となる。もちろん環境とは依存しない。 PHPでも、session_write_closeと同様に、例えば write_close() というコマンドを作り、 そこで接続終了、それ以降の出力は全部捨てられます、とすれば、全く問題なく環境依存無しに出来る。 だからプログラマが主導して開発をしていればとっくにそうなってるはずなのに、 現実としてそうなってないから、色々無駄に戸惑う。だから好きにはなれない。 何だかんだで意外とNodeが蔓延っているのは、ここら辺の理由もある。 今回の使途ならJSのsetTimeoutでの実装の方がプログラムとしては断然美しくフィットする。 PHPで書くと、こんなコードにしかならないのかよ、と本当に愕然としてしまう。 腕が良くてもまともなコードを書けないんだよ。 それは上記の通り、PHPの開発の方向性が間違ってるからだ。 (とはいえ例の三項演算子についてはPHP8で修正されてるようだが) まあとにかくだ、プログラマとしては禁忌に近い「環境依存コードの注入」を普通にやらせるのは異常だし、 そんな状況が放置されてること自体も異常なんだよ。 だからプログラマがPHPを好きになることはないと思うよ。 PHPを好きな奴は、他言語をまともに使えない奴だけだと思う。
- 591 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 07:52:13.16 ID:Sb1zsMiv0.net]
- >>581
んなアホなことやりたいなら、phpでWebサーバ書けばいい メジャーなのはないけど、ふつうにGitHubにも転がってる そもそもフィトするもんが別にあるんだったらそっち使うのがエンジニアだぞ
- 592 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 08:23:37.05 ID:F8+XC2Dv0.net]
- >>582
だからその発想がおかしいんだよ。フィットしてるなんて到底言えない。 PHPは「できればいい」「動けばいい」で済ませる初心者〜中級者の感覚に合ってる。 だからその層には絶大な支持を受けるが、上級者には支持されない。 実際、PHPが「プログラミング言語として」素晴らしいなんて言ってる上級者は世界中でも誰一人もいないだろ。 connection_closeとかを用意すればいいだけなのに、 外部コマンドで自己ファイルをバックグラウンドプロセスとして起動する、なんて解は、頭がおかしいレベルだ。 自宅から歩いて3秒の場所に自動車で行く、に近い。 以前は「XAMPPなんて捨てろ。どうせ本番環境では動かないし、XAMPPで開発する意味はない」とか言ってる奴も居たが、 実際はこの辺の、それが環境依存コードだと理解出来ないレベルの初心者が勝手にやらかしまくってるだけだと思うよ。 そしてその意味も分からず、「XAMPPなんて捨てろ」だけ真に受けた初心者が、 例えば>>394みたいに、右も左も分からないのにリモート環境で開発する、みたいな、余計におかしな事をやらかす要因となってる。 そしてその根元は、PHP自体に落とし穴がありまくるからだ。 なんでそこで環境依存コードを注入するしか解がないの?というね。 が、まあ、parallelとかphtとかはここら辺の対策用なのかな? それにしても connection_close とかの単純な解の方が断然いいが。
- 593 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 08:42:00.19 ID:Sb1zsMiv0.net]
- >>583
使ってる方からするとWebサーバレベルのハンドリングを意識しなくて良いレベルで抽象化されていることが使いやすいし、不足箇所は最近だとフレームワークが補完してくれている ところで、支持してない上級者って何? サーバサイド言語として、phpが必要ないって言っている人がいる? 普通に用途が合えばphp選択するのがエンジニアだと思うけど?
- 594 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 08:50:37.83 ID:F8+XC2Dv0.net]
- というか、思うにこれはPHPだと「出力用」と「DB整理用」のphpを別にして、
「DB整理用」は別にcronで叩く、というのが一般解なのかな? これ自体も外部依存しているのでよい解ではないが、 ここまで蔓延っているPHPがこの辺の「普通にやる処理」を上手く記述出来ないのもあり得ない。 だとすると、現実的にはこの解なのだろう。 とはいえ、最安のレンタルサーバーだとcronは使えないし、 纏めて整理する時に命中したらその時だけ奇妙に遅くなるわけで、 出来ればマメに整理しておきたいのだが。
- 595 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 08:55:46.01 ID:yR6UN7xmd.net]
- >>583
〜ここまで本処理 //接続が切れてもスクリプトを実行させる ignore_user_abort(true); // メッセージ表示ページへ飛ばす header('Location: 本処理完了しました.html'); flush(); ここから後処理〜 環境依存使わないなら、こんなんでどうですか?
- 596 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 09:02:59.57 ID:e8dh7hYU0.net]
- >>583
ソースもないのに誰一人いないとか断言しちゃうから、だらだら長いだけで説得力のない空っぽな主張に見えちゃうんだぞ お前さんの主張を支持する上級者は誰一人いないw
- 597 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 09:24:21.23 ID:F8+XC2Dv0.net]
- >>584
> 不足箇所は最近だとフレームワークが補完してくれている では今回の connection_close なり write_close が出来るフレームワークを紹介してくれ。 無いだろ。 PHPで出来ないことは、PHPで記述したフレームワークでも出来るはずがないからだ。 (とJS同様に思ってるんだが、PHPの場合は例えばC++で記述されててPHPをDSLとして採用してるだけ、 みたいな実行環境形のフレームワークがあるのか? それがapacheだnginxだ、みたいな状況ではあるが) > サーバサイド言語として、phpが必要ないって言っている人がいる? 居ない。 しかし、PHPは「素晴らしいプログラミング言語だ」と言ってる奴も居ない。 それは君も知ってるとおり、色々グダグダ過ぎるからだ。今回も然り。 他言語だと楽に美しく実装出来る事が、出来ない。いちいちストレスだ。 (とはいえRust/Go推しの連中もどうかしてると思うが) > 普通に用途が合えばphp選択するのがエンジニアだと思うけど? それはその通り。だから俺も今回はPHPを選択している。 ただこれは「プログラミング言語として」ではなく、「実行環境含めて」だ。 今回は「無料レンタルサーバーでも動く」事も重要な為、今のところPHP以外に選択肢がない。 技術的には、サーバーレス+Nodeが一番フィットし、つまりherokuなのだが、 あれは無料だが海外鯖なので見送りにしてる。 サービス提供先は主に国内なのにいちいち海外鯖では無駄に遅くなるから。 そしてNodeの無料鯖が国内にも広まるのを待っていたのだが、これは今のところ全然なさそうだ。 とかやってるうちに他状況も整ってきたから、しょうがないからPHPで本格的に書くか、と諦めたわけだ。 あと、Nodeが数倍速いのも事実なのだが、どうせ鯖を借りる側からすれば、 値段当たりの処理能力なら実はVPS+Nodeもレンタルサーバー+PHPも大差ないのかも、という気もしてきてる。 この辺も諦めにつながってる。とはいえ、どのみちNodeでも書く羽目にはなりそうなのだが。 []- [ここ壊れてます]
- 599 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 09:27:08.25 ID:Sb1zsMiv0.net]
- >>588
お前のやりたいことは、Jobのキュー登録だろ 普通にあるわ なんで、connection_close なり write_close にこだわらないといけないんだ?
- 600 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 09:33:30.26 ID:F8+XC2Dv0.net]
- >>586
それは動かないだろ。 本処理で既にheaderとbodyは出力してる。 だからその後に header('Location')はアウトだ。 そして仮に動いたとしても、いちいちLocationで飛ばすってのも余計におかしい。 今現在の、結果的にブラウザが反応しないかも、その場合は通常より倍の時間がかかります、の方がまだマシだ。 ここらへんの、ちゃんとした解がないから余計なことで遠回りにやる、ってのもPHP界隈が嫌いな理由だ。 そういうのは初心者から中級者にクラスアップしてきた連中が俺ツエー的にやりたがるのだけど、 そういうのが多すぎて、PHP界隈はウザイ。 ただ逆に言えば、そういうことをしたいレベルの奴にとっては「俺カッケー」が出来るから、大受けする。 だからPHPを嫌いな人は多いが、廃れることもないだろうね。新規参入者はいくらでもいるから。 ある意味初心者ホイホイな面はある。 (ただしプログラマになる為の教育としてはかなり最悪だが)
- 601 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 09:37:34.01 ID:F8+XC2Dv0.net]
- >>589
あるならそれを教えてくれ。PHP.net上のurlだけでいいから。 jobで出てくるのは The GearmanClient class だけだが、さらっと見た限りなんか違うっぽいし。 というかね、PHP.netは本当に出来がいい。 あれだけは他言語も見習うべきだよ。
- 602 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 09:41:54.34 ID:Sb1zsMiv0.net]
- >>591
ぐぐればLaravelが出てくるだろ 素のphpでやりたきゃ https://medaka.5ch.net/test/read.cgi/php/1557652864/ なら別海が出てくるかもな
- 603 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 10:14:26.57 ID:F8+XC2Dv0.net]
- >>592
LaravelはPHPで書かれてるのだから、素のPHPで出来ないことが出来るはずがないだろ。 と思ってるのだが、この認識が間違ってるのか? まあ、導入する予定はないが、見てみるよ。 Webプログラミング板のスレはさらっと読んでみたが、ぶっちゃけここと大差ないような。 まあ、ここで一通り終了したら向こうでも聞いてみるかも。 なお、俺はプログラミングの初心者ではないが、PHPに関しては初心者だ。 一通りも知らないからPHP.netをいちいち引きながら書いてる。 それでいちいち、「他言語ならこうだけど、PHPならどう書くの?」になるわけ。
- 604 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 10:15:03.38 ID:jTl1oJKL0.net]
- 要は「非同期処理すればいいだけ」の話なのだが、ID:F8+XC2Dv0 はLinuxができない人?
だってさ、Linuxではコマンドの最後に「&」をつけるとバックグランドジョブになるのだから、 「言語を問わず」 "コマンド > /dev/null &" ってすればいいかな?って発想になるもん で、開発環境はDockerやVagrantで作ればいい PHPなんて良くも悪くも適当に書けば適当に動いてくれる言語なのだから、別にそれでいいじゃんw PHPがどういう思想から生まれた言語なのかは以下のインタービュー記事を読むといい https://gihyo.jp/news/interview/2010/rasmus 例えばNode.jsはシングルスレッド・シングルプロセスなのだから、入出力関連の処理を非同期で行ったりと設計思想からPHPとはまるで違う 1つの言語に固執せず適材適所で言語を使い分けるのがプログラマのなのだから、お前みたいな書き方をしてたら「だったらPHP以外の言語でやれば?」って思われるだけだw ちなみにPHP8.1以降では「Fibers」が実装されて、非同期処理を綺麗に書けるようにもなるんだけどね https://php.watch/versions/8.1/fibers PHPってここら辺がすごい柔軟 良いと思った仕様はどんどん取り入れる とにかく、グダグダグダグダとうるせぇんだよお前はw 自分の頭が固いだけなのに仕事ができると「
- 605 名前:勘違いしている自称上級プログラマ様(笑)」ってのが、現場で一番タチが悪い人間なのは間違いない
固くするのはチンコだけにしておこうな? [] - [ここ壊れてます]
- 606 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 10:21:45.83 ID:F8+XC2Dv0.net]
- >>592
あ、すまん。訂正。 laravelをさらっと見たが、dockerで導入してるところからして、俺 が想定していたJS的なフレームワークとは違い、これは実行環境形のフレームワークだな。 Job管理もあるのだろう。これはこれから読む。(とはいえ時間はかかるが)
- 607 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 10:24:19.91 ID:jTl1oJKL0.net]
- Rubyガイジといい、なんでガイジ(正確にはガイオヤジかw)ばかり湧くんだろうなぁ
夏だからかw
- 608 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 10:24:44.74 ID:F8+XC2Dv0.net]
- >>594
> 「言語を問わず」 "コマンド > /dev/null &" ってすればいいかな?って発想になるもん 理解してないのお前だ。俺は「言語を問わず」ではなく、「実行環境依存」なのを問題視してる。 まあお前レベルの奴がグダグダ言ってくるところがPHP界隈の嫌いなところだよマジで。
- 609 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 10:33:36.93 ID:5AKWeG2e0.net]
- このガイジLaravelスレでバカにされているガイジだろw
無能で仕事もしたことが無いレベルw
- 610 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 10:49:57.76 ID:jTl1oJKL0.net]
- >>597
だから「開発環境はDockerやVagrantで作ればいい」と書いた とにかく質問は解決しただろ? だったらPHPスレに居座る必要もない WPガイジ(こいつも相当頭が固いw)といい、俺はサッサと質問を解決しガイジにお帰り頂きたいだけだ 繰り返すが固いのはチンコだけにしとけw それといももうチンコも勃たない歳か?w
- 611 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 10:51:05.04 ID:F8+XC2Dv0.net]
- >>594
ラスマスの記事を読んだ。まあ想定どおり。 これはWeb上のオープンソース開発、つまりJSやRustも同じ事。 それらに比べてPHPはポンコツ過ぎ。 ちなみにfiberが欲しいわけではない。それも「歩いて3秒の場所に自転車で行く」に近い。 俺がやりたいのは、 fclose(/dev/stdout) だよ。 ただまあ、PHPがラスマスの言うとおり勝手に開発された機能の団子なのなら、 俺が勝手にCのコード書いて送れば採用されるのかな? 精々10行程度で実装出来るから送ってみてもいいんだけどさ。 あとそれ、「PHPは柔軟でスゴイ!」ってのも、 最近よくいる「俺が使ってる言語スゲー=俺スゲー」系の馬鹿だから止めとけ。 他言語で既に使えてる便利機能が今更採用されたところでスゲーと思えるのは明らかに信者でしかない。 第三者なら「ようやくかよ」でしかない。
- 612 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 10:57:59.07 ID:kPeKr//s0.net]
- ID:F8+XC2Dv0
質問に非同期って単語が出てない時点でお察しですな PHPへの噛みつき方もテンプレ過ぎて10年前にタイムスリップしたかと思ったよ 加齢臭のするオッサンだろうな
- 613 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 11:01:32.69 ID:F8+XC2Dv0.net]
- >>599
> だから「開発環境はDockerやVagrantで作ればいい」と書いた だからその解も本来は間違ってるんだよ。それは、 実行環境依存のコードしか書けないから、それぞれの実行環境を毎回用意してそこで開発しろ なわけだろ。それはJavaが目指した「Write once, run anywhere」でも全然無いだろ。 まあ実際はともかく、そもそもプログラミング言語はOS上のレイヤだけで動いているのなら、こうあるべきなんだよ。 そしてJSとか他言語はそうなってる。 PHPはその努力もしてないから駄目なんだよ。 その、「間違った解を正解として誇らしげにドヤる」のも、 典型的な「初心者から中級者にアップしたての馬鹿」がやることで、おまえはまさにそれだよ。 実際PHP界隈はそういうのが多数派で、それが問題視されることはないのだろうけど、それ自体が問題だよ。 それでは生産性がまるで上がらない。まあこれも理解出来ないのだろうけどさ。
- 614 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 11:04:37.37 ID:/R94gyIjd.net]
- >>590
あたしは575の提案をして、環境依存に難色を示されたので、代替提案をしただけなのに、おかしいだろ
- 615 名前:ニか、ダメだとか、あっちのほうがマシだとか、なんでそんなに上からなんですか笑
既にbody出力済みという前提も無かったし。 なるほど、でもできればリダイレクトはしたくないです。とだけ返事すればいいものを。 リダイレクトNGなら、更に別の提案もあるんだけど、萎えましたです。 [] - [ここ壊れてます]
- 616 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 11:05:12.89 ID:jTl1oJKL0.net]
- 俺、PHPがすげぇなんて一言も書いてないけどw
だからこそ「PHPなんて良くも悪くも適当に書けば適当に動いてくれる言語」だと書いたし ラスマスのインタービュー記事を紹介したのだが、このガイオヤジはドヤ顔で何を勘違いしてるのだろうw 例えば>>579で > 見た目同期コマンドだが、出力を捨てれば確かにバックグランウンドで動くらしい なーんて書いちゃってるから…ね 「&」ついてるのに、これのどこか同期コマンドなんだというツッコミw 質問は解決してるんだからもう用はないだろ? あとはチラシの裏にでも書いとけw
- 617 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 11:07:21.49 ID:jTl1oJKL0.net]
- >>601
このガイオヤジ、1人で勘違いして「信者」なんて言っちゃってるしね この手のヤバい奴は昔から居たから、PHP長くやってると慣れるよねw
- 618 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 11:09:50.52 ID:F8+XC2Dv0.net]
- >>601
非同期知ってる俺カッケー、か。 俺がやりたいのは非同期ではないんだよ。 ここら辺なんだよ、PHPerは、(JSerもだからWeb系全般だと思うが) 本人が実力を過大評価しすぎてていちいちウザイ。 今回は同期の fclose(/dev/stdout) がベストで、この単純なことが出来ないのは奇妙だと思って聞いてる。 他の言語/実行環境なら最初に用意される物であって、存在しないのはほぼありえない。 だから俺の勘違いか見落としだと思って聞いてるわけだ。 そしてこんな基本的な物がないのに非同期とかfiberとか、整備の順番を完全に間違ってるんだよ。 とはいえlaravelはどうやら俺の想定していたものとは違うので、そこにあることには期待している。
- 619 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 11:14:45.50 ID:F8+XC2Dv0.net]
- >>603
> 既にbody出力済みという前提も無かったし。 いやそれは普通に読めば分かるだろ。 むしろ、接続を切ろうとしてるのに、なんでその後に何か出せると思ったの? もしかして、本処理ではheaderだけしか出力してないと思った? それはレアケース(常に403とか?)であって、その仮定の方が無理あるだろ。
- 620 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 11:18:11.81 ID:kPeKr//s0.net]
- 簡単な非同期処理で解決するのになに言ってるのこの人
顔真っ赤すぎて全レスし始めたし今日1日で何レスするのか見ものだな PHPに親でも殺されたのかしら?
- 621 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 11:23:41.31 ID:xD0lMLd30.net]
- スレが伸びてると思ったら大物が登場してるな
面白いから魚拓取って他にも晒しとくわ
- 622 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 11:25:02.26 ID:F8+XC2Dv0.net]
- >>604
exec自体は同期コマンドなんだよ。 そしてその書き方自体も他言語が出来るプログラマにとっては気に入らない。 exec("cmd"); // 同期 exec("cmd > /dev/null &"); // PHPではこれで非同期、しかし書き方がイマイチ exec("cmd") > /dev/null; // これならまだマシ exec_async("cmd"); // 本来はこうあるべき まあここら辺もPHPが嫌われる理由だよ。他言語と揃ってないからいちいち文法で躓く。 だから他言語で慣らした連中に取っては無駄に参入障壁となっていて、 結果的にPHPはPHP育ちの初心者パラダイスになってる。 そりゃ居心地はいいんだろうけど、良いコードに遭遇出来ないのは上達の妨げにしかならないことに本人達も気づけない。 なんだかね。 実際お前ら、上の4つ、何が問題か分からないだろ。
- 623 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 11:26:44.63 ID:F8+XC2Dv0.net]
- >>608-609
> 簡単な非同期処理で解決するのになに言ってるのこの人 そう思えちゃうところがPHPerだよ。 まあ他のプログラミングが出来る連中にも聞いてみるんだね。
- 624 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 11:31:07.06 ID:xWv0yV5l0.net]
- 自分も、そこまでLinuxには詳しくないが、
今時、2〜3台もパソコンがあれば、社内Lanで繋ぎませんか?
- 625 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 11:34:43.32 ID:Lk6xwBBud.net]
- >>607
いや、あなたの常識なんて知らないわよ笑 普通にアクセスされただけで(またはgetパラメーター付きとか)処理が走って、本処理が終わるまで何も出力しないように書き直して工夫することだってできる可能性もあるわけだし。 (もうここは掘り下げなくていいです) てか、あなたが返事すべきはそこじゃないんだけど〜
- 626 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 11:43:44.22 ID:F8+XC2Dv0.net]
- >>612
開発環境の再構築に乗り気ではないのは、それは手段が目的化する恐れがあるから。 いろいろ分かってない状況(=今の俺)の場合は、環境構築こそが最大のネックで、 コード自体は書けば書けるものでしかないんだよ。 そして既にXAMPP+NetBeansでブレークポイントも当たるし、xhprofだっけ?も導入してるからそれでやってる。 (ただし環境を構築したのは4年前だから、君らからするとこれは古すぎかもしれないが) 新しい開発環境も、作ってしまえば結果的には楽勝なのかもしれないが、あっさり出来る自信がないんだ。 ただまあ、今回の話は、環境構築すればいいって物ではないのだけどね。 それって、例えば鯖を変えたり、あるいはGitHubで公開した後に「○○ですけど動きません」ってのに いちいち対応するのか?って話になるだろ。 そもそも環境依存のコードを書くべきではない ってのが大正義なのに、それを認めずあれこれ無駄に言ってくるからおかしな事になる。 お前らは何をすべきなのか本質を理解するべきだよ。
- 627 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 11:44:41.71 ID:kPeKr//s0.net]
- >>610
なるほど Linux系のOSでコマンドの後に&を付けるとバックで動くって事を知らなかったのね それを必死に誤魔化してるだけかw
- 628 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 11:46:58.60 ID:F8+XC2Dv0.net]
- >>613
> 本処理が終わるまで何も出力しないように書き直して工夫することだってできる可能性もあるわけだし 本処理ではbodyを出力する場合もあるし、403等でheaderだけで終わる場合もある。 本処理終了後は出力はない。だからそこで切りたい。 というわけだがこれでいいか? いずれにしてLocationでリダイレクトは度頭でやらないといけないから君の間違いだとは思うけど。 > てか、あなたが返事すべきはそこじゃないんだけど〜 どこよ?
- 629 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 11:48:24.23 ID:F8+XC2Dv0.net]
- >>615
そう思うのは、君の周りにはその程度の人しか居ないからだね。君も含めて。
- 630 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 11:49:26.67 ID:cuxOZbzu0.net]
- 朝の6:30から20レスww
- 631 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 12:00:42.44 ID:F8+XC2Dv0.net]
- >>613
616訂正。 > Locationでリダイレクトは度頭でやらないといけない と思ったが、もしかしてリダイレクトが間に合わなかったケースを意図的に利用して接続を切ろうって事か? それは解としてはだいぶ酷い。そういうコードを書くと数年後には意味不明で読めなくなる。 あとその場合は結局ブラウザ上でパースされた時に転送(=接続終了する)だけであって、 結局今の実装(ブラウザのパースタイミング次第)と同じでしかないし、改善しないと思うが。
- 632 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 12:07:25.00 ID:bqGeTZjz0.net]
- YouTube で有名な、雑食系エンジニア・KENTA のサロンの、
バックエンド初心者用コースのポートフォリオでは、 基本情報技術者資格、Ruby on Rails, Linux, Docker Compose, Node.js(Webpack, Babel), Bootstrap VSCode(Remote Container, WSL2 ならRemote WSL), Heroku, CircleCI、データベース 今までは、Docker Compose までが初心者用コースだったが、 最近は誰でも、Docker出来るから、 AWS Fargate, Terraform, React, Vue.js, TypeScript も だから、AWSのくろかわこうへいのサロンにも、入る必要がある これが済んだら、Ruby → Go で、時給1万円を目指す Node.js, Django は使われていない。 PHP は一生やらなくてよいと言ってる XAMPP, MAMP は、Linux じゃないから、やる意味がない。 WSL2 Linux とか、Heroku, AWSなどが良い システムを、言語・アプリレベルで実現しようとするから、ダメ 普通に、AWSのSQS(キュー)。 企業が欲しい人材は、AWS Solution Architect。 AWSでシステムを組める人 だから何百人も、AWSのくろかわこうへいのサロンに入って勉強してる
- 633 名前:デフォルトの名無しさん [2021/08/05(木) 12:14:58.24 ID:dqIKXfcM0.net]
- スクレイピングしたいんですけど何を勉強すればいいですか
不正アクセスに問われたりしないでしょうか? セキュリティ対策はどのようなことに注意すればよいでしょうか?
- 634 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 12:18:19.70 ID:Sb1zsMiv0.net]
- >>621
不正アクセス以外にも法的に問われるケースは存在します まず法的な問題の解決方法を学ぶと良いです まぁ、いずれにしても初心者のすることじゃないです
- 635 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 12:19:31.36 ID:jTl1oJKL0.net]
- まだやってて草w
で、この朝6時から20レス以上してるガイオヤジは、なんでPHPにこだわってるの? > マルチプロセスだから根本的に考え方が違うんだな > 質問には確かにexecが正解のように見える と自分で書きながらもPHPではどうしても納得いかないんでしょ? だったらPHP以外でやればいい 質問はこれで綺麗サッパリ解決したし、あとはチラシの裏へどうぞ ちなみに>>610については、例えばPythonでsubprocess.run()を使っても一緒の話なわけで、 「PHPだから」という話ではない それを非同期で実行したいならPythonならsubprocess.Popen()を使うし PHPならpopen()やproc_open()を使う
- 636 名前:620 mailto:sage [2021/08/05(木) 12:19:59.18 ID:bqGeTZjz0.net]
- PHP はレンタルサーバー用言語
Ruby on Rails は、プロ用フレームワーク。 WSL2 Linux, Heroku, AWS だから、PHPでは転職できないから、KENTA のサロンでは勧めない Node.js, Django も、Railsのシェアを崩せなかった。 募集がなく転職できないから、サロンでは勧めない 唯一の時給1万円コースの道筋は、Ruby → Go だけ 企業が欲しい人材は、AWS Solution Architect。 AWS でシステム構築運用できる人
- 637 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 12:28:51.37 ID:6TA++zayd.net]
- >>616
> 本処理ではbodyを出力する場合もあるし、403等でheaderだけで終わる場合もある。 だから、今の仕様はそうなのかも知れませんけど、その本処理はユーザーがアクセスしただけで処理が出来るなら本処理が終わるまで何も出力しないように書き換えればいいんだし、何かユーザーの入力に応じて処理するのなら、postで再アクセスさせて本処理が終わるまでなにも出力しないように書けないんですか? まあいずれにせよ、リダイレクトはそもそも論外のようなので不毛な話しではありますが。
- 638 名前:620 mailto:sage [2021/08/05(木) 12:28:59.36 ID:bqGeTZjz0.net]
- 食べチョクみたいな若い女の子が、Ruby on Rails で1人で始めたサイトでも、
求人募集は、AWS に詳しい人 システム構築運用できる人 コロナで取引量が30倍になった。 こういうのは言語・アプリで解決できる問題じゃない だから、むしろプログラマーよりも、LinuC などのLinux の資格保持者とか、 AWS Solution Architect が必要 今は、プログラミング言語よりも先に、 Linux コマンド・シェルスクリプト、Docker Compose, VSCode などが来る
- 639 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 12:30:20.75 ID:F8+XC2Dv0.net]
- >>623
まあforkしたいわけでもないんだけどね。それも事を大きくしすぎ。 Pythonを選択しないのは、俺が知らないからだね。 ただしレンタルサーバーでも使えるから、選択肢としてはありなんだろうけど、 言っちゃ悪いがPython使う理由なんてPHP以上にないでしょ。
- 640 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 12:35:56.18 ID:F8+XC2Dv0.net]
- >>625
一応聞くが、headerはbodyの後には出力出来ないってのを知ってるか? ちなみに本処理はgetであって、postではない。 そして304ならheaderのみ、200ならheader+bodyの、至極普通のget処理だ。 その200、つまりheader+bodyを送信後に再びLocation"header"を出すのは不可能だが、それは理解してるか?
- 641 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 12:37:33.28 ID:jTl1oJKL0.net]
- >>627
Python使えなんて一言も書いてないんだがw PHPのexec()の例は別の言語でも一緒って例を示しただけ ほんと頭が固いというか思い込みが激しいというか… 現場に居たら陰口叩かれまてるタイプだわお前はw
- 642 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 12:44:05.08 ID:F8+XC2Dv0.net]
- >>629
なら、PythonもPHPと同程度に文法が糞だ、というだけだろ。 実際、Pythonを「プログラミング言語として」褒めてる奴も少ないだろ。 みんなが使ってるから使う、というのが大半であって。
- 643 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 12:44:10.37 ID:jTl1oJKL0.net]
- ちなみに、ものすごく低レベルな方法だがこんなやり方もある
> SQLiteを操作してhttp出力 の中に <img src="重い処理をするPHP" width="1" height="1"> と書くだけw これならcronが使えない環境でも簡単にできる これで解決したら笑う
- 644 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 12:48:28.04 ID:F8+XC2Dv0.net]
- >>631
それは面白い発想だが、べき論で言えば反則だろうよ。 ただし、確かに技術的には解決する。
- 645 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 12:58:15.10 ID:F8+XC2Dv0.net]
- >>631
いや待て、今回はhtmlではなかったので駄目だった。 主にjsonとxmlだ。 まあしかし、発想自体は面白いよ。 ただ、なんか余計なアクセスが出てるように見えるからそれで実装することはないが。 今現在の実装だと、「運が悪く、ブラウザも怠慢していれば、倍かかる時があります」であって、 そんなに問題な実装でもないし、実際htmlを出すのは最初だけ(SPA)にしようとしてるので、それでは解決出来ない。
- 646 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 13:00:46.26 ID:jTl1oJKL0.net]
- >>632
こんなもんは、例えば何かしらのトラッキングや、メルマガで配信するHTMLメールで開封率を調べる時等で 当たり前に使われてる方法だけどねぇ… でも、元の質問は>>575だろ? これ>>631で解決するよな?w でもどうせ気に食わないんだろ? だったらPHPなんかやめてサッサと他の言語でやればいい なんでこのスレに居るわけ? サッサと出ていけよw
- 647 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 13:06:35.62 ID:jTl1oJKL0.net]
- >>633
また後付でなんか出てきたw >>575はとにかく、重たい後処理をするPHPを非同期で起動させればいいだけ それがexec()だろうがproc_open()だろうが<img>タグだろうが同じだ それが我慢ならんのなら、それ以上PHPにこだわる必要性は何もない まぁお前みたいな「面倒くさい人」はどこにでもいるよw もうええでしょ
- 648 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 13:08:11.92 ID:F8+XC2Dv0.net]
- >>634
ああ、Webビーコンと大昔に呼ばれてて、その結果htmlメールは悪だとされた奴だな。 今でも普通に使ってるのか?それはそれで問題だとは思うが。 少なくとも、俺は>>631で出来る状況であってもそれは使わない。今現在の実装の方がマシ。
- 649 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 13:08:51.75 ID:xWv0yV5l0.net]
- pythonというのは、
等加速度直線運動の3公式で、多くの問題を解決するようなもので、 これをできれば、スピードアップするらしいが。 高度なことをできる部品はある。
- 650 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 13:26:51.61 ID:F8+XC2Dv0.net]
- >>635
ちなみに > 重たい後処理をするPHPを非同期で起動させればいいだけ これが間違い。 単に、出力を閉じる connection_close みたいな関数を呼んでユーザーとの接続を終了させ、 そのあとそのプロセスが引き続き後処理をすれば良いだけだし、これが一番軽い実装だ。 そして他言語だとこれは出来るのに、何故この基本的な操作ができないのだ?という話。 非同期=軽いとか思ってる馬鹿も特にJSには多いんだが、非同期が軽いわけではないんだよ。 むしろキューイングしてやる分だけ重くなる。
- 651 名前:620 mailto:sage [2021/08/05(木) 13:41:39.90 ID:bqGeTZjz0.net]
- >>628
Ruby on Rails でも、view を、render できるのは1回限り。 double rendering 禁止 >>633 Railsなら、 format.html format.json と書いておけば、例えば、 books/1 なら、HTML、 books/1.json なら、JSON を返す テンプレートファイルも、show.html.erb, show.json.erb と、ERB で2つ書いておく。 show.json.jbuilder と、jbuilder を使えば、もっと簡単に、オブジェクトをJSONにできる Railsには、SPA 用のAPI モードもある。 HTMLを返さない。JSONでやりとりする フレームワークを使わず自作してると、10年やっても低品質のまま。 Railsを1年やっただけの人にも勝てない
- 652 名前:デフォルトの名無しさん [2021/08/05(木) 13:44:24.19 ID:/9S9EoKc0.net]
- robots.txtを守らないと逮捕されるって本当ですか?
- 653 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 13:47:42.25 ID:jTl1oJKL0.net]
- >>638
だからさー…あのなぁ…俺は「>>575みたい低レベルな話なら」それで解決するだろ?と言ってる しかもレンタルサーバでやるような低レベルなもんだろ? ここは質問スレだ 俺は「その低レベルな質問に対して方法を提示した」だけ 言語仕様が我慢できないなら他の言語を使え 何度も同じ事を言わせるな つかお前、なんかの病気じゃね?w
- 654 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 13:51:30.80 ID:jTl1oJKL0.net]
- >>640
どこから聞いたんだよそんな話w 例えば640が、robots.txtの記述内容を無視してスクレイピングをしたとする そのせいでサーバに負荷をかけまくりサーバをダウンさせれば、罪に問われる可能性はあるわな もしくは著作権で守られているコンテンツを無視して転載しても、罪に問われる可能性はあるわな でもそれは、robots.txtを守らないと逮捕されるって話とは別の話だよな? 理解できるか?
- 655 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 13:59:25.27 ID:QPICGq8w0.net]
- ID:F8+XC2Dv0
ご大層なゴタクを並べてるのにサーバーはレンタルサーバーなのですね
- 656 名前:デフォルトの名無しさん [2021/08/05(木) 14:04:31.11 ID:xD0lMLd30.net]
- >>643
www
- 657 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 14:06:09.47 ID:IpTlZujB0.net]
- >>628
> 一応聞くが、headerはbodyの後には出力出来ないってのを知ってるか? 知ってますよ笑 だから、本処理終わるまで何も出力しないように書き換えればと言ってるんです 本処理完了の次の行でheader locationを出力し、リダイレクト先のページにパラメーター渡して表示すればいいです <?php sleep(3); // ←本処理の代わり(ここまで何も出力しない) ignore_user_abort(true); header('location: hoge.php?a=パラ1'); flush(); sleep(10); // ←後処理の代わり exit; ?> 不可能かどうか、コピペで実行してみて笑
- 658 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 14:22:57.10 ID:F8+XC2Dv0.net]
- >>592
イマイチ全体像が掴めないのだけど、確かにジョブキューイングは出来るようだ。 ただ見たところLaravelのソースコードはphpのようだし、RedisだSQSだとか言ってるから、これは、 DBに対するPDOのように、キューイング機能のあるRedis/SQS等に対しての共通ラッパを提供したもの ということでいいのか? (そもそもRedis/SQS等は初耳なので大幅に勘違いしてるかもだが) なお、確かに今回の俺の用途ならこれで対応可能だ。 話が大げさになりすぎてる感はあるが、 元々Laravelを知ってて、かつ、使える環境なら、この選択もありだろう。 いちいちキューを自前で作るよりもキューサーバー、なんてのは あらゆる物をマイクロサービスに分割するWeb系的な発想ではあるが、まあ確かに面白い。 実際、Javaとか無駄にモノリシックになってて開発人月がでかくなりすぎてる感はあるし。 ただこれ、インストールが必要みたいだし、最安(=無料)のレンサバじゃ動かないよな? インストールが必要/有料での契約なら俺的にはNodeの方がマシで、PHPを選ぶ理由がない。 既に言ったが、PHPで書くのは無料サーバーでも動かす為で、 プログラミングについて何も知らない人がGitHubからクローンしたらもう動く!みたいな 超イージーデプロイじゃないとわざわざPHPで書く意味はない。俺なら書き慣れたJSを選ぶ。 (勿論君らがPHPを選ぶのは自由として) 結果的に、エンタープライズな連中はLaravel等を使うから問題なく、こんな基本的な問題も放置されてるってところか。 巣のPHPを使う連中は基本的に初心者であり、細かいことは気にしてないのだろうし。
- 659 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 14:31:39.19 ID:F8+XC2Dv0.net]
- >>641
> しかもレンタルサーバでやるような低レベルなもんだろ? これはその通りだ。 お前らのやってるエンタープライズなコードでは許されないような方法でも、許されるのだろうさ。 とはいえ、それをやるかどうかはまた別だろ。 プログラミング初心者が四苦八苦して数百行のやっと動くコードを書いてる状況ではないんだよ。 他言語ではバリバリに書ける奴がPHPだとデタラメやっていい、ってことにもならないだろ。 それは矜持の問題だ。 勿論、お前がデタラメやるのもお前の自由だが、俺的には恥ずかしくてそんなコードは公開出来ないよ。
- 660 名前:620 mailto:sage [2021/08/05(木) 14:32:09.85 ID:bqGeTZjz0.net]
- Ruby on Rails では、redirect_to でリダイレクトする(302・発見)。
lesson/step1 にアクセスすれば、lesson/step2 へ飛ばされる その時、flash に情報を入れておけば、リダイレクト後に使える。 これで、abc と表示される def step1 flash[ :notice ] = "abc" redirect_to action: "step2" end def step2 render plain: flash[ :notice ] end
- 661 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 14:36:28.61 ID:F8+XC2Dv0.net]
- >>645
なるほど、その方法でも出来るのは理解した。 が、それだと2往復するし、やっぱりかなり無駄だろ。 結局お前らは「動けばいい」でしかないからそういうことになる。 それだったら、現実装の方がまだマシだよ。 ただまあ、エンタープライズならLaravel等でキューサーバー、ってのは分かった。 確かにこれで玄人は問題ないのだろうさ。
- 662 名前:620 mailto:sage [2021/08/05(木) 14:45:20.58 ID:bqGeTZjz0.net]
- 例えば、Ruby on Rails では、
食べチョクみたいな若い女の子が、1人で始める場合は、Heroku, Bootstrap。 食べチョクは、AWS だけど AWSなら、くろかわこうへいのサロンにも入る必要がある KENTA, 2021/3 女性エンジニア&個人開発者のだむはさんにインタビュー www.youtube.com/watch?v=ieljaqRC98A Heroku, S3, 決済はStripe, Docker こういうのでビジネスを初めて、会社の時価総額1億円ぐらいへもっていく。 元々、cloud 9, Heroku でクラウド開発してるし、絶対にLinux XAMPP, MAMP など、Linux以外を使うことはない。 環境が異なると、テストにならない
- 663 名前:デフォルトの名無しさん [2021/08/05(木) 14:50:29.16 ID:IpTlZujB0.net]
- >>649
理解いただけてなによりです。 ただ2往復の意味が良く分かりません。 1.本処理+後処理.phpにGet付でアクセス 2.本処理終わったらbody用パラメーターつけてhoge.phpに飛ばす 3.ユーザーにはhoge.phpが表示される 4.サーバー側は後処理が継続される 進行は分岐するけど常に1方向だし、どこにも戻ったりもしてないと思いますが。
- 664 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 14:55:48.88 ID:F8+XC2Dv0.net]
- >>651
リダイレクトは別サイトにもいけるだろ。 だから基本的にはブラウザとは2往復するはず。 結果的に同一サイトにリダイレクトされる場合でも、おそらくブラウザはもう一度接続し直してくるはず。 この辺は試した方が早いかもしれんが。
- 665 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 15:07:47.04 ID:cuxOZbzu0.net]
- 無料レンタルサーバを使う上級者様が朝の6時半から32レスという渾身のギャグ
- 666 名前:デフォルトの名無しさん [2021/08/05(木) 15:08:57.20 ID:IpTlZujB0.net]
- >>652
なるほど、再接続という意味ならそうですね。 では別の案ですが、 1.本処理中に吐き出すHTMLの先頭に、文字列なりHTMLタグなりの目印を検出するJavascriptを仕込む。 2.本処理が終わったタイミングで目印になる文字なりHTMLタグなりを出力(Flush)する。 3.Javascriptで対象の目印を検出したら window.stop() で、ブラウザ側から切断させる。
- 667 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 15:17:03.80 ID:F8+XC2Dv0.net]
- >>651
ああだからな、元々は「処理を速く見せる為」なんだよ。それで、 ・接続を明示的に切れれば、往復1回+本処理 ・接続を明示的に切れない現状では、往復1回+本処理+後処理 ・651方式で転送した場合、往復2回+本処理 というようにユーザーには見えることになる。 結果、ネットワークが速くて後処理時間より短いならこれもありかもしれないけど、ネットワークも地味に重い。 この辺のさじ加減は君らの方が詳しいだろうけど、 現状の後処理は、整理するデータがある場合は400ms程度、無ければ10-40ms程度だ。 整理するデータが存在するのは1/20程度の確率だと想定している。 となると、単純には後処理は平均して29.5-58ms程度の重さになる。 だから、ネットワークがこれ以上重いと赤字になってしまうんだよ。 (XAMPPでの時間計測なんて意味あるかボケ!というのはさておき)
- 668 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 15:19:28.77 ID:qHbol2On0.net]
- ID:F8+XC2Dv0は開発環境がXAMPPで無料レンタルサーバを使う初心者なのだから身の丈にあったことをすればいいのにキチガイ過ぎる
- 669 名前:デフォルトの名無しさん [2021/08/05(木) 15:26:17.55 ID:tyzHpayb0.net]
- >>642
ID:bqGeTZjz0の人にrubyスレで教わりました
- 670 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 15:31:25.87 ID:F8+XC2Dv0.net]
- >>654
それは君がブラウザの動きを分かってない。 flushで出力されるのはPHP側のバッファだけで、apache/nginxのバッファはflushされない。 だからapache等でgzしている場合には最後まで出力されるかどうかはかなり怪しい。(というか、多分されない) そしてブラウザはある程度溜まったら勝手に出来るところまでパースする。 そしてパースが完了しないとJS側からはデータにアクセスしようがない。(送信途中のデータは読めない) よってその方法では出来ない。 接続を明示的に切れれば、apache等は溜まってるデータをflushして接続を切りに行き、 それを受けてブラウザはすぐにパースを開始する。 だから、接続さえ明示的に切れれば、すぐさまパースされるんだよ。その後PHPが動き続けてても関係なく。 これをやろうとしている。 まあ、Laravelでキューサーバー使えというのはその通り。エンタープライズならこれなのだろう。 多分君はDOM(HTMLページ内)のJSが同期的に動くのを見て勘違いしてる。 ajaxで取得したデータは、途中では読めないよ。
- 671 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 15:31:32.98 ID:jTl1oJKL0.net]
- >>657
そいつは有名なキチガイだから相手にしたら駄目よ 今このスレでも ID:bqGeTZjz0 で支離滅裂な事を書いてるけど頭の病気だから
- 672 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 15:38:06.77 ID:F8+XC2Dv0.net]
- >>656
だから最初から言ってるが、 俺はPHPの初心者ではあるけどプログラミングは初心者ではないんだよ。 だから、PHPといえども恥ずかしいコードは書けない。
- 673 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 15:54:01.25 ID:qHbol2On0.net]
- >>660
いやいやご冗談がきつい どこからどう見ても初心者ですよ? 初心者じゃないならXAMPPや無料レンタルサーバに固執しなくていいですし PHPに固執しなくてもいいですからね
- 674 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 15:57:19.11 ID:F8+XC2Dv0.net]
- ちなみにお前ら、PHPにコントリビュートしてみたい奴はいるか?
居るなら手伝うが。 Web開発ってのは、「こんなポンコツを使わされるくらいなら俺が直してやるからソースコードよこせ!」の繰り返しではある。 今の俺がそれだ。 write_closeは基本的な関数であり、存在しないのがおかしい。 実装は、exitで行っているであろうクローズ処理を前倒しすればいいだけ。具体的には、 1. exitのソースコードを「接続を閉じる部分」と「それ以外」に分け、 2. 「接続を閉じる部分」が write_close() で呼ばれるようにし、閉じたかどうかをフラグで保存、 3. exit ではそのフラグを見て、閉じてない場合は呼んでから、「それ以外」を呼んで終了とする。 とまあ、要は exit のソースコードを2分割すれば済む話ではある。 dieとか、他に止める方法もあるから既に分割されてる可能性もある。 この場合は、単純に関数エントリを一つ追加するだけで終わる。 ソースコードは既にダウンロードしてmain.cとか見てるが、肝心のexit/dieのコードがどこにあるのか分からないんだな
- 675 名前:B
知っている奴がいればよろしく。 なお、俺一人だとコントリビュートはしない。 俺はPHPの初心者であり仕様を知らなさすぎて、俺一人だとバグを埋め込んでしまうから。 [] - [ここ壊れてます]
- 676 名前:620 mailto:sage [2021/08/05(木) 15:59:24.92 ID:bqGeTZjz0.net]
- レンタルサーバーの速さを言っても、仕方ない。
他人と共有しているから、他人がリソースを使うと、待たされる 安いのだから、低品質も仕方ない。 そういうものと割り切るしかない KENTA は完全に割り切ってる。 PHP は一生使わないでよいと言ってる 金にならないから。 低品質で安い仕事
- 677 名前:デフォルトの名無しさん [2021/08/05(木) 16:09:21.48 ID:IpTlZujB0.net]
- >>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> ----------
|

|