【PHP】下らねぇ質問はここに書き込みやがれ 12at TECH
【PHP】下らねぇ質問はここに書き込みやがれ 12 - 暇つぶし2ch552:デフォルトの名無しさん
21/07/30 20:09:34.89 r27NHL07r.net
<php echo '<img src="data:image/jpeg;base64,' . base64_encode(file_get_contents('wp-content/uploads/2021/07/7mgpH3K.jpg')) . '">';?>
だと同じように表示されました。教えていただきありがとうございます。
第三者がアップロードするかどうかでセキュリティを考えるんですね、コメントしかりページナビしかりマイページ機能しかり。

553:蟻人間
21/07/30 20:34:44.87 GDRR8sIEd.net
WordPressはWPの作法に従わないと動かないことがあるよ。裏でCSSやら.htaccessやらJavaScriptやらが動いていて、実際の処理は隠蔽されてるから。

554:デフォルトの名無しさん
21/07/30 21:45:55.50 r27NHL07r.net
>>544
ありがとうございます

555:デフォルトの名無しさん
21/07/30 21:52:20.21 r27NHL07r.net
> 「不正な画像をアップロード」できるのも内部犯に限られることになる
XSS を利用して不正アップロードする手口が徳丸さんのとこで紹介されていました。
URLリンク(www.youtube.com)
WordPress なら外部から似たような攻撃でアップロードされる可能性があるので、プログラムレベルでも適切にアップロード対策をしておくべきだと思います。
このような回答が追加されていたのですが外部からも勝手にアップロードされる危険性はあるのでしょうか?

556:デフォルトの名無しさん
21/07/30 23:36:35.91 1geFHcN20.net
ありますよ。実際に自分はアップローダーからマルウェア仕込まれて
VPSサーバーを総入れ替え舌経験があります。
WordPress宛の攻撃は毎日あるし、できる対策は全てしたほうが良いでしょうね

557:デフォルトの名無しさん
21/07/31 01:52:34.20 v7hkUDSma.net
この動画を見たところ検索フォーム?のXSS対策コードの記載漏れから不正コードを入力されて管理画面に侵入されたみたいですが
要するに第3者が侵入出来るような検索フォームやお問い合わせフォームやコメントフォームやマイページの対策を怠らない事で防げるということですよね?
自分のみがアップロードする場合は該当しないのでしょうか?

558:蟻人間
21/07/31 03:18:27.24 ZYWMYotdd.net
脆弱性は様々な枯れてない技術から発見されている。あのWPだってあちこちからゼロデイ攻撃が見つかっている。WP のテーマやプラグインにも脆弱性がある。度重なる更新や脆弱性に対応できないならWPを使うのをやめた方がいい。
パスワードセキュリティにも危険性がある。パスワードはセキュリティの基本であり、5文字程度の単純なパスワードはパスワードクラッカーで短い時間で突破されてしまう。攻撃者は性能の高い計算能力を持ち、世界中のどこからでも攻撃できる。パスワードは単純なのはダメ、短いのはダメ、憶測できるのはダメ。
あるいはソーシャルハッキングや電波漏れなどの未知のハッキング手法からも攻撃が成立することがある。
こうすれば絶対にハッキングされないという方法はないが、危険性が高いものを避けることは可能。

559:デフォルトの名無しさん
21/07/31 10:31:19.92 fqpnvpaJ0.net
>>548
WordPressの場合、自分は管理画面のURL変えてIP制限入れてますよ。
自分のみがアップロードなら、自分しか使えないIPアドレス制限した方がいいし、
ホスト名とか環境変数とか、そこまでチェックした方が確実だと思います。
ま、一番良いのはWordPress使わないことですけどね

560:デフォルトの名無しさん
21/07/31 10:46:33.80 z/SvtBD30.net
>>550
動画見ろよ
IPの制限無関係に投稿する仕組みの紹介だぞ

561:デフォルトの名無しさん
21/07/31 11:04:47.11 JJoM48pY0.net
わざとセキュリティホール作って、ほらね?危ないでしょ?ってアホかよw
まずWPに同じセキュリティホールあるかの議論が先だろw
無いけどw

562:デフォルトの名無しさん
21/07/31 11:34:42.98 z/SvtBD30.net
>>552
ユーザ投稿のプレビュー箇所とアップロード機能を持つ管理画面って,WordPressで頻繁に見るんだが?
それぞれに問題箇所があるとwebshell置かれて終了!の可能性を指摘する動画だけど、理解できてる?

563:デフォルトの名無しさん
21/07/31 11:37:50.11 BUpo1U8M0.net
プログラムで例えば4×4のマップがあった場合、4という数字は私は格子点数と呼んでいますが、皆さんは何と呼びますか?

564:デフォルトの名無しさん
21/07/31 18:56:05.10 JJoM48pY0.net
>>553
一連の流れでセキュリティの指摘をしたわけではなく、ただ動画を宣伝したかっただけなんですね!
理解できましたw

565:デフォルトの名無しさん
21/08/02 10:21:18.11 JwyUb7gK0.net
>>536
Oh...
それ、単に「例」として出しただけなのでw
例えば(あくまでも例え話ねw)
ID | 画像のパス
1 | hage/abc.jpg
2 | fuge/345.jpg
みたいにデータ管理してたとして、
id=1 を渡せば hage/abc.jpg を取得できるようにすれば結果的に
output_image.php?id=1
とすれば、「hage/abc.jpg」を表示できるでしょ?ってこと
それを、
output_image.php?path=hage/abc.jpg
みたいに直接パスを渡すような設計にしてると、あなたのレベルでは危ないよってだけ

566:デフォルトの名無しさん
21/08/02 10:45:18.84 JwyUb7gK0.net
>>546
> 外部からも勝手にアップロードされる危険性はあるのでしょうか?
そりゃ「可能性」はあるよw
人間が作るものにバグ(脆弱性)がないものなんてない
で、>>546にはその動画の意味は理解できる?
理解できてないよね
理解できてないのに、何をどうやって「対策」するの?w
その動画に指摘されている脆弱性は、「プラグインのXSS脆弱性を悪用した攻撃」なので、
対策といったところで、あなたのレベルでできるのは「WP本体やプラグインは常に最新版を使う」事ぐらいだよ?
※その動画の攻撃例は管理画面にIP制限なんかしても無駄ですw
結局、「画像は546本人しかアップロードしない」んだよね?
だったら、「アップロードした画像には問題ない」事を前提に話を進めようよ
546は、「HTMLやPHPの基礎がないままWordPressから始めた」のがいけない
基礎がガタガタなの
そんな人が細かい事を気にしたところで、話は前に進まんよ

567:デフォルトの名無しさん
21/08/02 10:50:01.92 JwyUb7gK0.net
>>552
>>555
546の動画の例は、WordPressでECサイトを構築する際の「超定番」プラグインEC-CUBEのXSS脆弱性を悪用したもので、
「実際に悪用事例も出た」ものだけどね…
そんな事すら理解できないなら、横からしゃしゃり出てこずに黙っておけw

568:デフォルトの名無しさん
21/08/02 10:59:23.86 JwyUb7gK0.net
>>546
>>557に補足しとくと、WordPress本体・プラグイン・テーマファイルの致命的な脆弱性を悪用され、
WordPress権限から自由にファイルのアップロード・編集が可能になった場合、
サーバー内の画像をPHP経由で出力する際のセキュリティ(笑)なんか、いくら考えても無駄ですw
その点については>>518さんが指摘している通り
例えるなら、「ヘルメットを被っていたら快速電車にダイブしても大丈夫だよね?」って聞いてるみたいもんw
だから、自分しかアップロードしない画像ファイルは安全であるという前提で、話を進めようよ…いや頼むからそうしてくれw
てかRSSの時もそうだけど、たったこんだけの事にどんだけ時間かけてるのよw

569:デフォルトの名無しさん
21/08/02 11:36:09.87 CDsmjzwf0.net
いいから構うやつもまとめてWPスレ行って帰ってくるなよ

570:デフォルトの名無しさん
21/08/02 11:55:16.38 jY8DN4600.net
自演ですし

571:デフォルトの名無しさん
21/08/02 14:06:37.03 LY8fDkppd.net
最初から自分しかアップロードしない前提なのにどんだけレスしたら気が済むの、このセキュリティガイジ

572:デフォルトの名無しさん
21/08/02 14:39:06.84 nA0UljqA0.net
セキュリティガイジは別人だろ
ガイジなのは質問者、それに対しセキュリティ全波の話を持ち出してる人、煽るしか能のない人

573:蟻人間
21/08/02 14:51:48.05 LkFRX9kvd.net
>>554
普通にサイズでよくね?

574:デフォルトの名無しさん
21/08/04 15:31:27.53 QhYrANy70.net
Array(a1,b1,c1,d1,...)とArray(a2,b2,c2,d2,...)を足し算して、
2次元配列にする時って、どうすればいいでしょうか?
$x[0]がArray(a1,b1,c1,d1,...)の時、
$x[1] = $s;としたら、
$xがArray(a2,b2,c2,d2,...)で上書きされてしまいました。

575:デフォルトの名無しさん
21/08/04 15:33:03.22 QhYrANy70.net
$s=Array(a2,b2,c2,d2,...); です。

576:デフォルトの名無しさん
21/08/04 15:44:34.90 QhYrANy70.net
foreach とか for とか使うしかないでしょうか?

577:565-567
21/08/04 16:12:58.96 QhYrANy70.net
foreach とか for で、解決しました。

578:デフォルトの名無しさん
21/08/04 16:36:34.91 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:デフォルトの名無しさん
21/08/04 19:56:28.27 JeeF5Fq/0.net
ゴミのような流れに草w

580:デフォルトの名無しさん
21/08/04 20:48:03.21 nRiwNpi/0.net
相変わらずRubyガイジがPHPのスレを荒らしに来るw

581:デフォルトの名無しさん
21/08/05 00:28:51.82 F8+XC2Dv0.net
PHPで接続を明示的に切る方法ってある?
本処理後、後処理としてDBの整理を行うのだが、
本処理と後処理が同程度の重さになるので、可能であればTCP接続を明示的に切りたい。
そうすればブラウザが確実に処理を始めるので、クライアント側の体感速度が上がることを期待している。
とりあえずfush()はした。出力バッファは使ってないので、ob_xxxxはやってない。
他に何かある?

582:デフォルトの名無しさん
21/08/05 00:42:12.36 N2Iw/qnR0.net
意味不明

583:デフォルトの名無しさん
21/08/05 00:45:52.55 JVVnzoun0.net
DBがクローズされているなら、PHPへのアクセスは関係ないんじゃ?
というか、設計がおかしくない?

584:デフォルトの名無しさん
21/08/05 01:01:42.06 F8+XC2Dv0.net
ああすまん、書き方が悪かった。
こちらはPHPの初心者なので、そちらが想定しているような高度なことはしていない。
「TCP接続」をDBとの接続だと想定したのだと思うが、こちらはSQLiteだ。
クライアント(ブラウザ)からのアクセスで、SQLiteを操作してhttp出力を行う。
その後、ユーザーに対しての追加の出力はないので、ここでユーザーとのTCP接続(=http接続)を切りたい。
(確かGoかNodeだとこれが出来た)
さらにその後、後処理を行うのだが、これが本処理と同じ程度に重い。
そしてexitで終了する。
ブラウザがexitにてTCP接続が切れてからパースを開始すると、体感2倍重くなってしまう。
flushでデータを全部送りきることは出来るが、
ブラウザはパースしないと全部来たことが分からないので、fulsh後にすぐ動くことは期待出来ない。
http接続が切れれば、それ以上のデータはないと確定するので、パースを確実に開始する。
だからこれを早めたい。
何か明示的に出来る方法ってある?

585:デフォルトの名無しさん
21/08/05 01:28:56.20 qQkilq/Na.net
404のっとファウンドなどのエラーページを自作しる

586:デフォルトの名無しさん
21/08/05 01:43:30.62 JVVnzoun0.net
>>575
クライアントに応答を返すPHPは、応答を返したら、
後処理を行うPHPを起動し、自身はその終了を待たずexitする

587:デフォルトの名無しさん
21/08/05 03:48:16.16 9Ap3lZssd.net
>>575
~ここまで本処理
// 結果を待たずに次の行へ進む非同期コマンド
exec('php 後処理.php > /dev/null &');
exit;
もし後処理.phpに何かパラメーターを渡したい場合は
exec('php 後処理.php パラ1 パラ2 パラ3 > /dev/null &');
受け取る側の「後処理.php」の中で$argvに配列として格納されてる

588:デフォルトの名無しさん
21/08/05 06:36:47.33 F8+XC2Dv0.net
>>577-578
なるほど、マルチプロセスだから根本的に考え方が違うんだな。ありがとう。
(だとすると、途中で明示的に接続を切れたのはNodeか?)
マニュアルページが完全にstackoverflow並のtips集になっていることにも驚いた。
URLリンク(www.php.net)
(やたらWindowsについての言及が多いが、意外にIIS上で動かされてるのか?)
見た目同期コマンドだが、出力を捨てれば確かにバックグランウンドで動くらしい。
そしていきなり環境依存コードを注入するというのはプログラマとしては頂けない。
ここら辺のノリがPHPの嫌いなところだ。
プログラマ向けに作ってないから、プログラマの常識でやってると変に嵌ったり、見落としたりする。
とはいえ、便利なのは事実だし、所詮スクリプトだと割り切るのも必要なのだろうけど。
とりあえずの問題は、開発環境がローカルホストのXAMPP(つまりwindows)で、
実行環境がレンタルサーバー(つまりLinux)ってところだが。
まあ、いずれにしてもありがとう。
この質問には確かにexecが正解のように見える。

589:デフォルトの名無しさん
21/08/05 06:50:31.72 Sb1zsMiv0.net
>>579
ローカルコマンド叩くのに環境依存がない言語なんてあるわけ無いだろ
嫌いになるのは勝手だけど、アホな理由で嫌いになるなよ

590:デフォルトの名無しさん
21/08/05 07:24:02.52 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:デフォルトの名無しさん
21/08/05 07:52:13.16 Sb1zsMiv0.net
>>581
んなアホなことやりたいなら、phpでWebサーバ書けばいい
メジャーなのはないけど、ふつうにGitHubにも転がってる
そもそもフィトするもんが別にあるんだったらそっち使うのがエンジニアだぞ

592:デフォルトの名無しさん
21/08/05 08:23:37.05 F8+XC2Dv0.net
>>582
だからその発想がおかしいんだよ。フィットしてるなんて到底言えない。
PHPは「できればいい」「動けばいい」で済ませる初心者~中級者の感覚に合ってる。
だからその層には絶大な支持を受けるが、上級者には支持されない。
実際、PHPが「プログラミング言語として」素晴らしいなんて言ってる上級者は世界中でも誰一人もいないだろ。
connection_closeとかを用意すればいいだけなのに、
外部コマンドで自己ファイルをバックグラウンドプロセスとして起動する、なんて解は、頭がおかしいレベルだ。
自宅から歩いて3秒の場所に自動車で行く、に近い。
以前は「XAMPPなんて捨てろ。どうせ本番環境では動かないし、XAMPPで開発する意味はない」とか言ってる奴も居たが、
実際はこの辺の、それが環境依存コードだと理解出来ないレベルの初心者が勝手にやらかしまくってるだけだと思うよ。
そしてその意味も分からず、「XAMPPなんて捨てろ」だけ真に受けた初心者が、
例えば>>394みたいに、右も左も分からないのにリモート環境で開発する、みたいな、余計におかしな事をやらかす要因となってる。
そしてその根元は、PHP自体に落とし穴がありまくるからだ。
なんでそこで環境依存コードを注入するしか解がないの?というね。
が、まあ、parallelとかphtとかはここら辺の対策用なのかな?
それにしても connection_close とかの単純な解の方が断然いいが。

593:デフォルトの名無しさん
21/08/05 08:42:00.19 Sb1zsMiv0.net
>>583
使ってる方からするとWebサーバレベルのハンドリングを意識しなくて良いレベルで抽象化されていることが使いやすいし、不足箇所は最近だとフレームワークが補完してくれている
ところで、支持してない上級者って何?
サーバサイド言語として、phpが必要ないって言っている人がいる?
普通に用途が合えばphp選択するのがエンジニアだと思うけど?

594:デフォルトの名無しさん
21/08/05 08:50:37.83 F8+XC2Dv0.net
というか、思うにこれはPHPだと「出力用」と「DB整理用」のphpを別にして、
「DB整理用」は別にcronで叩く、というのが一般解なのかな?
これ自体も外部依存しているのでよい解ではないが、
ここまで蔓延っているPHPがこの辺の「普通にやる処理」を上手く記述出来ないのもあり得ない。
だとすると、現実的にはこの解なのだろう。
とはいえ、最安のレンタルサーバーだとcronは使えないし、
纏めて整理する時に命中したらその時だけ奇妙に遅くなるわけで、
出来ればマメに整理しておきたいのだが。

595:デフォルトの名無しさん
21/08/05 08:55:46.01 yR6UN7xmd.net
>>583
~ここまで本処理
//接続が切れてもスクリプトを実行させる
ignore_user_abort(true);
// メッセージ表示ページへ飛ばす
header('Location: 本処理完了しました.html');
flush();
ここから後処理~
環境依存使わないなら、こんなんでどうですか?

596:デフォルトの名無しさん
21/08/05 09:02:59.57 e8dh7hYU0.net
>>583
ソースもないのに誰一人いないとか断言しちゃうから、だらだら長いだけで説得力のない空っぽな主張に見えちゃうんだぞ
お前さんの主張を支持する上級者は誰一人いないw

597:デフォルトの名無しさん
21/08/05 09:24:21.23 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:デフォルトの名無しさん
21/08/05 09:27:08.25 Sb1zsMiv0.net
>>588
お前のやりたいことは、Jobのキュー登録だろ
普通にあるわ
なんで、connection_close なり write_close にこだわらないといけないんだ?

600:デフォルトの名無しさん
21/08/05 09:33:30.26 F8+XC2Dv0.net
>>586
それは動かないだろ。
本処理で既にheaderとbodyは出力してる。
だからその後に header('Location')はアウトだ。
そして仮に動いたとしても、いちいちLocationで飛ばすってのも余計におかしい。
今現在の、結果的にブラウザが反応しないかも、その場合は通常より倍の時間がかかります、の方がまだマシだ。
ここらへんの、ちゃんとした解がないから余計なことで遠回りにやる、ってのもPHP界隈が嫌いな理由だ。
そういうのは初心者から中級者にクラスアップしてきた連中が俺ツエー的にやりたがるのだけど、
そういうのが多すぎて、PHP界隈はウザイ。
ただ逆に言えば、そういうことをしたいレベルの奴にとっては「俺カッケー」が出来るから、大受けする。
だからPHPを嫌いな人は多いが、廃れることもないだろうね。新規参入者はいくらでもいるから。
ある意味初心者ホイホイな面はある。
(ただしプログラマになる為の教育としてはかなり最悪だが)

601:デフォルトの名無しさん
21/08/05 09:37:34.01 F8+XC2Dv0.net
>>589
あるならそれを教えてくれ。PHP.net上のurlだけでいいから。
jobで出てくるのは The GearmanClient class だけだが、さらっと見た限りなんか違うっぽいし。
というかね、PHP.netは本当に出来がいい。
あれだけは他言語も見習うべきだよ。

602:デフォルトの名無しさん
21/08/05 09:41:54.34 Sb1zsMiv0.net
>>591
ぐぐればLaravelが出てくるだろ
素のphpでやりたきゃ
スレリンク(php板)
なら別海が出てくるかもな

603:デフォルトの名無しさん
21/08/05 10:14:26.57 F8+XC2Dv0.net
>>592
LaravelはPHPで書かれてるのだから、素のPHPで出来ないことが出来るはずがないだろ。
と思ってるのだが、この認識が間違ってるのか?
まあ、導入する予定はないが、見てみるよ。

Webプログラミング板のスレはさらっと読んでみたが、ぶっちゃけここと大差ないような。
まあ、ここで一通り終了したら向こうでも聞いてみるかも。
なお、俺はプログラミングの初心者ではないが、PHPに関しては初心者だ。
一通りも知らないからPHP.netをいちいち引きながら書いてる。
それでいちいち、「他言語ならこうだけど、PHPならどう書くの?」になるわけ。

604:デフォルトの名無しさん
21/08/05 10:15:03.38 jTl1oJKL0.net
要は「非同期処理すればいいだけ」の話なのだが、ID:F8+XC2Dv0 はLinuxができない人?
だってさ、Linuxではコマンドの最後に「&」をつけるとバックグランドジョブになるのだから、
「言語を問わず」 "コマンド > /dev/null &" ってすればいいかな?って発想になるもん
で、開発環境はDockerやVagrantで作ればいい
PHPなんて良くも悪くも適当に書けば適当に動いてくれる言語なのだから、別にそれでいいじゃんw
PHPがどういう思想から生まれた言語なのかは以下のインタービュー記事を読むといい
URLリンク(gihyo.jp)
例えばNode.jsはシングルスレッド・シングルプロセスなのだから、入出力関連の処理を非同期で行ったりと設計思想からPHPとはまるで違う
1つの言語に固執せず適材適所で言語を使い分けるのがプログラマのなのだから、お前みたいな書き方をしてたら「だったらPHP以外の言語でやれば?」って思われるだけだw
ちなみにPHP8.1以降では「Fibers」が実装されて、非同期処理を綺麗に書けるようにもなるんだけどね
URLリンク(php.watch)
PHPってここら辺がすごい柔軟 良いと思った仕様はどんどん取り入れる
とにかく、グダグダグダグダとうるせぇんだよお前はw
自分の頭が固いだけなのに仕事ができると「


605:勘違いしている自称上級プログラマ様(笑)」ってのが、現場で一番タチが悪い人間なのは間違いない 固くするのはチンコだけにしておこうな?



606:デフォルトの名無しさん
21/08/05 10:21:45.83 F8+XC2Dv0.net
>>592
あ、すまん。訂正。
laravelをさらっと見たが、dockerで導入してるところからして、俺
が想定していたJS的なフレームワークとは違い、これは実行環境形のフレームワークだな。
Job管理もあるのだろう。これはこれから読む。(とはいえ時間はかかるが)

607:デフォルトの名無しさん
21/08/05 10:24:19.91 jTl1oJKL0.net
Rubyガイジといい、なんでガイジ(正確にはガイオヤジかw)ばかり湧くんだろうなぁ
夏だからかw

608:デフォルトの名無しさん
21/08/05 10:24:44.74 F8+XC2Dv0.net
>>594
> 「言語を問わず」 "コマンド > /dev/null &" ってすればいいかな?って発想になるもん
理解してないのお前だ。俺は「言語を問わず」ではなく、「実行環境依存」なのを問題視してる。
まあお前レベルの奴がグダグダ言ってくるところがPHP界隈の嫌いなところだよマジで。

609:デフォルトの名無しさん
21/08/05 10:33:36.93 5AKWeG2e0.net
このガイジLaravelスレでバカにされているガイジだろw
無能で仕事もしたことが無いレベルw

610:デフォルトの名無しさん
21/08/05 10:49:57.76 jTl1oJKL0.net
>>597
だから「開発環境はDockerやVagrantで作ればいい」と書いた
とにかく質問は解決しただろ?
だったらPHPスレに居座る必要もない
WPガイジ(こいつも相当頭が固いw)といい、俺はサッサと質問を解決しガイジにお帰り頂きたいだけだ
繰り返すが固いのはチンコだけにしとけw それといももうチンコも勃たない歳か?w

611:デフォルトの名無しさん
21/08/05 10:51:05.04 F8+XC2Dv0.net
>>594
ラスマスの記事を読んだ。まあ想定どおり。
これはWeb上のオープンソース開発、つまりJSやRustも同じ事。
それらに比べてPHPはポンコツ過ぎ。
ちなみにfiberが欲しいわけではない。それも「歩いて3秒の場所に自転車で行く」に近い。
俺がやりたいのは、 fclose(/dev/stdout) だよ。
ただまあ、PHPがラスマスの言うとおり勝手に開発された機能の団子なのなら、
俺が勝手にCのコード書いて送れば採用されるのかな?
精々10行程度で実装出来るから送ってみてもいいんだけどさ。
あとそれ、「PHPは柔軟でスゴイ!」ってのも、
最近よくいる「俺が使ってる言語スゲー=俺スゲー」系の馬鹿だから止めとけ。
他言語で既に使えてる便利機能が今更採用されたところでスゲーと思えるのは明らかに信者でしかない。
第三者なら「ようやくかよ」でしかない。

612:デフォルトの名無しさん
21/08/05 10:57:59.07 kPeKr//s0.net
ID:F8+XC2Dv0
質問に非同期って単語が出てない時点でお察しですな
PHPへの噛みつき方もテンプレ過ぎて10年前にタイムスリップしたかと思ったよ
加齢臭のするオッサンだろうな

613:デフォルトの名無しさん
21/08/05 11:01:32.69 F8+XC2Dv0.net
>>599
> だから「開発環境はDockerやVagrantで作ればいい」と書いた
だからその解も本来は間違ってるんだよ。それは、
実行環境依存のコードしか書けないから、それぞれの実行環境を毎回用意してそこで開発しろ
なわけだろ。それはJavaが目指した「Write once, run anywhere」でも全然無いだろ。
まあ実際はともかく、そもそもプログラミング言語はOS上のレイヤだけで動いているのなら、こうあるべきなんだよ。
そしてJSとか他言語はそうなってる。
PHPはその努力もしてないから駄目なんだよ。
その、「間違った解を正解として誇らしげにドヤる」のも、
典型的な「初心者から中級者にアップしたての馬鹿」がやることで、おまえはまさにそれだよ。
実際PHP界隈はそういうのが多数派で、それが問題視されることはないのだろうけど、それ自体が問題だよ。
それでは生産性がまるで上がらない。まあこれも理解出来ないのだろうけどさ。

614:デフォルトの名無しさん
21/08/05 11:04:37.37 /R94gyIjd.net
>>590
あたしは575の提案をして、環境依存に難色を示されたので、代替提案をしただけなのに、おかしいだろ�


615:ニか、ダメだとか、あっちのほうがマシだとか、なんでそんなに上からなんですか笑 既にbody出力済みという前提も無かったし。 なるほど、でもできればリダイレクトはしたくないです。とだけ返事すればいいものを。 リダイレクトNGなら、更に別の提案もあるんだけど、萎えましたです。



616:デフォルトの名無しさん
21/08/05 11:05:12.89 jTl1oJKL0.net
俺、PHPがすげぇなんて一言も書いてないけどw
だからこそ「PHPなんて良くも悪くも適当に書けば適当に動いてくれる言語」だと書いたし
ラスマスのインタービュー記事を紹介したのだが、このガイオヤジはドヤ顔で何を勘違いしてるのだろうw
例えば>>579
> 見た目同期コマンドだが、出力を捨てれば確かにバックグランウンドで動くらしい
なーんて書いちゃってるから…ね
「&」ついてるのに、これのどこか同期コマンドなんだというツッコミw
質問は解決してるんだからもう用はないだろ?
あとはチラシの裏にでも書いとけw

617:デフォルトの名無しさん
21/08/05 11:07:21.49 jTl1oJKL0.net
>>601
このガイオヤジ、1人で勘違いして「信者」なんて言っちゃってるしね
この手のヤバい奴は昔から居たから、PHP長くやってると慣れるよねw

618:デフォルトの名無しさん
21/08/05 11:09:50.52 F8+XC2Dv0.net
>>601
非同期知ってる俺カッケー、か。
俺がやりたいのは非同期ではないんだよ。
ここら辺なんだよ、PHPerは、(JSerもだからWeb系全般だと思うが)
本人が実力を過大評価しすぎてていちいちウザイ。
今回は同期の fclose(/dev/stdout) がベストで、この単純なことが出来ないのは奇妙だと思って聞いてる。
他の言語/実行環境なら最初に用意される物であって、存在しないのはほぼありえない。
だから俺の勘違いか見落としだと思って聞いてるわけだ。
そしてこんな基本的な物がないのに非同期とかfiberとか、整備の順番を完全に間違ってるんだよ。

とはいえlaravelはどうやら俺の想定していたものとは違うので、そこにあることには期待している。

619:デフォルトの名無しさん
21/08/05 11:14:45.50 F8+XC2Dv0.net
>>603
> 既にbody出力済みという前提も無かったし。
いやそれは普通に読めば分かるだろ。
むしろ、接続を切ろうとしてるのに、なんでその後に何か出せると思ったの?
もしかして、本処理ではheaderだけしか出力してないと思った?
それはレアケース(常に403とか?)であって、その仮定の方が無理あるだろ。

620:デフォルトの名無しさん
21/08/05 11:18:11.81 kPeKr//s0.net
簡単な非同期処理で解決するのになに言ってるのこの人
顔真っ赤すぎて全レスし始めたし今日1日で何レスするのか見ものだな
PHPに親でも殺されたのかしら?

621:デフォルトの名無しさん
21/08/05 11:23:41.31 xD0lMLd30.net
スレが伸びてると思ったら大物が登場してるな
面白いから魚拓取って他にも晒しとくわ

622:デフォルトの名無しさん
21/08/05 11:25:02.26 F8+XC2Dv0.net
>>604
exec自体は同期コマンドなんだよ。
そしてその書き方自体も他言語が出来るプログラマにとっては気に入らない。
exec("cmd"); // 同期
exec("cmd > /dev/null &"); // PHPではこれで非同期、しかし書き方がイマイチ
exec("cmd") > /dev/null; // これならまだマシ
exec_async("cmd"); // 本来はこうあるべき
まあここら辺もPHPが嫌われる理由だよ。他言語と揃ってないからいちいち文法で躓く。
だから他言語で慣らした連中に取っては無駄に参入障壁となっていて、
結果的にPHPはPHP育ちの初心者パラダイスになってる。
そりゃ居心地はいいんだろうけど、良いコードに遭遇出来ないのは上達の妨げにしかならないことに本人達も気づけない。
なんだかね。
実際お前ら、上の4つ、何が問題か分からないだろ。

623:デフォルトの名無しさん
21/08/05 11:26:44.63 F8+XC2Dv0.net
>>608-609
> 簡単な非同期処理で解決するのになに言ってるのこの人
そう思えちゃうところがPHPerだよ。
まあ他のプログラミングが出来る連中にも聞いてみるんだね。

624:デフォルトの名無しさん
21/08/05 11:31:07.06 xWv0yV5l0.net
自分も、そこまでLinuxには詳しくないが、
今時、2〜3台もパソコンがあれば、社内Lanで繋ぎませんか?

625:デフォルトの名無しさん
21/08/05 11:34:43.32 Lk6xwBBud.net
>>607
いや、あなたの常識なんて知らないわよ笑
普通にアクセスされただけで(またはgetパラメーター付きとか)処理が走って、本処理が終わるまで何も出力しないように書き直して工夫することだってできる可能性もあるわけだし。
(もうここは掘り下げなくていいです)
てか、あなたが返事すべきはそこじゃないんだけど~

626:デフォルトの名無しさん
21/08/05 11:43:44.22 F8+XC2Dv0.net
>>612
開発環境の再構築に乗り気ではないのは、それは手段が目的化する恐れがあるから。
いろいろ分かってない状況(=今の俺)の場合は、環境構築こそが最大のネックで、
コード自体は書けば書けるものでしかないんだよ。
そして既にXAMPP+NetBeansでブレークポイントも当たるし、xhprofだっけ?も導入してるからそれでやってる。
(ただし環境を構築したのは4年前だから、君らからするとこれは古すぎかもしれないが)
新しい開発環境も、作ってしまえば結果的には楽勝なのかもしれないが、あっさり出来る自信がないんだ。

ただまあ、今回の話は、環境構築すればいいって物ではないのだけどね。
それって、例えば鯖を変えたり、あるいはGitHubで公開した後に「○○ですけど動きません」ってのに
いちいち対応するのか?って話になるだろ。
そもそも環境依存のコードを書くべきではない
ってのが大正義なのに、それを認めずあれこれ無駄に言ってくるからおかしな事になる。
お前らは何をすべきなのか本質を理解するべきだよ。

627:デフォルトの名無しさん
21/08/05 11:44:41.71 kPeKr//s0.net
>>610
なるほど
Linux系のOSでコマンドの後に&を付けるとバックで動くって事を知らなかったのね
それを必死に誤魔化してるだけかw

628:デフォルトの名無しさん
21/08/05 11:46:58.60 F8+XC2Dv0.net
>>613
> 本処理が終わるまで何も出力しないように書き直して工夫することだってできる可能性もあるわけだし
本処理ではbodyを出力する場合もあるし、403等でheaderだけで終わる場合もある。
本処理終了後は出力はない。だからそこで切りたい。
というわけだがこれでいいか?
いずれにしてLocationでリダイレクトは度頭でやらないといけないから君の間違いだとは思うけど。
> てか、あなたが返事すべきはそこじゃないんだけど~
どこよ?

629:デフォルトの名無しさん
21/08/05 11:48:24.23 F8+XC2Dv0.net
>>615
そう思うのは、君の周りにはその程度の人しか居ないからだね。君も含めて。

630:デフォルトの名無しさん
21/08/05 11:49:26.67 cuxOZbzu0.net
朝の6:30から20レスww

631:デフォルトの名無しさん
21/08/05 12:00:42.44 F8+XC2Dv0.net
>>613
616訂正。
> Locationでリダイレクトは度頭でやらないといけない
と思ったが、もしかしてリダイレクトが間に合わなかったケースを意図的に利用して接続を切ろうって事か?
それは解としてはだいぶ酷い。そういうコードを書くと数年後には意味不明で読めなくなる。
あとその場合は結局ブラウザ上でパースされた時に転送(=接続終了する)だけであって、
結局今の実装(ブラウザのパースタイミング次第)と同じでしかないし、改善しないと思うが。

632:デフォルトの名無しさん
21/08/05 12:07:25.00 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:デフォルトの名無しさん
21/08/05 12:14:58.24 dqIKXfcM0.net
スクレイピングしたいんですけど何を勉強すればいいですか
不正アクセスに問われたりしないでしょうか?
セキュリティ対策はどのようなことに注意すればよいでしょうか?

634:デフォルトの名無しさん
21/08/05 12:18:19.70 Sb1zsMiv0.net
>>621
不正アクセス以外にも法的に問われるケースは存在します
まず法的な問題の解決方法を学ぶと良いです
まぁ、いずれにしても初心者のすることじゃないです

635:デフォルトの名無しさん
21/08/05 12:19:31.36 jTl1oJKL0.net
まだやってて草w
で、この朝6時から20レス以上してるガイオヤジは、なんでPHPにこだわってるの?
> マルチプロセスだから根本的に考え方が違うんだな
> 質問には確かにexecが正解のように見える
と自分で書きながらもPHPではどうしても納得いかないんでしょ?
だったらPHP以外でやればいい
質問はこれで綺麗サッパリ解決したし、あとはチラシの裏へどうぞ
ちなみに>>610については、例えばPythonでsubprocess.run()を使っても一緒の話なわけで、
「PHPだから」という話ではない
それを非同期で実行したいならPythonならsubprocess.Popen()を使うし
PHPならpopen()やproc_open()を使う

636:620
21/08/05 12:19:59.18 bqGeTZjz0.net
PHP はレンタルサーバー用言語
Ruby on Rails は、プロ用フレームワーク。
WSL2 Linux, Heroku, AWS
だから、PHPでは転職できないから、KENTA のサロンでは勧めない
Node.js, Django も、Railsのシェアを崩せなかった。
募集がなく転職できないから、サロンでは勧めない
唯一の時給1万円コースの道筋は、Ruby → Go だけ
企業が欲しい人材は、AWS Solution Architect。
AWS でシステム構築運用できる人

637:デフォルトの名無しさん
21/08/05 12:28:51.37 6TA++zayd.net
>>616
> 本処理ではbodyを出力する場合もあるし、403等でheaderだけで終わる場合もある。
だから、今の仕様はそうなのかも知れませんけど、その本処理はユーザーがアクセスしただけで処理が出来るなら本処理が終わるまで何も出力しないように書き換えればいいんだし、何かユーザーの入力に応じて処理するのなら、postで再アクセスさせて本処理が終わるまでなにも出力しないように書けないんですか?
まあいずれにせよ、リダイレクトはそもそも論外のようなので不毛な話しではありますが。

638:620
21/08/05 12:28:59.36 bqGeTZjz0.net
食べチョクみたいな若い女の子が、Ruby on Rails で1人で始めたサイトでも、
求人募集は、AWS に詳しい人
システム構築運用できる人
コロナで取引量が30倍になった。
こういうのは言語・アプリで解決できる問題じゃない
だから、むしろプログラマーよりも、LinuC などのLinux の資格保持者とか、
AWS Solution Architect が必要
今は、プログラミング言語よりも先に、
Linux コマンド・シェルスクリプト、Docker Compose, VSCode などが来る

639:デフォルトの名無しさん
21/08/05 12:30:20.75 F8+XC2Dv0.net
>>623
まあforkしたいわけでもないんだけどね。それも事を大きくしすぎ。
Pythonを選択しないのは、俺が知らないからだね。
ただしレンタルサーバーでも使えるから、選択肢としてはありなんだろうけど、
言っちゃ悪いがPython使う理由なんてPHP以上にないでしょ。

640:デフォルトの名無しさん
21/08/05 12:35:56.18 F8+XC2Dv0.net
>>625
一応聞くが、headerはbodyの後には出力出来ないってのを知ってるか?
ちなみに本処理はgetであって、postではない。
そして304ならheaderのみ、200ならheader+bodyの、至極普通のget処理だ。
その200、つまりheader+bodyを送信後に再びLocation"header"を出すのは不可能だが、それは理解してるか?

641:デフォルトの名無しさん
21/08/05 12:37:33.28 jTl1oJKL0.net
>>627
Python使えなんて一言も書いてないんだがw
PHPのexec()の例は別の言語でも一緒って例を示しただけ
ほんと頭が固いというか思い込みが激しいというか…
現場に居たら陰口叩かれまてるタイプだわお前はw

642:デフォルトの名無しさん
21/08/05 12:44:05.08 F8+XC2Dv0.net
>>629
なら、PythonもPHPと同程度に文法が糞だ、というだけだろ。
実際、Pythonを「プログラミング言語として」褒めてる奴も少ないだろ。
みんなが使ってるから使う、というのが大半であって。

643:デフォルトの名無しさん
21/08/05 12:44:10.37 jTl1oJKL0.net
ちなみに、ものすごく低レベルな方法だがこんなやり方もある
> SQLiteを操作してhttp出力
の中に
<img src="重い処理をするPHP" width="1" height="1">
と書くだけw
これならcronが使えない環境でも簡単にできる
これで解決したら笑う

644:デフォルトの名無しさん
21/08/05 12:48:28.04 F8+XC2Dv0.net
>>631
それは面白い発想だが、べき論で言えば反則だろうよ。
ただし、確かに技術的には解決する。

645:デフォルトの名無しさん
21/08/05 12:58:15.10 F8+XC2Dv0.net
>>631
いや待て、今回はhtmlではなかったので駄目だった。
主にjsonとxmlだ。
まあしかし、発想自体は面白いよ。
ただ、なんか余計なアクセスが出てるように見えるからそれで実装することはないが。
今現在の実装だと、「運が悪く、ブラウザも怠慢していれば、倍かかる時があります」であって、
そんなに問題な実装でもないし、実際htmlを出すのは最初だけ(SPA)にしようとしてるので、それでは解決出来ない。

646:デフォルトの名無しさん
21/08/05 13:00:46.26 jTl1oJKL0.net
>>632
こんなもんは、例えば何かしらのトラッキングや、メルマガで配信するHTMLメールで開封率を調べる時等で
当たり前に使われてる方法だけどねぇ…
でも、元の質問は>>575だろ?
これ>>631で解決するよな?w
でもどうせ気に食わないんだろ? だったらPHPなんかやめてサッサと他の言語でやればいい
なんでこのスレに居るわけ? サッサと出ていけよw

647:デフォルトの名無しさん
21/08/05 13:06:35.62 jTl1oJKL0.net
>>633
また後付でなんか出てきたw
>>575はとにかく、重たい後処理をするPHPを非同期で起動させればいいだけ
それがexec()だろうがproc_open()だろうが<img>タグだろうが同じだ
それが我慢ならんのなら、それ以上PHPにこだわる必要性は何もない
まぁお前みたいな「面倒くさい人」はどこにでもいるよw
もうええでしょ

648:デフォルトの名無しさん
21/08/05 13:08:11.92 F8+XC2Dv0.net
>>634
ああ、Webビーコンと大昔に呼ばれてて、その結果htmlメールは悪だとされた奴だな。
今でも普通に使ってるのか?それはそれで問題だとは思うが。
少なくとも、俺は>>631で出来る状況であってもそれは使わない。今現在の実装の方がマシ。

649:デフォルトの名無しさん
21/08/05 13:08:51.75 xWv0yV5l0.net
pythonというのは、
等加速度直線運動の3公式で、多くの問題を解決するようなもので、
これをできれば、スピードアップするらしいが。
高度なことをできる部品はある。

650:デフォルトの名無しさん
21/08/05 13:26:51.61 F8+XC2Dv0.net
>>635
ちなみに
> 重たい後処理をするPHPを非同期で起動させればいいだけ
これが間違い。
単に、出力を閉じる connection_close みたいな関数を呼んでユーザーとの接続を終了させ、
そのあとそのプロセスが引き続き後処理をすれば良いだけだし、これが一番軽い実装だ。
そして他言語だとこれは出来るのに、何故この基本的な操作ができないのだ?という話。
非同期=軽いとか思ってる馬鹿も特にJSには多いんだが、非同期が軽いわけではないんだよ。
むしろキューイングしてやる分だけ重くなる。

651:620
21/08/05 13:41:39.90 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:デフォルトの名無しさん
21/08/05 13:44:24.19 /9S9EoKc0.net
robots.txtを守らないと逮捕されるって本当ですか?

653:デフォルトの名無しさん
21/08/05 13:47:42.25 jTl1oJKL0.net
>>638
だからさー…あのなぁ…俺は「>>575みたい低レベルな話なら」それで解決するだろ?と言ってる
しかもレンタルサーバでやるような低レベルなもんだろ?
ここは質問スレだ
俺は「その低レベルな質問に対して方法を提示した」だけ
言語仕様が我慢できないなら他の言語を使え 何度も同じ事を言わせるな
つかお前、なんかの病気じゃね?w

654:デフォルトの名無しさん
21/08/05 13:51:30.80 jTl1oJKL0.net
>>640
どこから聞いたんだよそんな話w
例えば640が、robots.txtの記述内容を無視してスクレイピングをしたとする
そのせいでサーバに負荷をかけまくりサーバをダウンさせれば、罪に問われる可能性はあるわな
もしくは著作権で守られているコンテンツを無視して転載しても、罪に問われる可能性はあるわな
でもそれは、robots.txtを守らないと逮捕されるって話とは別の話だよな?
理解できるか?

655:デフォルトの名無しさん
21/08/05 13:59:25.27 QPICGq8w0.net
ID:F8+XC2Dv0
ご大層なゴタクを並べてるのにサーバーはレンタルサーバーなのですね

656:デフォルトの名無しさん
21/08/05 14:04:31.11 xD0lMLd30.net
>>643
www

657:デフォルトの名無しさん
21/08/05 14:06:09.47 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:デフォルトの名無しさん
21/08/05 14:22:57.10 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:デフォルトの名無しさん
21/08/05 14:31:39.19 F8+XC2Dv0.net
>>641
> しかもレンタルサーバでやるような低レベルなもんだろ?
これはその通りだ。
お前らのやってるエンタープライズなコードでは許されないような方法でも、許されるのだろうさ。
とはいえ、それをやるかどうかはまた別だろ。
プログラミング初心者が四苦八苦して数百行のやっと動くコードを書いてる状況ではないんだよ。
他言語ではバリバリに書ける奴がPHPだとデタラメやっていい、ってことにもならないだろ。
それは矜持の問題だ。
勿論、お前がデタラメやるのもお前の自由だが、俺的には恥ずかしくてそんなコードは公開出来ないよ。

660:620
21/08/05 14:32:09.85 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:デフォルトの名無しさん
21/08/05 14:36:28.61 F8+XC2Dv0.net
>>645
なるほど、その方法でも出来るのは理解した。
が、それだと2往復するし、やっぱりかなり無駄だろ。
結局お前らは「動けばいい」でしかないからそういうことになる。
それだったら、現実装の方がまだマシだよ。

ただまあ、エンタープライズならLaravel等でキューサーバー、ってのは分かった。
確かにこれで玄人は問題ないのだろうさ。

662:620
21/08/05 14:45:20.58 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:デフォルトの名無しさん
21/08/05 14:50:29.16 IpTlZujB0.net
>>649
理解いただけてなによりです。
ただ2往復の意味が良く分かりません。
1.本処理+後処理.phpにGet付でアクセス
2.本処理終わったらbody用パラメーターつけてhoge.phpに飛ばす
3.ユーザーにはhoge.phpが表示される
4.サーバー側は後処理が継続される
進行は分岐するけど常に1方向だし、どこにも戻ったりもしてないと思いますが。

664:デフォルトの名無しさん
21/08/05 14:55:48.88 F8+XC2Dv0.net
>>651
リダイレクトは別サイトにもいけるだろ。
だから基本的にはブラウザとは2往復するはず。
結果的に同一サイトにリダイレクトされる場合でも、おそらくブラウザはもう一度接続し直してくるはず。
この辺は試した方が早いかもしれんが。

665:デフォルトの名無しさん
21/08/05 15:07:47.04 cuxOZbzu0.net
無料レンタルサーバを使う上級者様が朝の6時半から32レスという渾身のギャグ

666:デフォルトの名無しさん
21/08/05 15:08:57.20 IpTlZujB0.net
>>652
なるほど、再接続という意味ならそうですね。
では別の案ですが、
1.本処理中に吐き出すHTMLの先頭に、文字列なりHTMLタグなりの目印を検出するJavascriptを仕込む。
2.本処理が終わったタイミングで目印になる文字なりHTMLタグなりを出力(Flush)する。
3.Javascriptで対象の目印を検出したら window.stop() で、ブラウザ側から切断させる。

667:デフォルトの名無しさん
21/08/05 15:17:03.80 F8+XC2Dv0.net
>>651
ああだからな、元々は「処理を速く見せる為」なんだよ。それで、
・接続を明示的に切れれば、往復1回+本処理
・接続を明示的に切れない現状では、往復1回+本処理+後処理
・651方式で転送した場合、往復2回+本処理
というようにユーザーには見えることになる。
結果、ネットワークが速くて後処理時間より短いならこれもありかもしれないけど、ネットワークも地味に重い。
この辺のさじ加減は君らの方が詳しいだろうけど、
現状の後処理は、整理するデータがある場合は400ms程度、無ければ10-40ms程度だ。
整理するデータが存在するのは1/20程度の確率だと想定している。
となると、単純には後処理は平均して29.5-58ms程度の重さになる。
だから、ネットワークがこれ以上重いと赤字になってしまうんだよ。
(XAMPPでの時間計測なんて意味あるかボケ!というのはさておき)

668:デフォルトの名無しさん
21/08/05 15:19:28.77 qHbol2On0.net
ID:F8+XC2Dv0は開発環境がXAMPPで無料レンタルサーバを使う初心者なのだから身の丈にあったことをすればいいのにキチガイ過ぎる

669:デフォルトの名無しさん
21/08/05 15:26:17.55 tyzHpayb0.net
>>642
ID:bqGeTZjz0の人にrubyスレで教わりました

670:デフォルトの名無しさん
21/08/05 15:31:25.87 F8+XC2Dv0.net
>>654
それは君がブラウザの動きを分かってない。
flushで出力されるのはPHP側のバッファだけで、apache/nginxのバッファはflushされない。
だからapache等でgzしている場合には最後まで出力されるかどうかはかなり怪しい。(というか、多分されない)
そしてブラウザはある程度溜まったら勝手に出来るところまでパースする。
そしてパースが完了しないとJS側からはデータにアクセスしようがない。(送信途中のデータは読めない)
よってその方法では出来ない。
接続を明示的に切れれば、apache等は溜まってるデータをflushして接続を切りに行き、
それを受けてブラウザはすぐにパースを開始する。
だから、接続さえ明示的に切れれば、すぐさまパースされるんだよ。その後PHPが動き続けてても関係なく。
これをやろうとしている。
まあ、Laravelでキューサーバー使えというのはその通り。エンタープライズならこれなのだろう。
多分君はDOM(HTMLページ内)のJSが同期的に動くのを見て勘違いしてる。
ajaxで取得したデータは、途中では読めないよ。

671:デフォルトの名無しさん
21/08/05 15:31:32.98 jTl1oJKL0.net
>>657
そいつは有名なキチガイだから相手にしたら駄目よ
今このスレでも ID:bqGeTZjz0 で支離滅裂な事を書いてるけど頭の病気だから

672:デフォルトの名無しさん
21/08/05 15:38:06.77 F8+XC2Dv0.net
>>656
だから最初から言ってるが、
俺はPHPの初心者ではあるけどプログラミングは初心者ではないんだよ。
だから、PHPといえども恥ずかしいコードは書けない。

673:デフォルトの名無しさん
21/08/05 15:54:01.25 qHbol2On0.net
>>660
いやいやご冗談がきつい
どこからどう見ても初心者ですよ?
初心者じゃないならXAMPPや無料レンタルサーバに固執しなくていいですし
PHPに固執しなくてもいいですからね

674:デフォルトの名無しさん
21/08/05 15:57:19.11 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
21/08/05 15:59:24.92 bqGeTZjz0.net
レンタルサーバーの速さを言っても、仕方ない。
他人と共有しているから、他人がリソースを使うと、待たされる
安いのだから、低品質も仕方ない。
そういうものと割り切るしかない
KENTA は完全に割り切ってる。
PHP は一生使わないでよいと言ってる
金にならないから。
低品質で安い仕事

677:デフォルトの名無しさん
21/08/05 16:09:21.48 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>
----------

678:620
21/08/05 16:10:32.06 bqGeTZjz0.net
Ruby on Rails では、
XAMPP, MAMP など、Linux以外を使うことはない
Linux コマンド・シェルスクリプト、Docker, Heroku, AWS も、
KENTA のサロンの初心者用コースに入っているから
それに皆、AWS のくろかわこうへいのサロンにも入る
Windows 10, WSL2, Linux, Docker, VSCode でも出来る
XAMPP, MAMP とか、訳の分からない環境を使うことはない。
動きが本番環境と異なるから

679:デフォルトの名無しさん
21/08/05 16:13:52.63 cuxOZbzu0.net
id:F8+XC2Dv0ってPHPがApacheのモジュールとして動作する時の理屈すら理解してなさそうw

680:デフォルトの名無しさん
21/08/05 17:59:10.16 F8+XC2Dv0.net
>>664
まあわざわざコード書いてよこしたのだから、こちらでも試したよ。
ファイルは200Bytes, ダウンロードサイズは 4.4KBと表示されてる。
確かにそちらの意図どおり、ハロワだけ先に表示されるよ。(パースされてる)
4KBパディングすれば、通常ならバッファをキック出来るから、確かにパーサもキック出来るはずだし、実際そうなってる。
ただな、時間を既に書いたが、それでは間に合わないんだよ。
ネットワークってのは地味に遅くて、例えばここからPHP.netへのpingは264msかかってる。
後処理は平均29.5-58ms程度だと予想されてるので、window.stopがサーバーに間に合わない。
結果、パケットは送信済みで、受け取られたパケットが捨てられるだけだよ。
ただし確かにパースはされてる。(=その方法でもユーザーの体感速度は上がる可能性がある)
ただ、それはページのhtmlだからであって、ajaxではその方法は使えない。
ページのhtmlはブラウザの速度競争のおかげで出来るだけ早くパースするように出来てるからだ。
xmlを送る場合、閉じタグ以降に何かあったらエラーだったので、パディングで押し込みは無理だ。
jsonについては後ろにパディングしてもエラーは出ないようなので、押し込み自体は出来るが、
そもそもAPIが途中のパース結果を見せるように出来てないから、普通に実装されてれば全部揃ってからパースだよ。
世の中の大部分のサイトがこの「押し込み」で高速化してる、というのならブラウザも対応するはずだけど、聞いたこと無いでしょ。

681:デフォルトの名無しさん
21/08/05 17:59:23.81 X/tiD49H0.net
記録37レスか
殿堂入りだな

682:デフォルトの名無しさん
21/08/05 18:01:07.93 X/tiD49H0.net
と思っ�


683:スらまだ記録更新するつもりか



684:デフォルトの名無しさん
21/08/05 18:23:53.35 IpTlZujB0.net
>>667
間に合わないの意味がわかりませんです。
本処理終了の時点でブラウザ表示に必要な情報と、その次の行にwindow.stopまでを一気に吐き出すんだから、そのあとにサーバーから何か来て破棄されようが、どうでもいいんじゃないかしら?
要は十分な情報を受け取った段階でブラウザ側から切断してるんですよ。
本処理の後の後処理を待たせてる時間をなんとかしたいのが目的なのに、4KBでぐだぐだ言われてもねぇ。
後処理を待たせてる時間と比較したら明らかに早い段階で通信終了してるはずですよ。なんとかしたいレベルってことは人間が認識できるレベルの待ち時間は発生してるんですよね。それと比較して4KBは人間にわからないレベルの時間ですよ。
xmlが~とかは、htmlでラップするなり、頭良いんでしょうから工夫してくださいな。

685:デフォルトの名無しさん
21/08/05 18:32:12.95 xWv0yV5l0.net
接続の切断が目的なら、
<?
echo str_pad(" ",4096);
flush();
sleep(10);
これは、いらない。

686:デフォルトの名無しさん
21/08/05 18:37:28.54 IpTlZujB0.net
>>671
あら、そうなんですか?
後学のためにどうやるのか教えて下さい

687:デフォルトの名無しさん
21/08/05 19:02:41.47 Sb1zsMiv0.net
>>654
コレ、面白いね

688:デフォルトの名無しさん
21/08/05 19:56:24.99 uMZDvd8qa.net
無職のアスペルガーであるコミュ症プログラマーはエネルギーが違うね
そのエネルギーをもっと違うところに使おうか

689:デフォルトの名無しさん
21/08/05 20:15:50.49 F8+XC2Dv0.net
>>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か、というところ。

690:デフォルトの名無しさん
21/08/05 20:22:29.50 F8+XC2Dv0.net
>>670
> なんとかしたいレベルってことは人間が認識できるレベルの待ち時間は発生してるんですよね。
ちなみにこれはない。まだ部品を動かしている段階。
ただそもそもC出身なので基本的にノーコストで速くなるのならそれを選択する。
そして普通の環境では有る close が無いので面食らっているわけだ。
俺が見落としてるだけだと思っていたが、本当にないのだから驚きだ。

691:デフォルトの名無しさん
21/08/05 20:32:09.79 Sb1zsMiv0.net
まー設計レベルでミスってるから write_close みたいなこと言い出してんだけど、2年ぐらい Web に関われば、自力で解決できるかもね
がんばれw

692:デフォルトの名無しさん
21/08/05 20:54:11.00 xr/U2THc0.net
アスペおじさんに50の質問しようぜ
>>675
・PHPはクソクソという癖してPHPにしがみついてるのはなんで?
・なんで無料レンタルサーバーなの?無職だからお金ないの?
・任意でcloseできてウェブと親和性が高い言語って例えば何?あるならそれ使えば?
・例えばNodeならできるが?Nodeでやればいいのに何でやらないの?
・Nodeが使えるサーバーってVPSで500円ぐらいで用意できるけど500円も払えないの?それとも自分じゃサーバーを作れないの?
・何度かproc_openって出てるみたいだけどそれを無視してるのはなんで?
・そもそも働いてるの?
・そんなコミュ能力で仕事できるの?

693:デフォルトの名無しさん
21/08/05 21:04:38.27 tYvxU5+Zr.net
無料レンサバ案件受けるか普通
イキっててキメぇわ

694:デフォルトの名無しさん
21/08/05 21:05:44.43 IpTlZujB0.net
>>675
あーいえは、こーいうで、なかなか楽しかったです
あなたが不可能と断定したものを、あたしは2つも実現してみせたんですから、少しは敬意を表しなさいよ笑
断定したことをひっくり返されても、上からの態度とか、かっこわるいわよ
そんなんじゃ、いつまで経っても童貞卒業できませんよ

695:デフォルトの名無しさん
21/08/05 21:19:16.52 xWv0yV5l0.net
>>672
場合分けしました。
とは言え、ググって原因は予想したけど。
昔、「システム業界では、滅多に不可能と答えてはダメ」というようなことを言われたことがあります。

696:デフォルトの名無しさん
21/08/05 21:22:27.97 F8+XC2Dv0.net
>>678
proc_openはexecと変わらんだろ。
それで環境依存無しのコードが書けるわけでも無し。
PHPについては何度も言ってるように無料レンタルサーバーで動かす為で、
それは俺が使う用ではないからだよ。
PCのことなんて分からない連中でも動かせるようにして、しかも無料なら試しにやってみようかともなるだろ。
この辺については俺がどういうアプリ戦略を採るかだから、意見言われてもああそうですか、でしかない。
そしてここで色々ひけらかして後々粘着されてもウザイだけだから、特定出来るほど詳しく言うつもりもない。
なおNodeの無料鯖が日本に出現したら間違いなくそれに向けて作る。
今それがあるのならPHPは捨てるし、多分今後は書くこともない。
既に言ったが俺的にベストなのはサーバレスで、実際はレンタルサーバーよりもサーバレスが断然いい。
だからherokuの鯖が日本に出来るのがベストだが、無いのだから仕方ない。
PHPは糞だが、そもそも俺のアプリはそんなに大きいものではなく、
むしろSQLiteのラッパでしかないので、今はphp.netを睨みながらやってるような状況だが、それでも何とか進めてる。
ただまあ、俺が考えてることは今のWebからすると奇妙な事だから、君達と話が噛み合わないのは仕方ない。
それで君らが頭に来てるのも分からんでもない。
ただ先述の通り、詳しく言うと後々の憂いになるから、お互いに技術的なこと以外には踏み込まないようにした方がいい。
Webってのはそれくらいの距離感が丁度いいのだと俺は思ってる。

697:デフォルトの名無しさん
21/08/05 21:23:55.06 xWv0yV5l0.net
場合分けしました。 →場合分けして検証しました。
たいした仕事ではなかったんだけど、
ある公式を忘れても、基本の基本から証明できるので、
基本の基本が用意されてれば、(システム業界では)不可能と答えてはダメなんです。

698:デフォルトの名無しさん
21/08/05 21:24:45.00 tYvxU5+Zr.net
しかもSQLiteって笑うところだな

699:デフォルトの名無しさん
21/08/05 21:25:17.35 F8+XC2Dv0.net
>>680
つかまともな解じゃねえし。それでドヤられても困る。
動くっつうのと、やっていいかと、やるべきかは、別の問題だよ。
ただまあ、アイデアは面白いよ。それは他の人も言ってるとおり。

700:デフォルトの名無しさん
21/08/05 21:30:22.62 F8+XC2Dv0.net
>>684
エンタープライズ用途ならスケールアウト出来ないSQLiteは論外なのだろうけど、
ぶっちゃけ俺の用途ではSQLiteで十分だし、それは既にチェック済み。
というかね、単体では十分速いよSQLite。
まあ、他は使ったこと無いんだけどね。
SQLとか知らんし、とりあえず一番簡単な奴から、ってことで試して、十分だったのでそれまで。

701:デフォルトの名無しさん
21/08/05 21:40:09.08 tHJjXwU70.net
>>682
execとproc_openが同じなんだw
もうこの一言で満足したわ

702:デフォルトの名無しさん
21/08/05 21:44:25.28 tHJjXwU70.net
ちなみに解決法の例
URLリンク(github.com)
あー面白かった
満足したわ

703:デフォルトの名無しさん
21/08/05 21:48:51.81 cTOwQa60H.net
上のレン鯖の人は、
・無料で使える
・日本国内に鯖がある
・好きなミドルウェアや言語をセットアップできる
という条件を満たす環境があるなら、PHPに拘らないという主旨の発言をしているようにみえるが、その認識であってる?

704:デフォルトの名無しさん
21/08/05 21:58:56.90 IpTlZujB0.net
>>681
場合分けとは?
具体的にどういうコードにすればいいのか教えてもらえるとありがたいです。
「いらない」とは、単純に指摘箇所をコードから削除するだけですか?

705:デフォルトの名無しさん
21/08/05 22:05:04.22 vJjfvU2/0.net
php嫌いなのは分かるし俺も別に好きじゃないが、じゃあなんで使うんだよ、使わざるを得ないなら従え、以外に帰着しねーんでは。
お得意のnode様でも他言語からしたらディスられるだろうし不毛だわ

706:デフォルトの名無しさん
21/08/05 22:08:47.31 F8+XC2Dv0.net
>>689
まあyes。正確には
> ・無料で使える
> ・日本国内に鯖がある
ここまではその通りで、
> ・好きなミドルウェアや言語をセットアップできる
この必要はない。好きでもないPHPを使ってるのがその証拠。
一番いいのはNode。
ただ、動的言語でないと無理なのではないかと予想してるので、(が、何故そうなのかは言えない、これはすまん)
GoとRustは駄目だ。というかGoはPHP以上に糞だし、Rustは今のところ様子見してる。
それで、無料鯖で使える動的言語=PHP/Python/Rubyで、どれも知識ゼロだから、
とりあえずメジャーなPHPから試すか、で、まあ、言語と界隈が糞な所以外は問題ないから我慢して使ってる。(というほど使ってないけど)
まあぶっちゃけ、PHPが糞だ糞だと言われつつものさばってるのは、確かに便利なんだよ。これは認める。
そしてPHP.netの出来はマジで素晴らしい。PHP.netと比べるとPythonやRubyのサイトはゴミだね。
この辺も、また、ググッて回答が出てくるかも含めて、知識ゼロならPHPから試すのが妥当だし、そうしただけ。

もしかして他の選択肢がある?
ご指摘の通り、PHPは手段であって、目的ではない。

707:デフォルトの名無しさん
21/08/05 22:18:22.41 cTOwQa60H.net
>>692
あるよ。俺はoracleが提供しているプラットフォームを無料で使ってる。メモリ1GBのインスタンス2つとoracleの自律型DB2台。東京と大阪リージョンがある。
あとGCPのGAEなら東京リージョンで使える無料枠がある。

708:デフォルトの名無しさん
21/08/05 22:20:09.19 F8+XC2Dv0.net
>>691
Nodeは、俺がJS好きなだけで、PHPerからすると糞なのは認める。
というかね、DBと非同期が壮絶に相性が悪くて、Nodeだと結構トンデモなコードになる。
それに慣れてる俺は良いが、慣れてない奴からしたら糞以外の何者でもない。
ただしasyncが導入されたから今書いたらだいぶマシなのかもしれんが。
とはいえ、PHPは真偽判定テーブルとか見るだけでマジで糞で、糞なのを知っててもどハマりするから俺的には無理なんだ。
直近だと三項演算子、勿論結合がおかしいのは知ってるが、癖としてやってしまうんだよ。
そして見た目、バグに見えないから嵌る。
だからまあ、PHPを主力に使ってる人にとっては問題ないのだろうけど、
他言語を普段使ってて、偶にPHPとかだと、本当に無駄に嵌って、あ~、ってのが多すぎて悲しいんだよ。

709:デフォルトの名無しさん
21/08/05 22:22:30.05 cTOwQa60H.net
>>693
DB必須ならGCPだと無料のGCEにDBセットアップすれば良いけど国外リージョンになるので、実質oracle一択かな。

710:デフォルトの名無しさん
21/08/05 22:25:46.31 F8+XC2Dv0.net
>>693
Oracleなんてガチ枠だから完全にノーマークでしたわ。
とはいえ、SQLとはまた違うとは聞いてるし、そもそもそれってあんまりど素人向けじゃないから不味い気が。
逆に無料レンタルサーバーなんて完全にど素人向けでしょ。
向こうもど素人が使う前提だし、やっぱりど素人にはレンサバがお似合いだと思うのだけど。
お互いトラブらないという意味で。

711:デフォルトの名無しさん
21/08/05 22:28:07.44 xWv0yV5l0.net
>>690
勉強不足では困るので、
「ハードウェア」も「予想してから知識を呼び出す」のも必要です。
単純なプログラムを作ってから、魂を足し算します。

712:デフォルトの名無しさん
21/08/05 22:29:03.23 cTOwQa60H.net
>>694
jsの真偽判定テーブルも他言語からみたらPHP8と50歩100歩だと思う。7や5はもう過去だから知らない。

713:デフォルトの名無しさん
21/08/05 22:35:41.93 cTOwQa60H.net
>>696
補足しておくと、インスタンス2台無料だから、oracleのDB使いたくない場合は、インスタンス1台に好きなDBインストールする方法もあるよ。ど素人にどこまでのオペレーションを任せるかはわからんけど。

714:デフォルトの名無しさん
21/08/05 22:36:53.61 IpTlZujB0.net
>>697
えっと、すいません、なにかの宗教ですか?

715:デフォルトの名無しさん
21/08/05 22:44:02.23 F8+XC2Dv0.net
>>698
JSのもそれなりに糞だが、
型を意識してれば実際問題としてそこに命中することはないんだよ。
だから一般のプログラミングをしてる奴にとっては問題ない。
PHP7のはなあ、なんだったか忘れたが、
JS的には問題ないものでもおかしなのがあって、しかもそれに普通に命中するから嵌るんだよ。
とはいえ最早PHP8を使うべきなのかな?三項演算子は解決されてるし。
今確認したが、無料鯖はまだ7のようなのだけど、
現実的に俺が今書いてるのを公開するのはどうやっても半年後とかでしかないから、
その頃に一般的に使えれば全く問題ないし、
駄目でもいつかはPHP8に移行するのだろうから、待ってれば済む話ではあるし。
今7を使ってるのは、実は4年前に味見だけしてて、その時に7だったからなんだよね。
まあ、PHP8は検討しとくわ。

716:デフォルトの名無しさん
21/08/05 22:48:59.24 cTOwQa60H.net
>>701
10月に8.1出るし、今から開発するのに7.4はどうかと思う。アクティブサポートは今年の11月末で切れるし。

717:デフォルトの名無しさん
21/08/05 22:53:13.39 F8+XC2Dv0.net
>>699
OracleやAWSとかは、基本的に「将来有料のお客様になるかも」な人向けだろ。
だから、その気がない人がずっと使うのは不味いと思ってるんだよ。
勿論技術的な問題もあるけど。
無料レンサバはその点、広告を貼りますよ!だから、
永久に無料で使われてもいいですよ、な点が違う。
だからまあ、ガチ向けなものは基本ノーマークなんだわ。
ただ、技術的にはだんだん敷居が下がってて、サーバレスなんてその最たる物だろ。
たぶん、本当になんにも知らないど素人が、それが鯖であることを認識もせず鯖を運用する時代が来つつあるんだよ。
俺はそれに向けてちょっと仕掛けようとしてる。(まあ高確率でポシャるが、それは致し方ない)

718:デフォルトの名無しさん
21/08/05 22:55:44.39 F8+XC2Dv0.net
>>702
了解です。
現実的に古いバージョンを使う理由もないからね。
まあ問題は環境の再構築だが、これもやるしかないね。

719:デフォルトの名無しさん
21/08/05 22:57:56.82 xWv0yV5l0.net
>>700
コマンドラインだけのプログラムでは、
ユーザーが使いやすいものではないので。

720:620
21/08/06 05:53:40.73 13Hyhr+y0.net
無料サーバーは低品質だから、まともに動かない。
他のアプリがリソースを使うと、5秒ぐらいの動画広告でも、1時間動かない事もある
素人向けだから、PHP・SQLite でも良いと思う。
KENTA がPHPを一生やらなくても良いというのは、お金にならないから
未経験者の転職では、Ruby on Rails, Heroku, AWS だけ。
Node.js, Django も使われていない
プログラミングの話というよりは、安い・低品質の仕事の話。
すごく限定されたことしか出来ない、世界の話

721:デフォルトの名無しさん
21/08/06 06:20:19.81 4ndH842K0.net
>>706
実稼働12時間程度で100万円超えの案件もあるぞ
言語やフレームワークだけで語ってる奴には一生回ってこないだろうなw

722:デフォルトの名無しさん
21/08/06 06:29:46.94 UjnAn9a5a.net
>>707
もう令和になっているのにこのネタにマジレスしちゃうの?

723:デフォルトの名無しさん
21/08/06 14:33:32.85 Pmsm9i010.net
どういうネタならマジレスしていいの?

724:デフォルトの名無しさん
21/08/06 18:17:48.03 sAaum+q/0.net
そもそも後処理とやらを軽くすればいい話ではないのかね
DBの設計とSQLの書き方次第で速度がかなり違うよ
そこを見直すのがいいんじゃないかな
それとnode.jsはwebサーバーと一体だから切断があるがphpはwebサーバーからリクエストされるものであって接続の管理はできないのでは無いんでないのかね

725:デフォルトの名無しさん
21/08/06 18:35:46.02 sAaum+q/0.net
そもそもphp上で接続するのではなくブラウザに終了を認識させればいいので
ob_startとob_get_lengthなどを使い
headerでContent-LengthとConnection: closeを出力する方法がマッチしているのではないかな
適当にググってみたけど下のサイトがわかりやすかったかな
URLリンク(pisuke-code.com)

726:デフォルトの名無しさん
21/08/06 20:51:49.77 lgptz/Bq0.net
> Content-Length
おお正解出てきたか。実はこちらもそこに気づいて試して(昼間に)確認済みだった。
んで、いちいち文句言われるからとりあえず夜まで待ってたところだった。
つかマジで、お前らだいぶ酷いわ。改めてPHPerは糞だと再認識した。
小学生同士の小手先テクニック大会は楽しいのだろうけど、そんなんだから上達しないんだと思うぞ。

>>710-711
こちらはheaderだけで問題なくなった。
とりあえずサイト読んでみたが、こちらの結果からすると、ob_xxxもconnection:closeも要らんね。
(というか多分 connection: close は問題になるからやらない方がいい)
> そもそも後処理とやらを軽くすればいい話ではないのかね
> DBの設計とSQLの書き方次第で速度がかなり違うよ
> そこを見直すのがいいんじゃないかな
勿論分かってるが、今でも十分軽いし、これ以上どうしようもないので。
> 接続の管理はできないのでは無いんでないのかね
これは違う。接続の管理を「しなくてもいい」のであって、「出来てもよい」んだよ。
単純には機能が足りてないだけ。
近いのはGUIのイベント、onXXXだが、
あれも最初は addEventListenerとかは不要(onXXXだけで問題ない)と思われてたんだよ。
でも、有るのと無いのとでは大違いで、今は全面的に採用されてるだろ。
といってもお前らは若すぎてこの話が意味不明なら、イベントバブルでもいい。
あれもHTMLは最初から搭載していたようだが、おまえらPHPerなら特に、バブルなんて無くても設計出来ると思ってるだろ?
しかしこれも同様に有るのと無いのでは設計のしやすさの次元が違ってくるので、全面採用になりつつある。
機能が足りてないときでも、足りてないと気づけない人の方が多い。
ネットが無くても不自由しなかったし、その前は携帯が無くても不自由しなかった。
無ければ無いなりにやってしまうものなのだけど、これが有ればどんなに良いか!と思いつける人はほぼ居ないんだよ。
(一応言っておくが、俺も思いついたわけではなく、他言語で知ってたから不便を感じられただけ)
例えば、asyncとか、技術的には最初からあっても不思議ではなかったけど、誰も思いつけなかったろ。あれと同じ。

727:デフォルトの名無しさん
21/08/06 21:13:42.19 lgptz/Bq0.net
>>711
> 適当にググってみたけど
ちなみにどうググッたか教えてもらえないか?
こちらも昼間ググリまくったが、このサイトは見てない。多分ヒットしてない。使ったのはBingだ。
んで、今google/duckduckgo/yandexで"Content-Length header"で試したが、ヒットしない。
ヒットしない(しにくい)理由は簡単で、多分仕様じゃないからだ。
ブラウザが勝手にそう動くだけで、動かなくても問題ないし、動くべきだともされてない物を、
Content-Lengthの紹介で書くことが出来ないからだ。
ただこちらは、前から意味不明なヘッダだなと思ってたので、今日改めて目にした時にピンと来た。
が、ググッてもそうは書いてないし、まあ試しにやってみるか、で、ビンゴだった。
(と書けば簡単そうに見えるが、実際はちゃんと動いているか確認するまでに結構手間取ってる)
だからここみたいに個人レベルのTips集やQiitaとかじゃないと駄目なのだが、
そもそもこちらの検索結果にはそのサイトが出てこない。
どういうキーワードでどこで検索したか教えてもらえないか?

728:デフォルトの名無しさん
21/08/06 22:05:32.07 sAaum+q/0.net
php 後処理 でgoogleで検索して最初に出てきたやつ
接続を切ることができないのはwebサーバーへの接続だから
node.jsはwebサーバーを内包しているから出来ることでphpはwebサーバーを内包していない
Content-Lengthは何バイト応答があったらコンテンツの終わりかブラウザが認知するのでそれを利用したテクニック

729:デフォルトの名無しさん
21/08/06 22:08:02.71 lgptz/Bq0.net
>>711
すまん、713取り下げ。
Bingで「PHP 後処理」でググったら一番上に出た。
俺は仕様を確認しようとしていたのだが、やり方をググれば出るのか。
なまじ自分で出来るものだから「やり方」なんてググろうとも思わなかったのが問題だな。
PHPについては初心者だということを再認識して、「やり方」もググるべきだった。

730:デフォルトの名無しさん
21/08/06 22:36:18.90 lgptz/Bq0.net
>>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が秀逸で、
URLリンク(stackoverflow.com)
の回答の中に以下仕様書へのリンクとかがあるが、
URLリンク(www.w3.org)
読む限りContent-LengthはもしかしてHTTP/1.0時代には必須だったのかな?
今現在、 echo json_encode(...); でjsonを語れ流してるから、これアウトかよ、、、、ってちょっと萎えてる。
メモリを無駄に食わない素晴らしいコードだと思ってたんだがなあ、、、。

731:デフォルトの名無しさん
21/08/06 23:28:26.68 RLLkP2Do0.net
>>716
最初に"TCP接続を明示的に切りたい"とあったので機能はないと回答した
そのあたりは認識してほしい
環境依存にはなるがwebサーバーに通知つする仕組みはある
fastcgi_finish_request
URLリンク(www.php.net)
FastCGI用の物なのでapacheのmod_phpでは不可
また、Content-Lengthは後処理不要ならば付けなくても問題なし
json出すならContent-Type: application/jsonは付けたほうがいいと思う

732:デフォルトの名無しさん
21/08/06 23:30:33.96 RLLkP2Do0.net
楽に使うならクラス作って継承して使えばエレガントに書けると思う

733:デフォルトの名無しさん
21/08/07 00:43:48.11 f2WMK3C10.net
androidにPHPアプリとかあるけど役に立つ?

734:デフォルトの名無しさん
21/08/07 00:55:00.18 dDF85n970.net
>>717
> 最初に"TCP接続を明示的に切りたい"とあったので機能はないと回答した
責める気はないが、これはさすがに屁理屈だろ。
572は確かに俺の書き方が悪い。
ただ、「初心者」が間違った「やり方」を選んでトンチンカンな方向に行くことはよくある話で、
これを防ぐ為には「最終的に何を目指してるか」を言わなければならないが、
俺は575の時点で、
・俺が初心者であり、
・後処理してる最中でもブラウザにパースさせてUXを改善したいから、
・TCP接続を切りたい
と全部揃えているのだから、本当に分かってる奴が居たら、この時点で
「それはやり方を間違ってる。ヘッダにContent-Lengthを付ければそれで済む」の回答が出てきて然りなんだよ。
それがおかしな小手先テクニック合戦になったり、
或いは上記のように全部正しく揃えているのにそれを理解せず「コミュ障」呼ばわりしてくるから、
PHPerは糞だと言ってるんだよ。
これは君も含めてね。何を相手に伝えるべきか分かってないんだよ。
まあコミュ障だからこそ、(=つまり何を伝えれば通じるかが分かってない)
相手がコミョ障かどうか(=つまり必要事項が全部含まれているか)を見分けることが出来ないという、
至極当然の話で、よくあるから慣れてはいるけども。
なんかNodeを勘違いしているっぽいが、プログラミングモデルのレイヤーはPHPと同じだよ。
PHPは上手く抽象化されてる(584)というのなら、そりゃNodeでもその他でも同じだよ。
実際書けば(文法が違うだけで)ほぼ同じコードになる。
下位のTCP接続を直接切りに行けるのはCで相当野蛮に書かれたものだけだが、そんな物存在してないでしょ。
だからこれはエスパーではなく常識で読み替えられる範囲だよ。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch