PHP質問・雑談スレ4【初心者お断り(ROM歓迎)】at PHP
PHP質問・雑談スレ4【初心者お断り(ROM歓迎)】 - 暇つぶし2ch303:nobodyさん
18/03/08 06:24:23.39 .net
PHPになんらかのエラーがあった場合、通常はレスポンスコードは200で返ってきて、
エラー個所を表示するようになってる。
どの種別のエラーを表示させるかというのはサーバ側(PHP)の設定次第だし、
エラーには時に重要な情報も含まれる可能性があるので、
第三者に見られないよう、エラー表示自体をしないことも可能。
また、レスポンスコードをどう返すかというのもサーバ次第で、
通常200のところを、500にすることも可能だし、
同じ500でも、PerlCGIとPHPでは返すドキュメント(body)を別にすることも可能だし、
もちろんbodyを含まない、ヘッダ情報のみを返すことも可能。
早い話、全てはサーバの設定次第なので、FC2側で単にそうなっているだけなのだろうという事。
Chromeのやってることは、レスポンスにbodyがないので(=真っ白になる)、
ユーザに何が起きてるかわかるように、おせっかいにも補完表示してるだけと考えられる。

304:293
18/03/08 07:28:24.52 .net
>>294-295
ありがとうございます。
>>295によると、
 ・PHPではエラーがあっても200が返ってくる。
 ・ただし、ちゃんと実行できてないから、中身は真っ白になる
 ・PHPのエラー表示は設定で可能(←これはできました)
 ・サーバーの設定次第では500を返すことも可能
   (レンタルサーバーでは、設定を変えられるかどうかはサーバー次第)
ということですね?
何となく分かってきました。
ありがとうございます。

305:nobodyさん
18/03/08 12:56:24.58 .net
開発用環境を考慮してデフォルトではエラー表示はOnだけど
エラー表示関連はPHP_INI_ALLで一般ユーザが設定できるようになってるので
本番用環境のphp.iniは管理者側でデフォルトではエラー表示をOffにして
必要があればOnにするよう利用者に委ねるというのが行儀のいいレンサバ管理者
今は知らないけど昔xrea使ってた時はOnのままだったけどあれはよくない
URLリンク(php.net)
> ・PHPではエラーがあっても200が返ってくる。
> ・サーバーの設定次第では500を返すことも可能
デフォルトのエラー表示Onのままであれば200だけど
上記の通り本番環境ではOffにすべきであり
Offにしたらサーバ管理者がhttpdに細工をしない限り500が返るはず
fc2でエラーに500が返ってくるというのは正しい状態と見なしていい
> ・ただし、ちゃんと実行できてないから、中身は真っ白になる
fc2ではそういうことになるのだろう

306:nobodyさん
18/03/08 13:04:50.53 .net
ちなみに500ページを表示させたいというなら
htaccessが使えるなら設定してみては?
apacheは詳しくないんで答えれないけどできそう

307:293
18/03/08 13:10:55.13 .net
>>297
> デフォルトのエラー表示Onのままであれば200だけど
> 上記の通り本番環境ではOffにすべきであり
> Offにしたらサーバ管理者がhttpdに細工をしない限り500が返るはず
> fc2でエラーに500が返ってくるというのは正しい状態と見なしていい
FC2でPHPのエラーになると、IEとFireFoxは真っ白画面。
Chromeではブラウザーが出した500エラー画面。
なので、PHPエラーでちゃんと500エラーが返ってきてるって判断した。
不思議なのは、普通は404でも500でも、Apacheがデフォルトの
エラーページを送ってくるのに、なんで500エラーだけ
真っ白画面になるんだろう?ってことなんです。
実際、404エラーではちゃんとApacheのエラー画面が返ってくる。

308:293
18/03/08 13:16:27.67 .net
>>298
自作500ページを表示しようとして表示できないからおかしいなって思って、
いろいろ試して、Apacheデフォルトの500も表示されないって気付いた。
404とかは、自作にしたら自作が表示されて、
自作じゃなくしたらApacheのデフォルトが表示される。

309:nobodyさん
18/03/08 13:48:41.66 .net
phpがエラー検出したあとapacheに対してこれを返してくれと
500レスポンスコードにContent-Length:0の空のHTMLを送ってるイメージ

310:301
18/03/08 14:16:08.24 .net
if (responceStatus == 500 && responceBody.length == 0) {
 responceBody = readFile("/errors/500.html");
}
疑似コードだけど
こんな感じのをhtaccessで設定できるならいけるんじゃないのってことね

311:nobodyさん
18/03/08 14:57:47.09 .net
URLリンク(oshiete.goo.ne.jp)
FATAL ERRORが出るのが原因らしいが

312:nobodyさん
18/03/08 14:58:24.43 .net
typo FATAL→FETAL

313:nobodyさん
18/03/08 15:12:09.63 .net
PHPでどうこうするっていうソリューションはあんまりよくないよねえ
httpdでどうにかしたいところ
ところでresponceじゃなくてresponseだった恥ずかしい

314:nobodyさん
18/03/08 16:47:59.97 .net
>>304
修正前が正解

315:293
18/03/08 17:13:23.25 .net
>>301-302
真っ白になるイメージはまさに>>301だし、
やりたいことはまさに>>302の通りです。
>>303
それを読んで、挙動としてはやっぱりそうだったんだな、と分かりました。
そして、普通に500エラーを出すのは相当無理筋なんだな、と。
ってことで、みなさんいろいろとありがとうございました。
500エラーではなく、PHPの中でエラーを処理して
普通のHTMLでエラーメッセージを出す、ということにしました。
ありがとうございました。

316:nobodyさん
18/03/08 22:15:46.47 .net
PHPバカな子でごめんな

317:nobodyさん
18/03/11 00:58:34.82 .net
>>293
大方PHPがmod_phpで動いてる
phpinfo()でSAPI APIを確認してみ

318:nobodyさん
18/03/29 15:13:07.71 XiaDFUEL.net
Composerのautoload.phpって、全然autoloadじゃねぇんだよな。

319:nobodyさん
18/03/29 16:03:23.74 XiaDFUEL.net
URLリンク(github.com)
Q: but when I run phpuint --log-json I get unrecognized option --log-json. Was this feature intentionally removed from version 6?
A: Yes, this was removed.
「Yes,」じゃねぇよ、おっさん!
Any solutions for --log-json in netbeans8.2
I have same problem with this version. Someowne has any idea how to fixed it?
ここで終わってやがる…

320:nobodyさん
18/04/02 00:29:19.22 .net
セマンティックバージョニング的にもメジャーバージョンアップは後方互換性破壊があり得る変更なわけだし

321:nobodyさん
18/04/02 11:34:38.76 ZmEx8Txj.net
Logging Options:
--log-junit <file> Log test execution in JUnit XML format to file.
--log-tap <file> Log test execution in TAP format to file.
--log-json <file> Log test execution in JSON format.
--testdox-html <file> Write agile documentation in HTML format to file.
--testdox-text <file> Write agile documentation in Text format to file.

> 後方互換性破壊があり得る変更なわけだし(キリッ

はぁ?

322:nobodyさん
18/04/02 15:07:52.69 .net
ドキュメントからも消されてはいるな
URLリンク(github.com)
URLリンク(github.com)

323:nobodyさん
18/04/12 08:21:18.40 .net
FacebookがおもらししたのはPHPで構築されてたから?

324:nobodyさん
18/04/14 10:32:02.12 .net
techempowerでPHP系フレームワークの順位がかなり下なのは
単にPHPが遅いから?
URLリンク(www.techempower)


325:.com/benchmarks/ Shared-Nothingな事による初期化にかかるオーバーヘッドやらブロッキングI/Oを無くすことを狙った phppmとかReactPHPとかもあるらしいけど Shared-NothingとかブロッキングI/Oを前提に作った今までのコードは動かないよね そんなの使い物になんの? そこまでするんだったら別言語に移ったほうが良くね? https://github.com/reactphp/react/wiki/FAQ https://github.com/php-pm/php-pm/blob/master/README.md 遅いのはどうにもならないって事で PHPをアクセス数多いサイトで使う時は 静的キャッシュを行ってサーバーに負荷掛からないようにするのがデフォらしい



326:nobodyさん
18/04/17 06:20:15.60 .net
後はcssとjs、ファイルを分けずにhtmlの中に書いてしまう

327:nobodyさん
18/04/17 06:20:44.28 .net
要は読み込むファイルはhtmlファイル一枚だけにする
画像もsvg
そうすれば超早い

328:nobodyさん
18/04/17 10:37:30.26 .net
早い遅いいうけど人間の認識できる速度じゃないから
別に実用上はなんら問題ないんだよ

329:nobodyさん
18/04/17 10:56:24.98 .net
ローディング遅けりゃ離脱増えるぞ

330:nobodyさん
18/04/17 14:52:40.68 .net
そんなにI/Oにご不満ならメモリに全部展開しときゃいいよ
ユーザーの誰が気にするのかしらんけど

331:nobodyさん
18/04/17 22:46:50.61 .net
>>319
少し違う
phpやdb構築の際、速度を気にせずに重い処理を平気で書くことが出来るようになる
「これ重くなるだろうなぁ・・・かいてまえ!」→やり直し
が無くなる

332:nobodyさん
18/04/18 12:55:26.18 .net
URLリンク(hoge.com)

にアクセスしようとしたところ
writeable by group という初めてみるエラーに遭遇しています。
何が原因なのでしょうか?

Internal Server Error
Directory "/home/XXX" is writeable by group
suPHP 0.7.1

test.php自体には、 echo"testやで";
しか記述していません。

333:nobodyさん
18/04/18 14:13:48.65 .net
>>323
URLリンク(www.google.co.jp)

334:nobodyさん
18/04/18 14:47:55.41 .net
>>324
URLリンク(ameblo.jp)
このブログが参考になりました。

335:nobodyさん
18/04/18 23:39:44.72 .net
何が原因ってまんまエラーに書いてるのにそれがわからんってのがわからんでw

336:nobodyさん
18/04/22 12:53:22.27 qxkyJl8C.net
phpMyAdminってインターネットに晒すとヤバイの?
まあDBのパス漏れたら何でも出来ちゃうよね
あるいはphpMyAdmin自体に何か脆弱性があってもパスが漏れて終わる

337:nobodyさん
18/04/22 19:29:29.60 .net
>>327
それも分からないならweb制作やるべきじゃないと思う

338:nobodyさん
18/04/24 01:43:06.76 .net
攻撃者は狙ったアプリケーションのデフォルトの配置場所やファイル名でアクセスして
200が返ってきたらさらに調べてみて狙ったアプリケーションであるなら
既知の脆弱性を利用した攻撃あるいは管理ページ等にデフォルト情報でログインを試みる
すなわちメジャーなアプリケーションをインストールして公開する場合
デフォルトのパスワードを変えなければ狙われる
脆弱性が見つかった時点ですぐにアップデートしなければ狙われる
レンタル鯖の管理人でもなければ
どこからもリンクしない適当なディレクトリに展開しておけ
ついでにアクセス制限かけとけ
それだけでほぼ問題はない

339:nobodyさん
18/04/24 18:43:18.05 .net
なんだかんだ批判はあるものの、ウェブ開発においてPHPが業界標準なんですね。

340:nobodyさん
18/04/24 18:44:52.12 .net
phpMyAdmin自体がPHPで作られてるんだけど。
ところでphpは何の言語で作られてるんだ???

341:nobodyさん
18/04/24 21:42:59.47 .net
C

342:nobodyさん
18/04/24 22:55:40.59 .net
C

343:nobodyさん
18/04/25 00:24:46.61 .net
B

344:nobodyさん
18/04/25 09:45:41.44 Wx6vo3v+.net
phpMyAdminを複数の場所からアクセス出来るようにするには
SSHのポートフォワードを使えば良い?
IPアドレス制限はIPの管理が面倒 固定IPじゃないとたまに変わるし
VPNは金がかかる
phpMyAdminの認証に加えてBASIC認証orダイジェスト認証+中間者攻撃対策にHTTPSを使っても良いかもしれないが
認証フォーム自体へのアクセスは防げないのなんだかなあ
SSH認証なら有効な鍵を持っている人だけがphpMyAdminにアクセスできる
SSH鍵自体にもパスワード掛ければ更に安全と思う

345:nobodyさん
18/04/25 14:25:39.76 .net
まぁローカルホストからの接続に限定し, 認証と暗号化を備えたトンネルで接続するのであればちゃんと設定した上では安全でSSHポートフォワードでもVPNでも問題ない
VPNもセキュアでフリーな実装のOpenVPNとかあるから別に金もかからん

346:nobodyさん
18/04/26 01:41:21.66 .net
出来うる当たり前の対策をするしかないわな
URLリンク(stackoverflow.com)

347:nobodyさん
18/04/26 01:50:14.09 .net
制限もそんなガチガチの制限かけないで緩い制限でも効果はでかいのでは
攻撃なんてほとんど海外からだからね
jp制限かけられてるってわかればvpnとか通して偽装してくるかもしれないけど
他に狙うとこもあるしそこまでする攻撃者は稀なので

348:nobodyさん
18/04/26 20:00:38.27 e0kKtexp.net
【山口達也】  女子高生にチュー  × <差別番組Zip!> ◯  手繋ぎデート不倫  【川島海荷】
スレリンク(liveplus板)

349:nobodyさん
18/04/27 12:05:11.16 kBikjo8b.net
開 2 ち ゃ ん ね る= 便 所 の 落 書 き ・ 痰 壷 の 更 に 劣 化 コ ピ ー の 3 流 掲 示 板
運 営 の 性 格 の 悪 い 引 き こ も り I T 土 方 メ ガ ネ ザ ル 早 く 死 な な い か な

350:nobodyさん
18/04/29 10:15:31.52 .net
>>332
c言語は、web系の言語じゃないと思うが。

351:nobodyさん
18/04/29 11:47:12.71 .net
>>341
は?
phpはCで動いてるのは常識だぞ

352:nobodyさん
18/04/29 12:33:52.69 .net
>>342
じゃ、そもそもwebシステム最初からCで組めばいいじゃん

353:nobodyさん
18/04/29 13:52:45.22 .net
>>343
別にCで書きたければ書いても良いけど?滅茶苦茶早くなる
あらゆるphpの資産を失うけどね。まぁ頑張って

354:nobodyさん
18/04/29 17:05:45.10 .net
>>344
めんどくさいからPHPでええわ

355:nobodyさん
18/04/29 17:21:10.04 .net
PHP自体が何で書かれてるって聞かれたらそりゃCだろ
PHPだけじゃなくPythonもRubyもCで書かれた処理系が一番使われてる
WebサーバもnginxもApacheもC

356:nobodyさん
18/04/30 01:36:56.71 .net
>>341みたいなのがいるからPHPerはバカにされる

357:nobodyさん
18/04/30 06:51:03.66 .net
紛れ込んだ初心者か例外だろ
もっと優しくしてやれよ

358:nobodyさん
18/05/02 04:09:38.08 .net
スーパーグローバル変数の前後に.がついてる記述があるんですが
このドットはどういう意味なんでしょうか
例えばsql文をこんな感じで記述してたりするものです
$sql = "SELECT COUNT(*) FROM bbs WHERE name='''.$_POST["name"]."'";

359:nobodyさん
18/05/02 04:21:36.33 .net
>>349
スーパーグローバルどうこうではなく文字列連結演算子

360:nobodyさん
18/05/02 14:58:58.69 .net
count(*)だからたいして問題にはならんけど
それはsqlインジェクションの典型コードだから褒められたものではないな

361:nobodyさん
18/05/02 15:15:18.12 .net
寧ろSQLインジェクションのコード例まである

362:nobodyさん
18/05/02 16:58:11.13 XHGDuEA2.net
$_POST['name']="';drop table bbs";
とか単行でできなかったっけ?

363:nobodyさん
18/05/04 18:40:21.61 .net
>>353
出来ないはず
少なくともsqliteではできない
"忘れてるからでコメント入れとかないとシンタックスエラーになるわ

364:nobodyさん
18/05/04 19:02:58.13 .net
UNIONすればいいから

365:nobodyさん
18/05/11 21:01:57.13 w2CoFO3p.net
opendir()を使って指定したフォルダ内のファイル名一覧を取得したいのですが、
一つのセッションで何回も opendir()実行すると、その度にディスクにアクセスして
サイトの表示が遅くなりますか?良い方法ありますか?

366:nobodyさん
18/05/12 00:19:20.02 .net
中身かわったときに読み込んでDBなりファイルに書いときゃいい

367:nobodyさん
18/05/12 07:06:28.17 .net
静的データ使うのがベストだがopendirの回数を減らす方向だと
処理ステップが多いopendirをする前に
より単純な方法で比較すればopendirまで行かなくて済む
例えばフォルダのfilemtimeをセッション変数にぶっこんどくとか
ユーザ用のデータで外からの更新がないとか
セッション開始時から終了時まで使いまわして問題がないなら
セッション変数にファイル一覧ぶっこんどきゃいい

368:nobodyさん
18/05/12 11:48:03.93 MPdqrTl4.net
>>357>>358
レスありがとうございました。
>セッション開始時から終了時まで使いまわして問題がないなら
その通りなので
>セッション変数にファイル一覧ぶっこんどきゃいい
そうします。
ちなみにstatic変数を使ってやっても良いですか?

369:nobodyさん
18/05/12 21:11:01.72 .net
ページを表示した時点でプログラムが終了するので
次の動作(ページ遷移とか)をするとstaticじゃ保持されない
だからセッションやhiddenで持ちまわす

370:nobodyさん
18/05/14 12:05:38.71 bg4N3y/B.net
json_encodeで次のようになるデータを
[
{ "国": "アメリカ",
"地域": "ワシントン",
"人口": 19
},
{ "国": "日本",
"地域": "東京",
"人口": 7
},
{ "国": "日本",
"地域": "大阪",
"人口": 3
},
]
次のようにする方法教えて
[
"アメリカ": {
"ワシントン": {
"人口": 19
}
},
"日本": {
"東京": {
"人口": 7
},
"大阪": {
"人口": 3
}
}
]

371:nobodyさん
18/05/14 20:08:43.77 .net
$a = json_decode($encodedData);
foreach ($a as $v) {
 $b[$v->{"国"}][$v->{"地域"}] = $v->{"人口"};
}
var_dump(json_encode($b));
あとは調整しれ
つか>>1

372:nobodyさん
18/05/14 20:14:32.47 .net
$b[$v->{"国"}][$v->{"地域"}] = ["人口" => $v->{"人口"}];
だった

373:nobodyさん
18/05/14 22:20:49.44 .net
ありがとう助かった
スレチだったみたいだなスマソ

374:nobodyさん
18/05/14 22:47:48.22 .net
>>362
このくらいなら問題ないんじゃない?
手とり足とりって感じでもないし
JavaScriptも書く身としてはmapもアリかな
$a = array_map(function ($val) {
 $res[$val->{"国"}][$val->{"地域"}] = ["人口" => $v->{"人口"}];
 return $res;
}, json_decode($encodedData));
と思ったけどJavaScriptほどすっきりかけないからループの方がいいわ

375:nobodyさん
18/05/15 08:08:04.80 .net
$obj->{""}
この表記はあまりなじみがないから
初心者じゃなくても結構悩むかもね

376:nobodyさん
18/05/21 07:51:27.75 .net
phpで二回目にデータを渡すか、ユーザーの入力を待ちたい
////////ページ////////
[続けるボタン]
一回目の出力結果・・・
二回目の出力結果・・・
こんなページが作りたいのですが、
phpに書いたものはボタンを押すとリセットするようで、二回目が作れません
もしくは、while(){ボタン入力まで待機}
こんな書き方をしたいのですが、どちらかの実現方法を教えて下さい

377:nobodyさん
18/05/21 07:58:36.40 .net
sessionがあるみたいなのでやってみます

378:nobodyさん
18/05/21 14:36:19.77 .net
gRPCがPHPでRPCサーバーを作るのには対応していないのって何で?
PHP単体で動く(Apacheやnginxを使わない)まともなHTTPサーバーがないのが原因みたいに言われてたけど
それだけ?
そうだとして何でPHP単体で動いて
テストだけでなく本番でも十分使えるHTTPサーバーが無いのか

379:nobodyさん
18/05/21 14:42:31.54 .net
WEB画面から文字列を入力しDBにInsertすると文字の頭になんか変な文字が入ってました。
そこで、テーブル上のデータをSQLファイルでダウンロードして
サクラエディタで見たところ空白にしかみえないです。
しかし、その空白部分を選択してみると、サクラエディタの右下に
U+30AD となっています。何かの文字を表している様ですが分かりません。
これは一旦何が入っているのでしょうか?

380:nobodyさん
18/05/21 15:29:39.14 .net
>>367
JSONで非同期にしたら?
そんな処理でSessionとかcookie使うもんなの?

381:370
18/05/21 15:47:02.23 .net
SQLで insert文で 'キ' と入力するとなぜか'キ'の左側に
U+FEFF ← が入ってしまっています。

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

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

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

383:nobodyさん
18/05/27 01:53:43.88 .net
甘えるな小僧

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

385:nobodyさん
18/05/28 11:18:24.32 .net
>>375
他に比べたらオプソFW乱立って程でもない
総じて質が低いのが問題
それに起因するのかオリジナルFWが輪をかけてゴミまき散らしてて首絞めてる

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

387:nobodyさん
18/05/31 15:25:27.48 .net
public function foo()
{
  return [
    'a' => 'b',
    'c' => 'd',
  ];
}
FWでこういうコードを入れる必要があるのですが、
何を意図してこんなことをさ


388:せるのですか? $foo = ['a' => 'b', 'c' => 'd']; でよくないですか?



389:nobodyさん
18/05/31 15:47:30.82 7ebU4p49.net
URLリンク(ab-abo.com)

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

391:nobodyさん
18/06/07 16:12:26.53 .net
おう良いってことよ
感謝を忘れるなよ

392:nobodyさん
18/06/07 17:10:31.89 .net
>>380
よくあるやーつ

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

394:nobodyさん
18/06/16 11:33:21.06 .net
>>383
その辺はうまく最適化されてるからそこまで考えなくてもいい
実際、動いてるっしょ

395:nobodyさん
18/06/16 12:28:52.66 XsXx5YxH.net
【誘われたら、〝優秀″】 手に、マイクロ・チップ  ←<関/輿水>→  メール、ネットで公開処刑
スレリンク(liveplus板)

396:nobodyさん
18/06/16 12:38:57.88 WL8j0F1D.net
>>384
貧弱なサーバーだと一万もプロセス生成できなくね?
プロセス大量に生成しない他言語の方が有利でしょ

397:nobodyさん
18/06/16 13:48:58.44 .net
WebサーバがPHPを実行する際の仕組みに依存するんだから言語は関係ない
Apache+CGIならリクエスト毎にプロセス立ち上げるし
Apache+mod_phpならApacheのMPM次第だし
Apache/nginx+php-fpmならひとつのプロセスで複数のリクエストを捌くし

398:nobodyさん
18/06/16 14:16:49.57 XFveZCTu.net
>>387
>ひとつのプロセスで複数のリクエストを捌くし
同時には無理でしょ?
1万件接続されても1万プロセスは作らないけど
リクエストが来た時割り当てられるプロセスが無かったら
空きが出るまで待たされるってことだろ
nodeはそもそもApacheモジュールとかFastCGIとか使ってなくて
node単体でもHTTPサーバーとして動作するって話だ
nginxと組み合わせる場合はHTTPで通信する
nodeは非同期I/Oだから前のリクエストが終わらないと一切次のリクエストの処理が開始できないって事も無い
FastCGI自体1996年ぐらいに出てきてから
そんな進歩してないっぽいし

399:nobodyさん
18/06/16 16:23:45.43 .net
>>386
もちろんそう
phpは基本Cのラッパーだから、直接C言語で書けば爆速で動くよ
いつ完成するかは知らないけど頑張って
>>388
言ってる意味がよくわからなi
おそらくリクエストが最多のgoolgleやyahooが重くて仕方ないならその意見はわかるけど、
一体何に対しての意見なの?

400:nobodyさん
18/06/16 17:51:24.35 EG3qtVlZ.net
レストランで喩えると
コース料理を全部出し終わるまで
次の客を待たせるのがPHP
料理を作り終わって
客が食べている間に時間が空いても
他の客の料理は決して作らない

401:nobodyさん
18/06/16 19:20:14.63 m7Q1wvls.net
客一人に一人ウェイターが付くシステムのレストラン=PHP
ウェイターが5人なら注文を聞ける客は5人まで
それでもレストランで食事がしたい客は待つしかない
混雑に対応するにはウェイターの人数をかなり増やす必要がある
しかし常に大人数のウェイターを待機させておくと暇な時の人件費が嵩む
だからって混雑時だけ応援を呼ぶと対応に時間が掛かる
普通のレストラン=Node.js
一人のウェイターが複数の客の注文を取るので遥かに


402:効率的 混雑していても客はとりあえず店に入って注文を出せる 客の人数がウェイターの人数を超えると一切注文を出せず、料理も来ないPHPとは対照的 混雑時もPHPほど大人数のウェイターは必要ない



403:nobodyさん
18/06/16 21:53:50.62 .net
PHPスレで, しかもPHPに限らないことでPHPをディスってもなぁ
nodeが最適な場面は確かにPHPには向いてないだろうけど, それ以上でもそれ以下でもない

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

405:nobodyさん
18/06/17 14:49:10.70 .net
知ったかが何人もいるのか。お先真っ暗感

406:nobodyさん
18/06/17 14:52:25.05 .net
phpはそういう言語だからね
大丈夫

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

408:nobodyさん
18/06/17 15:47:59.14 .net
結局goの方が早いしな

409:nobodyさん
18/06/17 16:21:08.45 .net
非同期処理でややこしくするよりかはサーバー増やしたほうがよっぽどコストがかからん

410:nobodyさん
18/06/17 17:20:28.95 dwEPgyzc.net
Swoole使うと
最大で30倍近く速くなるらしいのでそれは暴論

411:nobodyさん
18/06/17 23:16:57.06 .net
1万リクエストあるからって1万生成されるわけじゃないし
プロセス生成数なんて気にする必要はない

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

413:nobodyさん
18/06/18 09:00:28.15 vorT3MqW.net
URLリンク(laravel-news.com)
nginx/FPMの一般的な構成だと80.93リクエスト/秒なのが
Swoole仕様では8717リクエスト/秒に増加している
30倍どころか100倍以上
同期(笑)
メモリリークや不具合を起こす危険と引き換えに時間の掛かるPHPやフレームワークの初期化も省略できるからな
そりゃ早いだろ
php-pmはメモリリークを防ぐために一定数のリクエストを処理後に再起動出来たが
Swooleは知らない

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

415:nobodyさん
18/06/18 16:16:03.97 .net
Swooleって何?PHPのアプリケーションサーバー?

416:nobodyさん
18/06/18 16:20:58.89 .net
非同期ネットワークIOの拡張モジュール written by C

417:nobodyさん
18/06/18 16:41:14.62 .net
reactphpとはちがうのん?よくわからん・・・

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

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

420:nobodyさん
18/06/18 19:07:53.58 .net
Falconみたく中身弄れる人限定とかじゃないの?

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

422:nobodyさん
18/06/19 23:28:58.36 sZEZNTYu.net
認証も必要

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

424:nobodyさん
18/06/20 09:14:44.17 Xst2QP85.net
>>412
何で例に出すのがBASIC認証なのか
APIならOAuthとかじゃねえの

425:nobodyさん
18/06/20 09:26:37.65 Xst2QP85.net
自分一人が個人的に使うシステムでも無い限り
OpenAPIやSwaggerで仕様を明確化した方がよい
あるいは昔ながらのREST APIではなくGraphQLでも良いかもしれない
RESTは自分でも作れるかもしれないが
GraphQLは割と複雑な仕様なのでライブラリーが必須
OAuthはOAuthで難しい
変な実装をすれば車が通れる程の大穴セキュリティホールが開く
URLリンク(www.sakimura.org)

426:nobodyさん
18/06/20 09:52:37.08 .net
URLリンク(www.jitec.ipa.go.jp)
この問4か

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

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

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

430:nobodyさん
18/06/21 06:50:01.75 .net
ワンタイムトークン

431:nobodyさん
18/06/21 11:05:43.80 .net
CSRF

432:nobodyさん
18/06/21 17:51:48.90 .net
直接PHP叩くのと、フォームから入力するのと、
マクロにとっては荒らしのしやすさになんの差もないと思うのだけど。

433:nobodyさん
18/06/21 22:09:54.17 p4z3zI1o.net
reCAPTCHA v3ではユーザーのアクションなしに相手がロボットがどうか
判別できるようになるらしい

434:nobodyさん
18/06/22 06:56:12.83 0CbeJ1vw.net
回答ありがとうございます
>>418-420
ワンタイムトークンが良さそうだと思いました
>>421
マクロだと確かにそうですね
IPアドレスで連投を規制したりすることも検討してみます

435:nobodyさん
18/06/22 14:11:43.65 HDxTbLco.net
PeachPieって言う.NETでPHP動かす環境あるらしいけど
どうなの?
そもそも使い物になる?

436:nobodyさん
18/06/22 21:01:21.02 .net
検索したらエロい店ばっかりでてきて吹いた

437:nobodyさん
18/06/22 21:02:21.49 .net
>>424
使ったこと無いけど、ASP.NET Webサーバー使ってるなら良さそう
ってかそれ意外になにもメリットなさそう

438:nobodyさん
18/06/22 21:16:34.26 .net
力技すぎて面白い

439:nobodyさん
18/06/23 09:41:34.58 ArmcQI4m.net
PeachPieはtechempowersのPlainTextのベンチマークでは99位
それでもFramework Overhead


440:でPHPより1.87倍ぐらい速い https://www.techempower.com/benchmarks/#section=data-r16&hw=ph&test=plaintext



441:nobodyさん
18/06/23 11:55:24.07 .net
CILにコンパイルされてから実行されるわけだからパフォーマンスは向上するわな(Phalangerと同じ)
あとはエクステンションがどのくらい互換性持って提供されるかだと思う
使い物になるかで言えば公式が「まだexperimentalだよ」って言ってる以上は(productionでは)全く使えない
>>428
plaintextのベンチとか意味あるの?

442:nobodyさん
18/06/23 12:38:28.80 JGE8gBSU.net
単なるプレーンテキストの送信でも言語やフレームワークによってかなり差が出るのは分かる
PeachPie自体はまだ実験的な物ではあるが
WordPressは既に動かせるらしい

443:nobodyさん
18/06/26 00:02:49.58 vSUzM4yv.net
composerってメモリ使い過ぎじゃね?
サーバーの利用可能なメモリが少ないとSymfony4のインストールすら完了しない
composerのロックファイルは
十分メモリのあるローカル環境で作り
メモリーの少ないサーバーではロックファイルからcomposer installするのがオヌヌメらしい
とは言えもう少し少なく出来ないのか?

444:nobodyさん
18/06/26 00:09:23.99 .net
プルリクあく

445:nobodyさん
18/06/26 00:10:24.54 R+4nVO22.net
あくってなに?

446:nobodyさん
18/06/26 07:56:36.12 .net


447:nobodyさん
18/06/28 16:38:17.84 .net
早くしろよ

あくしろよ

あく

448:nobodyさん
18/06/28 20:03:07.10 .net
汚ねえスレだなあ

449:nobodyさん
18/06/29 00:44:22.34 .net
>>410あたりを見て気になったんだけど
API作るというだけでは認証機構入れる必要これっぽっちもないよね?
BASIC含め簡単なものや固定のものは投げてる要求確認すれば丸わかり
バッチ等からのアクセスが主だったり他サイトに利用させるとかが絡むなら
事前認証してtoken吐いて……って機構が必要かもしれないけど>>410はブラウザ経由
認証つけるにしても、もしAPI以外でログイン認証してるならそっちのセッションをそのまま使える

450:nobodyさん
18/06/29 08:59:46.28 .net
いろんなところから利用可能にするためにWebAPI使うんじゃないのか

451:nobodyさん
18/06/29 09:31:29.33 .net
そらTwitterみたいに本家がユーザ認証前提の仕組みで他所でも認証してあーだこーだって話なら、な
例えばYahooのルビ振りWebAPIなんかは認証なんてない

452:nobodyさん
18/06/29 10:47:32.20 .net
appidってのがそうなんじゃないの

453:nobodyさん
18/06/29 12:09:11.00 .net
事前登録したIDを送るのは認証とはちょっと違くね

454:nobodyさん
18/06/30 13:16:02.58 HFlHS16J.net
composerはなぜかパッケージのダウンロードが一個ずつって特徴もある
並列化する非公式プラグインはあるが
何で公式は並列ダウンロードしないのか
URLリンク(github.com)

455:nobodyさん
18/06/30 13:23:07.35 .net
なぜかって普通だし
さして重要じゃないだろそれ

456:nobodyさん
18/06/30 14:09:23.84 HFlHS16J.net
並列ダウンロードが当たり前の他のパッケージマネージャに慣れていると
遅く感じる
プラグイン作者によるプルリクエストがcomposerにあったが
マージされるのはいつか分からない

457:nobodyさん
18/06/30 14:13:48.30 .net
composer使うのやめればいいじゃん

458:nobodyさん
18/06/30 15:02:10.11 TwF5k2FW.net
PHPもやめます

459:nobodyさん
18/06/30 17:48:37.84 .net
そもそもcomposerってなんで出てきたの?
必要なのこれ
composerじゃなきゃダメなことなんかあるの

460:nobodyさん
18/06/30 18:04:13.84 grfnyPlf.net
知らないのに使わなければ良いとか言ってんの?

461:nobodyさん
18/06/30 18:11:10.91 .net
フレームワーク使いたい奴には必須かもしれないけど
それ以外は別に使わなくても問題ない�


462:@っていうイメージ つか何故公式が云々って公式の気持ちなんか知るか国語のテストかよ



463:nobodyさん
18/06/30 18:44:02.99 grfnyPlf.net
composerの中の人は忙しいので
並列ダウンロードは皆があったら便利だと思う機能とは知っているが
優先度を低くしている
そんな感じでプルリク作成から2年経った

464:nobodyさん
18/07/01 01:30:55.83 .net
あれから2年、君は成長できただろうか

465:nobodyさん
18/07/01 12:23:54.18 .net
composerは車輪の再発明が嫌いな
再利用大好人間たちがコードを持ち寄って使いあったり
そこから新しいのを作るためのなれ合いツール

466:nobodyさん
18/07/01 12:49:01.19 .net
pear/peclが要らなくなるわけじゃないんだよな

467:nobodyさん
18/07/01 13:49:42.07 .net
peclはともかくpearはいらないだろ

468:nobodyさん
18/07/02 09:37:25.47 .net
composerにあるライブラリって全部PHPでしょ?
pearを進化させたようなもんだよねたぶん

469:nobodyさん
18/07/03 16:36:16.92 4gji1WrU.net
これどう作るの?
URLリンク(goo.gl)

470:nobodyさん
18/07/03 19:57:52.06 .net
最近必死すぎだろw
飢え死ねアフィカスwww

471:nobodyさん
18/07/03 20:05:02.85 .net
ComposerのロゴはGo以来のイラッと感を覚えるわけよ

472:nobodyさん
18/07/03 22:45:29.42 nJxIsGZ6.net
PHPの拡張ってプロジェクト毎にはインストール出来ない?
拡張を実行時に動的に読むdlって関数が昔あったらしいが
削除されてるし
dlは使い物にならなかったのか
他言語ではC拡張のあるライブラリも
他のライブラリと同じ様に
そのプロジェクトだけのインストールができるのが普通

473:nobodyさん
18/07/04 00:27:41.45 .net
URLリンク(php.net)
普通にextension_loaded()でいいんじゃないの

474:nobodyさん
18/07/04 00:54:24.18 .net
>>459
現状出来ない
実行時に拡張をロードする機能自体が存在しないのでどうにもならない
やりようがあるとすれば実行時ロード機能を提供するPHP拡張を作成することくらい
PECLに登録して最終的に本体にバンドルされるところまで至らないとエコシステムには取り込まれないだろうなぁ
rasmusとかandiとかzeevとかの基幹メンバーがとんでもなく保守的だし正直何やっても絶望的だと思う
この辺は割とマジで根本的に設計上の欠陥だと思うわ

475:nobodyさん
18/07/04 02:12:15.23 .net
.phpから拡張を読み込むことができるようになると
セキュリティホールが量産されそうな気がするが
その辺、大丈夫なのか?

476:nobodyさん
18/07/04 03:09:24.37 .net
何となくそういう懸念が浮かぶのは分かる
ただ他言語, 具体的にはPythonとかRuby, Nodeなんかでは頻繁に使われてる
system系の関数使って実行ファイルを叩くのとどう違ってくるのかと考えると別に実行時に拡張ロード出来ても良かろう(dlが削除されたのは安定性が理由だと書いてあるし)

477:nobodyさん
18/07/04 03:49:54.33 .net
PHPの用途で動的に読み込めると何が嬉しいのか、
まともな理由がないから削られちゃったんだろ

478:nobodyさん
18/07/04 06:31:20.45 .net
プロジェクト毎にPHPインストールすりゃいいんじゃね

479:nobodyさん
18/07/04 07:52:00.71 .net
>system系の関数使って実行ファイルを叩くのとどう違ってくるのかと考えると
systemやexecは、php.iniで包括的に設定するしか手がない disable_functions 設定で禁止できる
かなり違うんじゃないかね
URLリンク(php.net)
>このディレクティブは、Apacheモジュール版のPHPを使用した場合にのみ 有用です。
>PHPの動的ロード拡張機能をdl()で 仮想サーバー毎またはディレクトリ毎にオンまたはオフに変更することが できます。
>
>動的ロード機能をオフにするのは主としてセキュリティ上の理由によります。
>動的ロード機能により、 open_basedir の拘束を全て 無視することが可能になります。

480:nobodyさん
18/07/04 09:59:47.40 VNkVp5lL.net
そもそもdlって最近は削除されて使えないんじゃなかったの?

481:nobodyさん
18/07/04 20:40:21.34 .net
exec使える状態って
アホなアップローダとか置いてた日にはopen_basedirの拘束なんて無視して好き放題されちゃうよね

482:nobodyさん
18/07/05 04:15:11.30 .net
>>466
いや, php.iniだけで動的モジュールロードの可否を与える(php.iniのみで設定可能な)ディレクティブがあれば一緒だろ
自分でdlの例出してるじゃん
mod_phpで実行する場合は権限がWebサーバになるからそれが嫌だというのはよく分かるが

483:nobodyさん
18/07/05 04:17:30.15 .net
変なところにペーストしちゃったけどまぁいいや

484:nobodyさん
18/07/05 08:10:38.44 6vNW6Lds.net
dlは安定性に問題があるから削除したって言うけど
他の言語で出来ていることが何で出来ない?
PHPはリクエストの度にメモリの内容破棄するから?

485:nobodyさん
18/07/05 16:56:15.00 .net
extensionの動的ロードしたいってどんなとき

486:nobodyさん
18/07/05 17:14:15.92 .net
劇的ロードなら

487:nobodyさん
18/07/06 12:54:55.48 .net
age

488:nobodyさん
18/07/06 13:03:04.29 .net
hage

489:nobodyさん
18/07/06 14:57:23.38 P0O2iWzc.net
PHPは巨大化し過ぎた
山ほどあるビルトイン関数を削除して
プログラミング言語に最低限必要なライブラリだけをOOPで作り
使うかどうか分からない機能は動的ロードするようにすべきだ
そんな事したらもうPHPじゃない?
そんなの知るか

490:nobodyさん
18/07/06 15:48:38.10 g8pVEt14.net
そこまでするならフォークして別言語にしろ
QIQとかかっこいい名前付けてもいいぞ

491:nobodyさん
18/07/06 15:51:08.89 .net
>>477のセンスを向上させるにはどうしたらいいですか

492:nobodyさん
18/07/06 17:09:27.76 .net
ビルトイン関数なんて削っても
PHP本体のソースコードがすっきりするだけで
別に劇的に早くなるわけじゃないしユーザ側が受けるメリットなんて大してないだろ

493:nobodyさん
18/07/06 20:02:27.67 AtnEoX2L.net
すっきりしたら
ごちゃごちゃの状態よりバグが少なくなったり
本体が小さくなるとかのメリットはある
配列とか文字列がプリミティブ型みたいな扱いなのも
なんとかしる
array_系の関数が重ねて適用しようとしたら使いづらいったらありゃしない

494:nobodyさん
18/07/06 20:52:45.52 .net
デフォルトでなんでもアリだからこそ受けてると思うんだけどな
今の時代で多少軽くなってもたかが知れている。ってかそもそもそんなに重くないだろう
そんなに重いならsmartyでも使えばphpの負荷は大きく下がる

495:nobodyさん
18/07/06 21:03:08.11 .net
smartyでphpの負荷が下がるってどゆこと

496:nobodyさん
18/07/06 21:30:44.60 YHCASoUv.net
ビルトイン関数使ってたら
テストを書く時モックするのが難しい
time()とかrand()とか
名前空間使ったハック(\timeのように書いてると不可)やPHP拡張を使う方法もあるが
他の言語だとそんなの必要ないじゃん
キモい
テストを全く書いてない奴はお帰りください

497:nobodyさん
18/07/06 22:22:39.57 .net
rubyのnokogiriみたくネイティブライブラリをラップするライブラリって使えれば需要あると思うけど
特にcomposerが普及した今なら更に

498:nobodyさん
18/07/06 23:05:33.81 wqmurizE.net
今どきsmartyって…w

499:nobodyさん
18/07/07 07:12:24.91 .net
php4時代のコードでも少しの変更でphp7で動くようにできるというのがphpのメリットで
何するにしても後方互換の問題があるわけで
pythonのような英断をしなければphpが変わることはないし
成熟してしまって時期的にそのチャンスはもう逃した
お前らがforkして新php作ればいいよ
まあオリジナルの差分をコミットする作業が面倒で3日で匙投げるだろうが

500:nobodyさん
18/07/07 12:18:10.37 y8vJRkpl.net
既にHackで爆死経験済みだろ。

501:nobodyさん
18/07/07 14:07:12.63 .net
pythonはpythonで2と3が両立していた時期があってあれはハチャメチャだった

502:nobodyさん
18/07/07 14:21:17.62 .net
php++の前段階として既存の糞ビルトイン関数のラッパークラスをphpで作ればいいよ

503:nobodyさん
18/07/07 14:39:31.14 .net
namespace php\lang;
class String extends Object
{
 public function __construct($_str)
 {
  if (is_string($_str)) $this->str = $_str;
 }
 public function htmlEscape()
 {
  $this->str = htmlspecialchars($this->str, ENT_QUOTES | ENT_HTML5, 'UTF-8');
  return $this;
 }
}

504:nobodyさん
18/07/07 15:39:21.40 2YJkuak7.net
あらゆるライブラリがそのラッパークラスとやらに対応してくれないと
何度も変換する必要があって使いづらい

505:nobodyさん
18/07/07 16:24:29.33 .net
言語ごとラッパー作るなんてできるのか?

506:nobodyさん
18/07/07 19:39:28.88 .net
イメージ的にはJavaScriptに対するjQuery
jQueryの書き方に慣れてきたころにjQueryの構文やオブジェクトを実装したJavaScript2登場みたいな

507:nobodyさん
18/07/07 20:28:57.57 2YJkuak7.net
PHPの言語仕様が嫌だが
PHPのライブラリや既存コードも使う必要があるってなら
他の言語で書いてPHPに変換出来るAltJSならぬAltPHPを使えば良いかも
ただ、PHPの場合それが出来て
ある程度人気があるのはHaxeだけだと思う
JSは本当に色々あるのに
URLリンク(stackoverflow.com)

508:nobodyさん
18/07/07 20:35:32.20 2YJkuak7.net
HackはPHPと互換性があるがVMも違うやつ使う必要があるから
AltPHPでは無いよね

509:nobodyさん
18/07/07 20:43:49.76 .net
糞だと思うなら使わなけりゃいいじゃん

510:nobodyさん
18/07/07 20:53:26.11 .net
JSはPHP以上にカオスだと思うんだけどな

511:nobodyさん
18/07/07 20:55:25.59 .net
JSはundifendeの辺りが怖すぎる

512:nobodyさん
18/07/08 14:20:25.97 .net
そんなにjsがいいならjsの子になっちゃいなさい!

513:nobodyさん
18/07/08 15:23:04.10 4WOWpkJq.net
JSはブラウザで動くのがJSしか無いから
AltJSみたいのが生まれたけど
サーバーサイドは別に代わりがいくらでもあるしね

514:nobodyさん
18/07/08 15:34:54.96 .net
ブラウザで動くのがjsしかないのが異常というか
jsだけとはいえブラウザで動かせること事態が本来異常というか

515:nobodyさん
18/07/08 15:47:47.44 .net
jsで、任意のファイルを読み書きできるの?
出来てしまうとセキュリティ上やばい気がするのだが。。。

516:nobodyさん
18/07/08 16:18:42.43 4WOWpkJq.net
>>502
なんの話?
ブラウザのJSは勝手に他サイトやファイルシステムの内容を読めるAPIは無いし
脆弱性を利用してブラウザのセキュリティを突破しようにも
サンドボックスがあったりして難しい

517:nobodyさん
18/07/08 17:48:47.31 .net
サーバサイドプログラムでjsを使う場合の話です。
任意のファイルの読み書きはできるのでしょうか?

518:nobodyさん
18/07/08 18:08:13.66 .net
node.jsならできるよ。
require('fs');

519:nobodyさん
18/07/08 21:06:37.76 .net
jsだからどうという話ではないな。nodeがそうだというだけで。

520:nobodyさん
18/07/08 22:18:37.29 .net
nudeなら

521:nobodyさん
18/07/09 01:54:41.35 .net
他所でしてくれ

522:nobodyさん
18/07/09 14:38:37.47 .net
>>502=>>504なら
なぜPHPならセキュリティ上問題ないと思った?ていう
まぁ多分本人が考えてることと他のやつが考えてることが違うのだろうけど

523:nobodyさん
18/07/09 14:59:42.48 .net
まあお茶でも飲んで落ち着けよハゲ

524:nobodyさん
18/07/09 19:52:51.86 .net
これが落ち着いていられるか!

525:nobodyさん
18/07/14 17:07:18.88 8nY3xhKd.net
このスレであってるかな…?
掲示板を作れるようになりたいんだが、正直マジでCSSとHTMLと少しのPHPの知識(スクレイピングなど)ぐらいしか知識がなくてどういう仕組みなのかわからない。
PHPで掲示板って作れる?
理想としてはガールズちゃんねるそのまんまなのが作れたら最高

526:nobodyさん
18/07/14 17:24:51.99 .net
掲示板と言っても、DBを使う/使わないで難易度が大きく変わる
作らなくてもその辺にサンプルどころかそのまま使えるものが山程落ちてるよ
それを改造するところから初めてみては

527:nobodyさん
18/07/14 17:37:27.52 8nY3xhKd.net
>>513
DBを使わないPHPの簡易掲示板はコピペしたり改造したりしてなんとか作れた。
ただ、txtファイルに書き込みデータを保存する方法だと簡易的すぎるかなと。
理想はガルちゃんみたいにユーザーが自由にトピックを立てられる形にしたいから、DBを使ってやりたい…
どっかにわかりやすい雛形でもあればいいんだけど、何から手をつければいいかすらわからない…

528:nobodyさん
18/07/14 17:46:54.13 .net
>>514
俺も昔やろうとしたんだけど、掲示板はセキュリティに気をつけないとあっという間に終わる
更にセキュリティ的に問題なくても、連投や巨大投稿、大量の改行コードだけの投稿などをどう取り扱うかで永久に終わらない
トピックというかスレでいいなら
「2ch風掲示板 cgi」
「2ch風掲示板 php」
この辺で検索してみてはどうかな

529:nobodyさん
18/07/14 17:48:37.61 .net
要求仕様を実現するのに最低限必要なことと、そうでないことを切り分けられる頭がないと無理
ガルch形式のbbsも2ch形式のbbsもc, perl, php, その他わりとどんな言語でも作れる
それとtxt方式かDB利用かは直接関係ないし
どちらにしてもどのようにデータを読み書きするかという設計を自分で出来ないと話にならない
コピペと改造でなんとか、ってレベルで何が簡易的なのか判断しようとしてる時点でおかしいことに気付け

530:nobodyさん
18/07/14 17:50:06.34 .net
まぁこういうアドバイスはガン無視して、結局自分で作ってから気づくんだよね
俺の時もそうだった
とりあえずDBは使わない形がいいよ、セキュリティと言う名の闇が待っている

531:nobodyさん
18/07/14 17:54:21.71 .net
技術がなにで出来てるのか勘違いしてるパターン

532:nobodyさん
18/07/14 17:55:49.32 .net
cgi拾ってきてcssとjs設定すれば終わりなのに、何でそんなに難しくしたがるんだろう

533:nobodyさん
18/07/14 18:23:17.42 .net
テキストかデータベースかは、見た目や運用上の設計には関係ないから、とりあえずテキストでいいと思うよ。
書き込みや読み込みの処理の部分をあちこちでやらずに1箇所で行うように設計すれば、あとでデータベース式に変更するのも修正箇所が少なくて済む。
テキストファイルは拡張子をphpとかplとかにして、直接アクセスされたら実行エラーになるようにしておけばよいかと。

534:nobodyさん
18/07/14 18:24:08.65 .net
BBS {
 int createThread(string $title);
 bool deleteThread(int $threadId);
 Gererator readThread($threadId);
 bool writeThread($threadId);
 bool saveHTML(string $template);
}

535:nobodyさん
18/07/14 18:37:57.75 8nY3xhKd.net
>>515
っぽいねー。
実はtxt自動生成して書き込み保存する簡単な掲示板を設置して見たことがあるんだが、放置してたら謎の大量文字化け(スクリプト?)の投稿で荒らされまくってダメだった…

536:nobodyさん
18/07/14 18:39:40.35 8nY3xhKd.net
>>516
ありがとう。
txtかDBってとこがポ


537:イントではないんだね。 txtファイルでも書き込み内容の分類やら保管やらをしっかり設計できれば運営していけるってことか…。 なんとなく通常のサービスはDBを利用してるからDBが正義だと思ってたわ。



538:nobodyさん
18/07/14 18:44:13.44 .net
まぁ最初から完璧なものなんて作れるわけないしまずはウダウダ言ってないで動くものを作れと

539:nobodyさん
18/07/14 19:21:07.65 .net
>>522
海外アクセス弾くだけでほぼ無くなる。「htaccess 海外 拒否」などで検索
もしくはNGワードの処理をかます。
これは書き込み後にテキトーに判定してdie()するだけでいい。めんどくさい事は後で考えて、生産的な事をまずやろう

540:nobodyさん
18/07/14 20:48:13.31 .net
>>525
私は書き込み文字の中に全角文字がひとつも無かったら、「全角文字を含めてね」ってメッセージを出して弾くようにしたら、海外のスパム書き込みは100%排除できました。

541:nobodyさん
18/07/14 21:12:36.64 .net
>526
頭いいな、いろんな意味で完璧な対策と思う
素直にすごい

542:nobodyさん
18/07/14 21:25:53.98 .net
中国弾けなさそう

543:nobodyさん
18/07/14 21:46:15.25 .net
>>528
確かに中国語だと弾けないですね笑
でも今まで中国語の書き込みは無いです。
てか、もし私が中国のスパム業者なら、日本や欧米の掲示板に中国語で書き込んだりせず、書くならやっぱり英語だと思います。

544:nobodyさん
18/07/14 23:27:28.81 .net
ジェレレーターw

545:nobodyさん
18/07/15 14:57:05.88 OQU8pbJ/.net
考える人より手を動かした人の方が早く覚えるよ
まずは本買うなりサイト見るなりして作ってみればいい

546:nobodyさん
18/07/15 18:25:13.91 .net
外部設計と内部設計の違いもわからないような奴が
いくら本を読んでも手を動かしても100%無理
既存のサービスやプログラムをとっかかりにして
仕様も機能もひとつひとつなぜ存在するのかなぜこうなってるのか学ぶしかない

547:nobodyさん
18/07/15 18:40:30.19 .net
公開されてるの?

548:nobodyさん
18/07/16 01:05:08.50 .net
公開されてるのもある
公開されてないものも設計を考える力を養うにはもってこいの材料

549:nobodyさん
18/07/16 21:26:48.20 .net
!omikujiみたいな公開しないとわからん機能じゃなくて
使ってて目に見える部分であれば
たいていどういう風に作るかイメージが沸く
このスレの人はtwitterだろうがfacebookだろうが作ろうと思えば作れるんじゃないか?
気力がない 作っても流行らない うっかり流行ったら500との闘い 解消するためにサーバ月何十万
PHPerの限界とは経済力と時間の限界なのである

550:nobodyさん
18/07/16 21:30:35.61 Jh/2B4in.net
AWSもLinuxもそこそこ扱えるし作ろうと思えば作れるけど、
レッドオーシャンに飛び込むような元気はない

551:nobodyさん
18/07/16 22:29:54.30 .net
このぐらいだったら作れる
URLリンク(stdput.com)

552:nobodyさん
18/07/16 22:36:10.37 .net
機能それぞれ単体なら比較的容易
全部まとめて、さらにセキュリティ、速度、……となると設計だけでも
かなり複雑になってくるから時間がかかるようになる
ただ、10年前の自分じゃ機能単体もおぼつかなかったと思う

553:nobodyさん
18/07/17 20:43:36.89 .net
>>536
今の知識もったまま20年前にタイムスリップしたいよな

554:nobodyさん
18/07/18 12:47:15.98 B1Xdglk2.net
【放射能の影響か?】 道路の真ん中で直立不動で失神しているトンビ、多発している認知症事故と関連!?
http://


555:rosie.5ch.net/test/read.cgi/liveplus/1531880720/l50 動物まで意識障害?



556:nobodyさん
18/07/20 17:25:59.13 .net
JSのように
$a = 10;
$b = $a || 20;
echo $b; //20
にならんかなあ
これ糞便利なんだけど
論理演算子はorだけでもいいよねえ

557:nobodyさん
18/07/20 17:26:34.38 .net
$a = 10;
$b = $a || 20;
echo $b; //20
ごめんこれ10だわw
$a = 0って書いたつもり

558:nobodyさん
18/07/20 17:50:29.12 .net
null合体演算子(??)を使え
短絡評価した結果何を返すのかなんて後から変えられるわけねぇだろ

559:nobodyさん
18/07/20 19:43:58.83 .net
型ってもんがあるからtrue/falseで返してくれないと怖い

560:nobodyさん
18/07/20 23:00:07.46 .net
>>543
Python3 呼んだ?

561:nobodyさん
18/07/20 23:26:40.30 .net
>>545
いっそそこまで覚悟出来るならやればいいとは思う
混乱はあったけど結果としてPythonの決断は正しかったのだろう
とは言え短絡評価を結果をbooleanにするのも最終評価値にするのも良し悪しだからなぁ

562:nobodyさん
18/07/20 23:57:25.93 .net
何が入るかわからないのがな
最悪を想定するなら短絡評価の前に中身の判別を入れなきゃならない
想定した型かどうか事前に判別するなら短絡評価要らない

563:nobodyさん
18/07/21 17:38:08.88 gWhxLgcg.net
$b = (!empty($a)) ? $a : 20;
NULL合体演算子はissetだからだめだな

564:nobodyさん
18/07/21 19:13:06.04 .net
JavaScriptも三項演算子使えるんだからそれでよくね
短絡評価は言語ごとに差があるからあんまり使いたくない

565:nobodyさん
18/07/21 19:16:09.41 .net
愚直でもわかりやすい判断分岐で書かれてると読む人間にはありがたい

566:nobodyさん
18/07/21 19:18:20.55 .net
なんでも短絡や三項にすれば短いだろってより
素朴にIF文使って書いてある方が
読みやすい場合が多々あるな

567:nobodyさん
18/07/21 19:25:35.94 .net
ネストしてないに限れば三項演算子は読みやすいな
条件部分を>>548のようにちゃんと()で囲ってればif文の変化形にも見えるし
コーディング規約で禁止してるとこは結構あるし賛否両論なのは確かだが

568:nobodyさん
18/07/21 19:33:59.72 .net
phpで三項演算子のネスト書く奴は頭からカレーかけられても文句言えない
ネスト階層が深けりゃコーンスープ付き

569:nobodyさん
18/07/22 05:26:38.13 .net
ifだとクロージャー使って即時実行したくならない?
if (!!$a) {
 $b = $a;
} else {
 $b = 20;
}
$b = (function() use ($a) {
 if (!!$a) {
  return $a;
 } else {
  return 20;
 }
})();
上だとなんか感覚的にいやだ

570:nobodyさん
18/07/22 05:45:59.43 .net
何に代入しているのかを特に明示したいならそれでいんじゃね
単純な代入ならインデントで即わかるとは思うが
読みやすさわかりやすさを理由に(if等で)わかりやすい分岐を・・・って話の流れで
if使いながら$aそのまま(のbool変換値)ifに流すだけなところと
ifに渡すだけの箇所で!!$aってやってるところが意味不明だが

571:nobodyさん
18/07/22 06:26:18.55 .net
> !!$a
これ、 $a == true と等価だよな?
数文字タイプする手間を惜しんで2回反転させる計算コストを発生させてる?

572:554
18/07/22 06:58:19.63 .net
booleanキャストのつもりで使ったが
確かにいらんな

573:nobodyさん
18/07/22 07:54:39.39 .net
素直メンはイケメン

574:nobodyさん
18/07/22 08:21:29.99 .net
!!って書けることを知らなかったw
!!!もできる?

575:nobodyさん
18/07/22 08:32:08.34 .net
やってどうすんのよ

576:nobodyさん
18/07/22 09:22:46.00 .net
エントロピーを増


577:大させるのだ



578:nobodyさん
18/07/22 10:22:27.72 .net
>>560
その発想がなかったから、そんな事できるんだって目から鱗なだけ。

579:nobodyさん
18/07/22 10:39:15.79 .net
!!!$varは!$varと等価だろ

580:nobodyさん
18/07/22 11:57:10.28 .net
いやだからさ、そんな事もできるんだ!
すごい面白い!
じゃあ何個まで重ねられるんだろう?って話だよ。
どこかでエラーにされて怒られるとは思うけどさ。

581:nobodyさん
18/07/22 13:15:13.80 .net
eval()あんだから自分で試してみりゃいいじゃん

582:nobodyさん
18/07/22 13:35:16.79 .net
>>554
下はJavaScriptが好きそうだな
「名前空間が汚れる」とか言って
でも上のシンプルな方が読みやすい
>>556
>$a == true
これもこの素朴な方が分かりやすい
「!!$a」とか多用すると読みにくい
トリッキーな書き方より
それを抑えて読みやすくする方が大事

583:nobodyさん
18/07/22 15:58:11.39 .net
unless (!!$a || !$b)

584:nobodyさん
18/07/22 17:01:30.11 .net
>>550
>>551
同意
書く方は短い方が書きやすいんどろうけど

585:nobodyさん
18/07/22 19:17:55.24 .net
短く書くことが目的化してるコードはバグ出やすい上にデバッグし難いんだよなあ

586:nobodyさん
18/07/22 19:19:38.87 .net
でもさすがにisset($_POST/$_GET)は三項演算子使うでしょ?

587:nobodyさん
18/07/22 19:23:07.08 .net
>>570
filter_input 使うから、使わない

588:nobodyさん
18/07/22 19:35:16.04 .net
まとめて初期化、まとめて確認って手もあるしなあ
スタンダードというわけじゃなし

589:nobodyさん
18/07/22 19:40:11.51 .net
filter_inputってバリデーションでしょ?
issetしたあとに使うものだよね?

590:nobodyさん
18/07/22 19:56:43.65 .net
転載アフィか何かなの?

591:nobodyさん
18/07/22 20:01:42.81 .net
その辺の処理は各々好きにしろとしか
・NOTICEが出ない
・その後の処理でバグを生まないようにする(デフォルト値設定、検証除去etc)
これが出来てれば良いわけで

592:nobodyさん
18/07/22 20:10:17.68 .net
>>573
マニュアル読んでみ。幸せになれる。スーパーグローバルから開放されるぞw

593:nobodyさん
18/07/22 20:36:58.12 .net
>>554
elseまでいかんでも
$b = $a;
if (!$b) $b = 20;

594:nobodyさん
18/07/22 20:41:29.86 .net
>>575
後々、それが出来てるかどうか、バグを生んだのがそこかどうか確認するのに
文字数少ない代わりにわかりにくい書き方とか最悪だろって話

595:nobodyさん
18/07/22 20:47:50.31 .net
$aの型が例えばintなどと保証されてるのか?
保証されてるなら!$aなんてint(0)の判別にしかならないのに直感的じゃない
保証されてないなら'abc'やarray(0)が来た時どうすんの

596:nobodyさん
18/07/22 20:52:50.72 .net
三項演算子の何がわかりにくいのか理解に苦しむな
ワンライナーで書けるってだけでif-elseと変わらんのに
(condition)
?
 when-true
:
 when-false
;

597:nobodyさん
18/07/22 21:18:33.98 .net
プログラム書く上で1行で書けるかどうかってなんか価値があるの?
コードゴルファーphp?

598:nobodyさん
18/07/22 21:22:28.39 .net
if( ~~~~ ) ~~~~; else ~~~~;
三項演算子の特権じゃないじゃん

599:nobodyさん
18/07/22 21:25:51.63 .net
>>581
1行だ短いだなんだじゃなくて、何がわかりにくいのか理解不能

600:nobodyさん
18/07/22 21:34:23.08 .net
ワンライナーって見ただけで私アホですと脳内変換されるわ

601:nobodyさん
18/07/22 21:36:59.50 .net
>>584
ぺちぱーってバカにされんぞ

602:nobodyさん
18/07/22 21:39:59.36 .net
>>585
ワンライナー
-rオプション使いまくってる人?えっ違うのですか?
ぺちぱー
吠えてるだけ

603:nobodyさん
18/07/22 21:42:00.36 .net
関数型言語で発狂してこいよ

604:nobodyさん
18/07/22 21:42:30.07 .net
価値はある
行数ベースで費用計算してるとき安くなる

605:nobodyさん
18/07/22 21:43:56.87 .net
三項演算子は短く書くためのものじゃないが。
その程度の理解なのなら自分で言ってるように使わないのが無難だな。
無駄にマウント取ってるのは笑えるがw
ifelseは組み込み制御構文で三項演算子のように式が要求されるところには置けない(評価されて値になれない)

606:nobodyさん
18/07/22 22:05:07.77 .net
同じことが実現できる場合の書き方の比較であって
誰もそんな当たり前の話しとらんのだが

607:nobodyさん
18/07/22 22:06:35.91 .net
嘘乙w

608:nobodyさん
18/07/22 22:09:52.68 .net
ドヤ顔マウンターぺちぱー(笑)

609:nobodyさん
18/07/22 22:25:04.60 .net
で、1行でかけることになにか価値あるの?

610:nobodyさん
18/07/22 22:29:44.80 .net
ないよ。正確にいうと関係ない。
一行で書くためにあるものじゃないからね。三項演算子は。

611:nobodyさん
18/07/22 22:34:07.28 .net
なんで話の流れと関係ないのに、三項演算子だけの特権でもないのに、ワンライナーで書けるってことをわざわざ書いたの?

612:580
18/07/22 22:39:48.38 .net
ん?俺がワンライナーとか言ったのがまずかったのか?
普通三項演算子はワンライナーで書くもんだからそう言っただけなのだが
別にそこはメインじゃないし主題ではない
?:という2つの演算子しか使っておらず、間違い探しをするようなものでもなく
何がわかりづらいのか理解できないって話をしただけ
ちなみに会話してんの俺じゃないぞ・・・

613:nobodyさん
18/07/22 22:40:24.80 .net
少ない行がいいなら最期に&#165;rと&#165;nを置き換えて1行にすればいいやんm

614:nobodyさん
18/07/22 22:44:10.15 .net
>普通三項演算子はワンライナーで書くもんだから
俺ルール広めようとしないでくれない?

615:580
18/07/22 22:49:21.00 .net
主観ではあるけど
googleで画像検索したりしても、実際ワンライナーが多数派じゃない?
そもそもネストするようなケースじゃほとんど使われないし
これも主観だけど感覚的に正しいと思う

616:nobodyさん
18/07/22 22:53:20.12 .net
改行とインデントで整えないなら1層ですら可読性低いんだけど
しかし、なんで一行・1行などと書かないでワンライナーって書くのかね
文字数多いじゃん検索用ってか

617:nobodyさん
18/07/22 23:10:04.34 .net
if (age < 18) {
  if (gender == 'male') {
    title = 'Master';
  } else {
    title = 'Miss';
  }
} else {
  if (gender == 'male') {
    title = 'Mr';
} else {
  title = 'Ms';
}
if (age < 18) {
  title = (gender == 'male') ? 'Master' : 'Miss';
} else {
  title = (gender == 'male') ? 'Mr' : 'Ms';
}
title = (age < 18) ? (gender == 'male') ? 'Master' : 'Miss' : (gender == 'male') ? 'Mr' : 'Ms'

618:580
18/07/22 23:14:53.52 .net
可読性の定義は人によってさまざまだけど
長ったらしいのはかえって可読性が下がると俺は思う
>>601では真ん中が一番読みやすい

619:nobodyさん
18/07/22 23:16:56.10 .net
ビットにしてswitchしよう

620:580
18/07/22 23:19:58.63 .net
一番上がおかしかった
if (age < 18) {
  if (gender == 'male') {
    title = 'Master';
  } else {
    title = 'Miss';
  }
} else {
  if (gender == 'male') {
    title = 'Mr';
  } else {
    title = 'Ms';
  }
}
やっぱこれは俺にはあってないな

621:nobodyさん
18/07/22 23:20:56.62 .net
一番下もおかしいんだが
php書けないのか

622:580
18/07/22 23:25:42.57 .net
>>605
これPHPじゃないし
三項演算子の可読性について、stackoverflowで引き合いに出されてたコード
PHPは評価の仕方が他の言語と違うので
そもそも一番下のようなコードは書いたことがない

623:nobodyさん
18/07/22 23:33:07.26 .net
>>602
同意
ネストしないなら3項演算子がシンプルでよいがネストさせるヤツは死ねと思ってしまう

624:nobodyさん
18/07/22 23:37:49.88 .net
俺Pythonistaだけど、{}が読みづらい原因だから、こうするといいよ。
if ($age < 18)
  if ($gender == 'male')
    $title = 'Master';
  else
    $title = 'Miss';
else
  if ($gender == 'male')
    $title = 'Mr';
  else
    $title = 'Ms';

625:nobodyさん
18/07/22 23:43:15.32 .net
PSR-2>呼んだ?

626:nobodyさん
18/07/22 23:59:30.06 .net
$titles = [
 'male'  => [ 'u18' => 'Master', 'other' => 'Mr' ],
 'female' => [ 'u18' => 'Miss',  'other' => 'Ms' ],
];
$age_category = ( $age < 18 ) ? 'u18' : 'other' ;
// もしくは
if( $age < 18 )
 $age_category = 'u18';
else
 $age_category = 'other';
$title = $titles[ $gender ][ $age_category ];
一定以上複雑なときはこうしておくかな
判断が増えたとき処理構造を大変更したくないから
というか、性別やu18かどうかをフラグで持っておくのが普通だと思うが
三項演算子だとすごく短い2つの文字列どちらか選択とかならまだいいけど
関数や式が絡むと : の区切りがわかりづらくなるんだよな

627:nobodyさん
18/07/23 00:00:45.23 .net
実務的にはそれぞれ属性を自分のobjectに聞いて、って感じのが多いかな

628:nobodyさん
18/07/23 00:14:43.72 .net
stackoverflow探してみたけどそれっぽいのが見つからないわ

629:nobodyさん
18/07/23 00:48:54.19 .net
URLリンク(www.quora.com)
stackoverflowではないな

630:nobodyさん
18/07/23 01:16:15.86 .net
echo 'こんにちは、' . ($name && strlen($name) > 0) ? trim($name) : "anonymous" . "さん";
$name = ($name && strlen($name) > 0) ? trim($name) : "anonymous";
echo "こんにちは、{$name}さん";
var = a ? b : c;を徹底して、
それ以外を組み込んだ、上のような使い方をしなければ問題ないと思う。
Viewには処理済み変数のみを埋め込むのを徹底すればいい。

631:nobodyさん
18/07/23 01:22:26.76 .net
表示名の場合はだいたい
$nameを先に'anonymous'で初期化しておいて
セッションがあってDBから取ってくる等の時に$nameを上書きする
ってやるよね

632:nobodyさん
18/07/23 01:27:12.91 .net
そだねー

633:nobodyさん
18/07/23 01:27:21.03 .net
条件2つ処理する2x2の構図でも
条件1の結果によって条件2の式自体が変わる場合は
Balancedケースでも可読性落ちるよね

634:nobodyさん
18/07/23 01:44:19.98 .net
三項演算子を使うときに可読性が落ちない条件を突き詰めていくと
一重であることと
代入される部分が簡潔で統一されてることのほかに
条件部分が簡潔で統一されてることも必要だと思うんだ
18<=ageのときは性別にunknownやnewhalfが追加されたら、途端に難解になるし
age<18ではgender==='male'だけど18<=ageではchecktitle(age,gender)の戻り値だったりすると、わりとめちゃくちゃ

でもそうするとvar=(a)?a:20;みたいな条件になりがちになって
短絡評価のわかりにくさの話に戻るんだよね
$var = (expr) ?
  value1 :
  value2 ;
みたいな書き方だったら多少複雑でもいい

635:nobodyさん
18/07/23 01:46:11.40 .net
簡潔じゃないと1重なのか2重3重になってるのかパッと見てわからないからな
その辺ifでは迷ったことがあまりない

636:nobodyさん
18/07/23 06:55:36.75 .net
> 18<=ageのときは性別にunknownやnewhalfが追加されたら
そこまでくると>>603が良さそう
1(under18)
2(over18)
4(male)
8(female)
16(unknown)
32(newhalf)
ちなみにnewhalfじゃなくて
shemaleとかladyboyが正しいおっぱいおちんちんMAN

637:nobodyさん
18/07/23 07:10:51.79 .net
なんだそれは
ageもgenderも1つに閉じ込めてbit演算するならunder18/over18は下位1bit、genderは以降上位bit、ってとこだろう
maleやfemaleを両方選択可能の並存状態にしてどうするんだよ
2値が1種、4値が1種なら3bitで済むだろう

638:nobodyさん
18/07/23 07:29:32.52 .net
そもそも話題が>>618の趣旨とは離れることだが、1点付け加えると
条件がどう動くかわからず拡張性を考えるのであれば
愚直にifやswitchで構造化するか
>>610のように1つ1つ条件を絞れば引き当てられるtableを作るのが筋だろう
ageの判定処理は完全固定と断定できないだろうし
age自体を現在日付とユーザ誕生日設定によって動的に取得させることになる可能性がある
フラグ化してのbit演算では柔軟性・拡張性に乏しい、全然良さそうじゃない

639:nobodyさん
18/07/23 09:03:36.27 .net
えせグラマ

640:nobodyさん
18/07/23 10:47:42.67 .net
$age+$genderでやれば拡張も容易

641:nobodyさん
18/07/23 11:17:26.62 .net
elseifを使えばネストなく簡略化できる
sql のselect case見たいな表記できる
if ($age < 18 and $gender == 'male') {
 $title = 'Master';
} elseif ($age < 18){
 $title = 'Miss';
} elseif ($gender == 'male') {
 $title = 'Mr';
} else {
 $title = 'Ms'
}

642:nobodyさん
18/07/23 11:34:04.40 .net
$title = [
 5=>'Mr', 6=>'Master',
 9=>'Ms', 10=>'Miss',
 17=>'Mr/Ms', 18=>'Master/Miss',
 33=>'Mx', 34=>'Mx'
];
switchは伸びがちになるしテーブル作るより遅くなるけど
可読性の面では
case GENDER_TS+AGE_UNDER18:
case GENDER_TS+AGE_OVER18:
 $title = 'Mx';
みたいに出来るから考えようによってはいいかもね

643:nobodyさん
18/07/23 11:39:51.37 .net

配列も出来るらしい
$title = [GENDER_TS+AGE_UNDER18 => 'Mx'];
みたいに
知らなかった

644:nobodyさん
18/07/23 11:43:37.99 .net
>>610と比較して1次元になるだけでメリットはないな

645:nobodyさん
18/07/23 11:48:06.16 .net
条件使わなくて済むよ
下準備も大変になるけど

646:nobodyさん
18/07/23 12:06:46.43 .net
>>625
ぱっと見何やってるのかよくわからない
三項演算子もそうだけど結局読む人のレベル次第だな

647:nobodyさん
18/07/23 14:58:02.10 .net
>>629
三項演算子だと処理が煩雑になるほど記述が鬱陶しくなるか難しいかのトレードオフじゃん

648:nobodyさん
18/07/23 15:11:43.17 ci3EIyjd.net
Pythonにすれば良い
$bar = $fooVal == 10 ? $trueVal : $falseVal
の代わりに
$bar = $trueVal if $fooVal == 10 else $falseVal
みたいに書けてちょー分かりやすい

649:nobodyさん
18/07/23 15:14:29.70 .net
ちょー(笑)

650:nobodyさん
18/07/23 15:19:01.63 .net
phpどころかビット演算というプログラムの基本すら知らない奴が居付いている

651:nobodyさん
18/07/23 15:21:44.19 KYWJiLD7.net
関数型言語では同じ変数に何度も代入するって事は基本やらない
明示的に値を変更可能な変数にすれば再代入可能だが
乱用すると関数型使う意味が無くなる
なぜ再代入を避けるかって言ったら
理由は色々あるが
一番はバグの原因になるから
ScalaにもPythonのような式扱いのif文があったり
switchが無く代わりにmatchを使うのもそれが理由

652:nobodyさん
18/07/23 17:34:07.95 .net
ビットフラグ立ててるだけでビット演算をしてるわけじゃないからな

653:nobodyさん
18/07/23 18:00:32.66 .net
初見のわかりやすさってのはシンボルか単語かの違いってのが大きいのだろうけど
みんな大嫌い正規表現だって慣れれば大したことはない
三項演算子はネスト出来ることが問題なのであってネストしなければ問題はないのである

654:nobodyさん
18/07/23 18:05:34.79 .net
正規表現わけわかんないよ
慣れるしかないんだろうね

655:nobodyさん
18/07/23 18:17:28.84 .net
どこまでが条件部かどこが区切りか
誰が見ても即座にわかる単純明快なケース限定ならいいかもね
それかキッチリ改行入れること

656:nobodyさん
18/07/23 19:16:40.02 .net
改行が減る=行数ベースの料金が下がる
文字数が減る=文字数ベースの料金が下がる

657:nobodyさん
18/07/23 19:38:29.41 .net
プログラムがより単純化するのは流れであって
コード単価あげるか 成果物に対して報酬をもらえば�


658:ィk



659:nobodyさん
18/07/23 20:20:18.09 .net
正規表現はperl時代に超覚えてマスターした気になっていたが、
PHPやJavaScriptだと微妙に違ったり後方参照も違ったり、
なんか1日中悩んでたりする。

660:nobodyさん
18/07/23 21:10:25.52 .net
>>642
言語で微妙に違うんですね
苦手です

661:nobodyさん
18/07/23 21:41:55.31 .net
>>643
慣れの問題だと思います。
PCREなのに使いこなせない自分が情けない…
preg_matchすら悩むw

662:nobodyさん
18/07/25 20:02:42.21 .net
parse_ini_fileの結果を取得するときに、
セクション名そのものを取得したい場合はどう書いたら良いでしょう?

663:nobodyさん
18/07/25 20:27:43.62 .net
2番目の引数にtrue設定すればいいんじゃね

664:nobodyさん
18/07/25 21:42:20.18 .net
ありがとうございます。
それは知っていたんですが、そういう次元じゃなかったです。
変数名をtypoしていただけでしたw
お騒がせしました…

665:nobodyさん
18/08/01 15:19:07.84 .net
typo typer

666:nobodyさん
18/08/01 16:33:29.44 .net
ペチペスト

667:nobodyさん
18/08/02 09:21:17.41 .net
ペチパン

668:nobodyさん
18/08/03 08:21:39.65 .net
Windows版のPHP7(XAMPP)で、posix関数を使うにはどうしたら良いですか?
今は特に何もせずにデフォルトインストール状態で、
関数がundefinedエラーになってしまいます。

669:nobodyさん
18/08/03 08:30:42.36 .net
URLリンク(php.net)
>注意: この拡張モジュールは Windows 環境では利用できません。
どうしたら良いかというと、VirtualBoxでWindowsの上にLinuxを乗っける、などしか手はないかと

670:nobodyさん
18/08/03 09:00:23.87 .net
了解です。ありがとうございました!
OS判定して、Windows版の時はその処理はスルーして目を瞑ることにします。
PHPはやっぱりLinuxの方がいいですね。

671:nobodyさん
18/08/04 14:46:44.62 .net
URLリンク(php.net)
この辺使ったりshell_exec系使ってcmd叩けば似たようなことはできるんでないの

672:nobodyさん
18/08/05 09:24:57.34 .net
ActiveRecodeのORMはたくさんありますけど
パフォーマンスが特に優れてるおすすめのものありますか?
処理性能重視したらPDOでSQLゴリゴリ書いたほうがいいのでしょうけど
いまいち自分のSQLに自信がもてないのでSQL書くのは減らしていこうと思っています

673:nobodyさん
18/08/05 10:18:40.81 .net
早過ぎる最適化

674:nobodyさん
18/08/05 13:09:36.79 .net
どれでも大差ないんじゃね?
一番メジャーなのを使っておくのが後々のため…

675:nobodyさん
18/08/05 15:07:22.88 .net
DB設計を確認したほうがパフォーマンス改善効果見込めるのでは

676:nobodyさん
18/08/05 15:07:42.32 .net
俺がそうなんだけど、抽象化がたりないとSQLベタ書きDAOパターンになるよね。

677:nobodyさん
18/08/05 22:12:43.12 .net
元DB屋的にはORMで結合グチュグチュやるより
出来るところはビュー作っといた方がいい希ガス

678:nobodyさん
18/08/05 22:36:24.70 .net
DB担当に流せる仕事は最大限DB担当に流してしまえという風潮
合理的だと思う

679:nobodyさん
18/08/06 19:58:51.12 .net
composerってなんでjsonわざわざ書くの?それが主流みたいだけど
installコマンドは一応用意されてるんだよね?
なんか理由あるんですか?

680:662
18/08/06 20:00:59.88 .net
installじゃなくてrequireか
composer require 'namespace/some_package.3.2.1'

681:nobodyさん
18/08/06 20:38:35.03 .net
流行り
かっこいい気がする
OSSのフロントエンドはこんなノリ

682:nobodyさん
18/08/07 09:57:45.32 spyDBr61.net
どっちもできることにこしたことはないと思うが

683:nobodyさん
18/08/07 10:39:10.39 .net
質問失礼します。
2つサーバーを試行錯誤しながら立てました。
サーバー①には Environment で USER と HOME の設定がありません。
サーバー②には phpinfo で Environment の USER と HOME が設定されているようでした。
--------
USER hoge
HOME /home/hoge
--------
Environment の設定している場所を特定したいのですが、どこを見たら良いでしょうか?
/etc/httpd/conf/httpd.conf
/etc/sysconfig/php-fpm
/etc/sysconfig/httpd
上記のファイルは調査しましたが hoge が見当たりませんでした。
よろしくお願いします。

684:nobodyさん
18/08/07 10:44:03.07 .net
そのapacheを起動した人が手順を知らないか間違えてるんだと思うぞ。
環境変数が付いてる方の起動方法を間違えてる。 
個人のプロセスじゃないのに、個人の環境変数を引き継いでどうすんだよw
serviceコマンドとか使わずに、いきなりhttpdを起動したんじゃないかと。

685:nobodyさん
18/08/07 11:11:49.87 .net
> Environment の設定している場所を特定したいのですが、どこを見たら良いでしょうか?
hogeユーザのHOMEディレクトリ指定はApache httpd側ではなくOS側
/etc/passw d
たぶんLinuxだと思うけど、ならここに書かれてる
ただし、わかってるなら直接編集してもいいけど通常はコマンド経由で変えるもんだと思う

686:nobodyさん
18/08/07 11:17:25.39 .net
>>667
>環境変数が付いてる方の起動方法を間違えてる。 
>個人のプロセスじゃないのに、個人の環境変数を引き継いでどうすんだよw
別に$HOMEが設定されてること自体はあんまり問題じゃないかも
個人の環境変数を引き継ぐ、というのも……じゃあ誰権限で実行すんの?ってことだし
"service httpd"等で起動していても、誰かの権限で動くのだから
※Windowsだとサービス化してればlocalService権限だっけ
んなことよりデーモン起動ユーザのシェルを/sbin/nologinにしとこう

687:nobodyさん
18/08/07 11:26:09.24 .net
どんなユーザ権限で実行しているか等は基礎の基礎
起動ユーザ権限のことを知りたければhttpd.confのUserとGroupの説明をよく嫁そして100%理解しろ

688:nobodyさん
18/08/07 11:38:33.77 .net
かの有名なqmailの作者であるdjb様は、
env - /path/to/bin
のような起動方法を推奨してたぞ。
って今時そんな人知らんかw

689:nobodyさん
18/08/07 11:43:59.63 .net
Linux serviceコマンド 環境変数
これでググっておけよ。
環境変数を意識してないと超レアだが意図しない結果に繋がる可能性はある。

690:nobodyさん
18/08/07 11:48:30.16 .net
単純にchkconfig/serviceで動かすようにしたところ意図せずroot権限で動かしてしまってて書いた.phpの穴突っつかれて以下略
こわいこわい

691:nobodyさん
18/08/07 11:55:14.18 .net
httpdをrootで動かすにはコンパイルオプションが必要…

692:nobodyさん
18/08/07 12:00:18.77 .net
phpのコンパイル直後のmake testに疑問を感じて早数年
でも毎回ちゃんとやってちゃんと結果確認してる

693:nobodyさん
18/08/07 12:03:09.00 .net
>>668 >>669
ワロタ

694:nobodyさん
18/08/07 12:04:52.52 baYuORhx.net
>んなことよりデーモン起動ユーザのシェルを/sbin/nologinにしとこう
なんで?
起動ユーザはrootで、nologinにするのはWorkerプロセスのユーザでしょ。
ApacheにしろNginxにしろ、そういう風に作られてるわけで。
単一で動くタイプとごっちゃにしたらいかんよ。

695:nobodyさん
18/08/07 12:13:53.51 .net
>>677
全面的にすまんかった
> nologinにするのはWorkerプロセスのユーザ
こっちを意図して「デーモン起動ユーザ」と書いてた

696:nobodyさん
18/08/07 12:39:41.49 .net
chsh -s /sbin/nologin root

697:nobodyさん
18/08/07 12:44:15.65 .net
root router

698:nobodyさん
18/08/07 14:28:42.07 .net
突然思い出したが、
むかーしのFre


699:eBSDってnologinの中身がexitって書かれてるシェルスクリプトだったなw



700:nobodyさん
18/08/07 14:33:20.67 .net
それで機能しちゃうもんなのか

701:nobodyさん
18/08/07 17:00:47.53 7Qa/G72W.net
/bin/falseとかでもええんやで。

702:nobodyさん
18/08/07 17:39:43.15 .net
特に理由もなく/dev/nullが好きだった時期があった

703:nobodyさん
18/08/07 19:04:34.22 .net
UNIXアカウント=メアドという古き良き安全なインターネットの時代は、
/usr/bin/passwdをログインシェルに設定して、
パスワード変更はtelnetで繋ぐとかもあったな。

704:nobodyさん
18/08/07 22:31:33.33 .net
>>666
php-fpmならpool.dは見たのかな
php-cgiでsuexecやmod_suphpならユーザー権限になって当然だし
>>667
あなたの環境では非特権ユーザーがポート80をバインドできるようにlibcapを使っているんですね
それはあまり普通じゃないので、人と話すときの前提にしない方がいいですよ
>>671
バーンスタイン先生はEd25519でSSHやTLS界隈じゃバリ現役

705:nobodyさん
18/08/08 01:27:35.83 .net
phpで、 $var = 'text'; // ←これ、この代入を検知して代入直後に何らかの処理を自動発動させる、ってこと、できる?
ループ中で逐一$varをチェックする、というようなのではなく

706:nobodyさん
18/08/08 01:38:57.92 .net
その代入文の次の行に処理書けばいいだけでは?

707:nobodyさん
18/08/08 03:47:12.65 .net
オブジェクトにしてセッター通す

708:nobodyさん
18/08/08 07:06:46.06 .net
>>686
無理してるなあ

709:nobodyさん
18/08/08 10:39:23.28 8EBBnoJ7.net
>>686
qmailとかなんとかdnsとかdaemontoolsとか見事に全部放り投げたなw
あんだけ他攻撃してたくせに。

710:nobodyさん
18/08/08 15:42:04.42 .net
PHPマニュアルってすげー優秀だなー
セキュリティーで嫌煙されてるがCHMが用意されてるのがでかい
これでネットもつながらない山の中でもPHPならスムーズに開発ができるわ

711:nobodyさん
18/08/08 15:53:58.68 .net
CHMってなんだと思いかけたけど
あれかhtmlヘルプファイルの.chmか
用意されてるの知らんかったサンキュー兄貴

712:nobodyさん
18/08/08 16:53:50.96 .net
>>693
おうよブラザー
ダウンロードしたCHMはセキュリティ厳しくなっててそのままじゃ見れないから
プロパティ開いてブロック解除忘れずにね

713:nobodyさん
18/08/08 17:11:31.35 .net
>>691
しかし、あの考え方はその後に大きな影響を与えたと思う。
Postfixなんてのが良い例かと…
攻撃という意味では、日本のqmaiサイトを運営してた某教授の方が酷かったw

714:nobodyさん
18/08/08 19:06:25.42 .net
>>691
public domainにしてくれたのはありがたかった
qmailはまだまだ現役で運用してるとこ結構ある
djbdnsはパッチなしだと来年死ぬけどね
>>695
大岡山かw

715:nobodyさん
18/08/09 02:14:42.91 .net
djbdns使ってないからdjbdnsが来年ってなんだろうと思って 2019年 djbdns ぐぐった
2番目に出てきたURLのタイトルが「2019年入籍日おすすめランキング」だった
終わってんな

716:nobodyさん
18/08/09 02:42:28.01 .net
わたしもqmailまだ使ってる

717:nobodyさん
18/08/09 08:04:46.57 .net
daemontoolsってCD/DVD/BDとかの仮想ソフトじゃなかったっけ
って思ったら全く関係なかったでござる

718:nobodyさん
18/08/10 17:13:37.72 .net
ドラえもん道具?

719:nobodyさん
18/08/10 20:47:


720:36.56 ID:???.net



721:nobodyさん
18/08/11 19:13:48.05 .net
djbphp

722:nobodyさん
18/08/11 19:58:51.69 .net
>>695
M野先生?准教授止まりじゃなかった?

723:nobodyさん
18/08/11 22:30:59.56 .net
net-qmail

724:nobodyさん
18/08/12 04:37:30.63 .net
>>695
あの人ちょっとゴリホーモ入っとるよな

725:nobodyさん
18/08/12 12:00:04.80 .net
PHPのネタないの?

726:nobodyさん
18/08/12 16:05:25.58 .net
ネタは無いがphpとシェルや他言語とのバッチの書きやすさの違いを聞いてみたい

727:nobodyさん
18/08/12 16:48:11.26 .net
>>707
慣れとしか言えないと思う
バッチファイルはphpで書いて、シェルからアクセスするというやり方にしてるわ

728:nobodyさん
18/08/12 17:55:27.72 .net
#!/sbin/php

729:nobodyさん
18/08/12 20:32:52.06 .net
正直マオリ語か何かにしか思えないperlで書かれたバッチも、慣れれば都なのだろうか

730:nobodyさん
18/08/12 20:36:16.09 .net
そうではないから廃れたんやぞ

731:nobodyさん
18/08/12 21:12:13.44 .net
prelは正直、割とマジでキツイ
文法が違いすぎるから、しばらく離れてるとどう読んで良いのかがわからない

732:nobodyさん
18/08/12 21:27:47.32 .net
perlはプリミティブなんだよな。
やりたい事を細かく制御して書かないといけない。
でも文字列処理だけは感心する。

733:nobodyさん
18/08/12 21:51:00.56 .net
phpの話じゃなくてperlの話になってるじゃないですか!

734:nobodyさん
18/08/12 21:56:40.87 .net
個人的にはPHPの方が気楽に書けて好きなんだけど, 現実的にはPythonで書くのがいいんだろうなぁ
PHPとPythonの共通点はbattery includedなあたりか

735:nobodyさん
18/08/12 22:33:57.36 .net
phpとperl、cgiは一昔前は選択性みたいな感じだったのにね
いつの間にやらphp一辺倒になってた
>>715
一度pythonでサイト作ってみたけど本気でめんどくさかった
phpがもてはやされる理由がよくわかった

736:nobodyさん
18/08/12 22:40:19.13 .net
ちょっと離れるけどバッチもWebもnodeであれこれやってみたことがあった
くそめんどかった

737:nobodyさん
18/08/13 00:07:08.75 .net
>>710
鯖管あたりは配列とループ使うのにシェルスクリプト代わりにperlって人多い

738:nobodyさん
18/08/13 07:03:51.93 .net
言語的な扱いやすさを取るか環境的な扱いやすさを取るかの天秤
そういう意味ではperlはありでもpyは意味がわからないo

739:nobodyさん
18/08/13 13:44:45.42 .net
なぜPythonはダメ?
いずれ何でもかんでもPythonになる可能性すら秘めているのに…
まあ、互換性は不安あるけど。
Perlは下位互換が優秀だったからなあ…

740:nobodyさん
18/08/13 14:25:38.56 sZ92TvgJ.net
配列とループw
PerlもPHPもPython他の足元にも及ばんだろ。
ちょっとしたデータ処理しようと思ったときに、絶対に選ばない2大言語。

741:nobodyさん
18/08/13 15:45:58.02 zFMgiLTA.net
適材適所だし、どっちが上とかないしょ
PHPが未だにこれだけ使われてるしね

742:nobodyさん
18/08/13 16:08:50.29 .net
>ちょっとしたデータ処理
環境構築を考えれば、こんなもん普段使ってる言語一択だろ
バカか

743:nobodyさん
18/08/13 16:41:01.31 .net
自分のとこだけで動かすなら普段使いの言語だが, 他環境で動かす可能性があるならLSBに入ってるPerlかPythonだなー

744:nobodyさん
18/08/14 01:01:33.04 .net
>>721
わかってないねぇ
標準インストールで入ってる可能性がダントツで高いのがperlなんだよ

745:nobodyさん
18/08/14 05:00:24.02 .net
連想配列をjson_encodeでjsonにした際、「/」が、エスケープ処理されておらず困っているのですが
対処法はありますか?
オプションにJSON_UNESCAPED_SLASHESを指定しなければ、エスケープされるような記載を見掛けるのですが・・・
PHPバージョンは7.1です

746:nobodyさん
18/08/14 06:07:12.85 .net
手元の7.2.1でjson_encode('test/test')とすると、test\/testが返ってくる
json_encodeの第二引数を明示的に 0 にしてみるとか
事前に(必要に応じて再帰的に)自分で/を\/にするとか

747:nobodyさん
18/08/15 08:05:27.87 qP4cYvWG.net
デフォルトがエスケープありになってるのか。

748:nobodyさん
18/08/17 14:43:40.86 .net
ログインシェルをPHPにしたらオワタ

749:nobodyさん
18/08/17 14:54:08.54 .net
お前の頭がインタラクティブ

750:nobodyさん
18/08/17 22:51:59.09 .net
マルチメディアに対応したかったんだよ…

751:nobodyさん
18/08/18 01:34:32.30 .net
>>727
すみません。勘違いしていました。
「/」ではなく、U+2044というFRACTION SLASHを記載して、
それに対してエスケープされないと嘆いてました。

752:nobodyさん
18/08/18 19:23:26.94 .net
言われてるほどシェル言語としてだめなわけじゃない
あきらかにshやbashよりは使いやすいだろう

753:nobodyさん
18/08/19 12:23:47.75 .net
win10のie11で外部pcの共有フォルダに置いてるpdfをphp関数で表示したいのですがどうすればいいでしょうか?
fopenのハンドルも取れず、readfileでも無反応です
ブラウザからファイルパス入力だと表示できます

754:nobodyさん
18/08/19 12:25:45.74 .net
ブラウザ関係なくね?
他のブラウザなら思った通りになるの?

755:nobodyさん
18/08/19 12:32:11.81 Il2RNG8O.net
何やりたいかさっぱり分からん
質問するなら他人にちゃんと伝わるように書け

756:nobodyさん
18/08/19 12:36:15.56 .net
NASみたいな共有フォルダにあるファイルにアクセスしたいってことでしょ…
PDFかどうか以前に、他のファイルも試してみろと。
PHPはなにのサーバーで動いていて、
バージョンはいくつなのかとか環境を書けよ。
ブラウザとかどうでもいいしw

757:734
18/08/19 12:37:22.17 .net
vistaのie9だとできてたんですが
最新環境だとできないのです

758:734
18/08/19 12:38:27.17 .net
apache2.2 php4.3です

759:nobodyさん
18/08/19 12:38:35.98 .net
ふーん…

760:nobodyさん
18/08/19 12:40:22.71 .net
最新って何?
XAMPPとか使っててPHP 7.2.xとか?

761:734
18/08/19 12:42:00.39 .net
最新と言うのはOSとブラウザがってことです 64bitです vistaは32bitです
phpとapacheはそのままです

762:nobodyさん
18/08/19 12:47:01.68 .net
ここまでのやりとりで、教えるのは無理とわかったから他に行きな。
まともに質問すらできないんだから教えようがない。

763:nobodyさん
18/08/19 13:01:24.89 .net
初心者お断りスレだしなー

764:nobodyさん
18/08/19 14:34:59.94 Il2RNG8O.net
まずはログとか見ろよ
ログに何も出てないなら何か根本的に間違ってるってこと

765:nobodyさん
18/08/19 14:49:41.25 .net
俺の頭髪も根本が根本的に間違ってる

766:nobodyさん
18/08/19 17:12:58.11 kRBINjI+.net
PHPのsystem()でmysqldumpを使ってテーブルごとのsqlファイルを出力して、
それを圧縮して保存するプログラムを作った。
直接ブラウザでアクセスしてプログラムを動かすと正常に圧縮ファイルが保存される。
しかしcronで動かすと、全く空欄のsqlファイルを圧縮したものが保存される。
私には、全く原因が分からず修正できません。
原因はどういったものが考えられますでしょうか?

767:nobodyさん
18/08/19 17:17:02.88 .net
cronでやらないで、CLIで一度実行してみたらいい
権限関係でねーのと思う

768:!ninja
18/08/19 17:18:09.56 .net
ブラウザの裏で動いているPHPのユーザー権限や、
crontabのユーザー権限や、
ファイル類のパス、
実行カレントディレクトリ等は一致してますかね?

769:nobodyさん
18/08/19 18:18:48.73 Il2RNG8O.net
cronでありがちなのはファイルパスの指定ミス
実行プログラムやファイルの指定を相対パスで書くと事故ること多し
簡単に対応するなら全部絶対パスで書け

770:747
18/08/19 19:28:59.75 kRBINjI+.net
皆さん、ありがとう御座います。
まだ解決は出来てないのですが、調べるべき方向は見えてきました。

771:nobodyさん
18/08/19 19:31:32.86 .net
実行権限の違いじゃね
webサーバはapache で
cron はcrontab -eで登録したユーザー
とか

772:nobodyさん
18/08/19 21:13:04.70 .net
id > /tmp/log
pwd >> /tmp/log
env >> /tmp/log

773:nobodyさん
18/08/25 11:11:15.78 mbihd+U1.net
composerのclassmap-authorativeの最適化
場合によっては遅くなるってマジ?
速くなる場合もあるが以下の条件では遅くなるって
・依存ライブラリが多い
・リクエストで実際には使わないクラスが多い
・ファイルシステムからの検索が速い
最適化を有効にすると
読み込めるクラスを全部PHPの配列に入れるから
逆に速度が落ちる場合もある
opcacheが有効だとファイルシステムが遅くても緩和されるし
PHPファイルが更新されないならタイムスタンプのチェックも無効にすれば
PHPファイルを見る必要無くなるね
URLリンク(blobfolio.com)
APCU使った最適化については書いてない

774:nobodyさん
18/08/25 18:38:08.55 .net
真実かどうか聞きたいのか、それとも自分で確認した事実を書きたいのか

775:nobodyさん
18/08/25 19:07:29.36 yUon0wwz.net
どうしても知りたいなら自分でベンチ取ってみるしかないだろう

776:nobodyさん
18/08/25 19:26:31.29 .net
環境のせいで多少遅ってるかもしれない可能性を確認するよりも
コードを見直したほうがずっと早く改善できそう

777:nobodyさん
18/08/26 09:42:55.24 nAEEME22.net
こちらで質問させてください
classの必要性がいまいちわからないんですが、普通に自作関数を使うのとどう違うんでしょうか?

778:nobodyさん
18/08/26 10:00:36.02 .net
classと同じようなことの実現は関数・objectを駆使すればたぶん無理ではない
けど非常にめんどい
継承とか再利用なんかはどうしようと悩む

779:nobodyさん
18/08/26 10:00:45.66 .net
>>758
一人で作るプロジェクト、しかも関数だけだと特に変わらないね
消費税の計算するだけなら別にどっちでもいい。関数にもしなくて良い

今はまだ分からないかもしれないけど、
コンストラクタ、ガベージコレクション、トレイトなど便利な機能が山程ある
其内色々な機能を使うようになると思うので、とりあえずclassに慣れておいた方が良い・・・としか言えない

780:nobodyさん
18/08/26 10:01:30.69 .net
>>759
継承の場合は丸ごとコピーになるね
で、一箇所かえたら両方変更する必要があり・・・とどんどん煩雑になる

781:nobodyさん
18/08/26 10:06:53.90 .net
>>761
コードをコピペしたらもうそれは継承ではなくなってしまうな
関数名を扱うことでコールバック的にやろうとすれば、そこはもう地獄
うーむ

782:nobodyさん
18/08/26 10:10:44.53 .net
とりあえずGCはclassに限った話じゃなくね?
関数内でも一応無関係ではないはず
インスタンスに対するGCは
関数主体の場合だと関数内の変数や関数外の変数に対するGCが当てはまるわけで

783:nobodyさん
18/08/26 10:25:52.22 .net
あまりclassがうんぬんを意識しないで使ってるものを考えたらわかりやすいかも
PDOとかExceptionとか

784:758
18/08/26 11:12:05.68 nAEEME22.net
独学で基礎的なことだけ覚えたんですが、わりと小規模な会員機能付きのブログエンジンやデータベース系のサイト程度なら作れるようになったんですが(プロから見たら多分穴だらけ)、クラスの必要性が分からず全て関数作ってやってました
コードの使い回しにしても関数にしておいて1度呼び出しておけば何度も使えるし、継承にしても関数内で別の関数を呼び出したりして
直感的にも使いやすかったのでそうしてるんですが、今後もっと複雑な事をやろうとするとやっぱりクラスに慣れて使った方がいいんですかね
関係ない話ですが、人のコードとか見ると多次元配列の回し方とか他にもいろいろ人と違うし自分の脳の作りを疑ってしまう。。


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