[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/03 04:20 / Filesize : 272 KB / Number-of Response : 1009
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【PHP】下らねぇ質問はここに書き込みやがれ 5



1 名前:デフォルトの名無しさん mailto:sage [2016/05/11(水) 21:46:50.27 ID:e/4BOK4y.net]
PHPに関する下らない質問用避難スレです。
まず読むこと【PHPマニュアル】
www.php.net/manual/ja/

前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 4 [無断転載禁止]©2ch.net
echo.2ch.net/test/read.cgi/tech/1457792733/
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

511 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 18:54:08.22 ID:FTbmrFHZ.net]
真っ赤?それは俺のこの手だ

csvや配列で持ってるデータを複雑な条件で検索したいときって
DBに格納するのが一番良いんかね

512 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 19:01:04.88 ID:K+q297Cv.net]
>>508
まだベータだけどLINQ for PHPとか

513 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 19:19:03.12 ID:FTbmrFHZ.net]
>>509
まさにこれなんだけど、こんなんがあって今βってことは
やっぱこれ使う以外だとDBに入れるか自前で検索を組むしかないってことか
ありがとう

514 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 19:44:25.80 ID:K+q297Cv.net]
>>510
PackagistでLINQで探してみたら結構いろいろ実装があるみたいよ
探してみては如何

515 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 20:36:49.27 ID:FTbmrFHZ.net]
>>511
ちょうどいろいろみてた
負荷と頻度考えて検討するわ

516 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 21:59:15.81 ID:MFqaq7Mp.net]
>>512
レポよろ

517 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 12:03:20.74 ID:xob/1tpk.net]
「次のn時m分」を取得するにはどうすればいいですか?

518 名前:デフォルトの名無しさん [2016/06/05(日) 12:03:29.70 ID:zsJffcbc.net]
PHPであらゆることが出来るようになっていくなあ
PHPさえマスターすれば仕事に困らないのさ

519 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 13:07:49.58 ID:9mzbmJB7.net]
>>514
setTimeして戻ってたら+1 dayするとか

function nextHM(DateTime $dt, $h, $m) {
$next = clone $dt;
$next->setTime($h, $m);
if ($next <= $dt) {
$next->modify('+1 day');
}
return $next;
}



520 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 13:24:18.21 ID:xob/1tpk.net]
>>516
datetimeクラスなんてあったんですね
勉強になります
ありがとうございました

521 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 18:26:14.42 ID:Tkwljjf2.net]
>>514
こんな感じで計算をがんばるとか

function nextHM($t, $h, $m)
{
 $dif = date('Z');
 $lt = $t + $dif;
 $nt = $lt - $lt % (24 * 3600) + $h * 3600 + $m * 60;
 if($nt <= $lt) $nt += 24 * 3600;
 return $nt - $dif;
}

$t は UNIXタイムスタンプね。

522 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 19:51:28.22 ID:TM3QCo+d.net]
見ろ、コードがゴミのようだ!

523 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 19:58:07.41 ID:CV0omAn/.net]
これは酷い

524 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 20:12:32.45 ID:Tkwljjf2.net]
え、計算でやろうと思ったらこんなもんじゃね?
UTC からの時差を求め、ローカルタイムに直し、その日の指定時刻を求め、既に過ぎていたら日時なら翌日にし、UTC に直して返す、ということを淡々と並べただけだが。

525 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 20:24:39.75 ID:Tkwljjf2.net]
あ、サマータイムに対応できないとかうるう秒とかどうなってんだって話なら、それはその通りだ。

526 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 23:07:07.91 ID:Iavazaq6.net]
レンタルサーバーを借りたのでチャットができるホームページを作りたいです
その為にwordpressの上でチャットプログラムを動かしたいと考えています
まず何から取り掛かれば良いのか分かりません
どのような知識が必要になり、どう勉強すれば良いか教えて頂きたいです

527 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 23:21:32.87 ID:Tkwljjf2.net]
>>523
wordpress は置いといて、取りあえずチャットを作ってみたら。
定期的にリロードする式のチャットなら簡単だし、サンプルになりそうなのは探せばすぐ見つかるんじゃね。

528 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 00:49:55.95 ID:KjVn6FKA.net]
>>516>>518
まじかよおまえら

529 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 00:53:43.37 ID:O157QY9D.net]
>>518
クソコードに認定します。



530 名前:デフォルトの名無しさん [2016/06/06(月) 01:05:50.44 ID:mm33J6PT.net]
代替案を出さずに煽るだけ
口だけオッサン

531 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 01:21:12.75 ID:BBAYr+Aj.net]
>>525>>526 で意見が割れてるから、この二人が話し合えばいいように思う

532 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 04:46:49.75 ID:J1e3bhcQ.net]
>>527
あのコード見てもこんな事言ってるというだけで、
如何にこのアゲバカが何も知らない低能かという事がハッキリしたな。

533 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 07:47:24.77 ID:OUgENTLv.net]
>>527
ほんそれ

534 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 07:59:47.71 ID:z3VswDq0.net]
>>524
ありがとうございます
とりあえずは簡単でも動くプログラムを目指してみます
サーバーとクライアントのチャットならイメージが湧くんですけど、phpでやるとなるとサーバー側のプログラムだけで実現するんですよね・・
リロードするということはデータベースにログを格納して参照するという認識で合ってい
ますか?

535 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 08:33:02.73 ID:xfsRheZo.net]
>>531
データベースに手を出す前に、まずはプレーンなファイルにログを保存する方が簡単。
直近の100行くらいをそのままテキストファイルに保存しておくとか。
掲示板と変わらないよ。
名前とか色とか時刻みたいなパラメータを個別にフィールド化したいなら行を適当に書式化する必要があるけどね。
例えばこんな感じ。

2016/06/05 23:10:01<タブ>system<タブ>000000<タブ>たろうさんが入室しました<改行>
2016/06/05 23:10:01<タブ>たろう<タブ>FF0000<タブ>こんばんは<改行>
2016/06/05 23:10:06<タブ>じろう<タブ>00FF00<タブ>やあ<改行>

このファイルを file_get_contents するとファイルの中身全部がひとつの文字列として取得できる。
これを<改行>(¥n)で explode すれば行ごとの配列になる。
各行を<タブ>(¥t)で explode すればフィールド毎の配列になる。
新しい書き込みは行ごとの配列に追記し、必要な件数になるように array_splice なんかで調整する。
それを join なんかで配列を文字列化してファイルに保存する。
入力値にタブや改行が含まれている場合はスペースに置換する対策をするとして preg_replace なんかを使う。
ログファイルの読み書きを排他するためには flock を使う。
flock はログファイルそのものに対してやるんじゃなく、別のロックファイルを使うのを勧める。
flock でのロックなら使い終わったロックファイルは消さずに放置していい。

536 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 10:29:24.73 ID:z3VswDq0.net]
>>532
具体的なアドバイスありがとうございます
ファイルの読み書きでも実現できるんですね・・
すごく丁寧に手順を教えて頂けたのでその方法でやってみようと思います
排他制御など考えることも多そうですが、だいぶイメージが湧きました

537 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 10:53:52.96 ID:gg/xefDK.net]
>>531
>データベースにログを格納して参照する

それであってる。リロードに関してはAjaxとか使えばいい。
ファイルもいいが、データベースの方が応用利くのでおすすめだぞ。

538 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 11:07:34.48 ID:SWJRXsGZ.net]
一度DBに慣れるとファイル使うのめんどくさくなるよね

539 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 11:28:46.71 ID:xfsRheZo.net]
いずれはDBにも手を出すことになるだろうが、今の段階ではまずファイルがいいよ。
DBの準備、テーブルの準備、DBへの接続、開発中のデータのメンテナンス、etc. 手始めにチャットをちょろっと作るには少々面倒だと思う。
しかも自前のファイル処理は排他なんかの基礎的な技術も使うちょうどいい題材だと思う。



540 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 12:02:24.68 ID:z3VswDq0.net]
>>534,536
お二人ともありがとうございます
まだphpを学習している段階ですので、ファイルから入りデータベースの利用も考えて拡張していけたらと考えています
MySQLは多少触ったことがあるのですがAjaxとやらはJSで書かれてるみたいなんで心配ですね
当面の間の目標は決まったので取り組んでいきたいと思います

541 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 12:48:53.75 ID:cB/a+aRW.net]
unixタイムスタンプの変数名として$dateを使うのは変ですか?
dateといえば通常日付を持つオブジェクトですが
phpの場合、dateは日付を文字列に直す関数の名前なので
phpの作法としては良くないのか?とも思います
どうなのでしょうか?

542 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 12:56:02.62 ID:i0QOUB1M.net]
お前のシステムのタイムスタンプは日付単位なのか。すげえな。

543 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 13:05:19.30 ID:xfsRheZo.net]
>>538
マニュアルではタイムスタンプを取る関数の引数リストは timestamp となってるから、PHP流にするならそれに従うとか?
おれは近距離で使う場合なら $t とか $tm で済ますな。

544 名前:デフォルトの名無しさん [2016/06/06(月) 14:07:10.33 ID:VZp5fXoT.net]
一度でいいから口だけオッサンの溜め息が出るほどに素晴らしい華麗なプログラムを見せて欲しいものだ
まあ、それが出来ないから口だけオッサンなわけなんだけれどもね

545 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 14:25:14.47 ID:cB/a+aRW.net]
>>539
アスペ乙
>>540
timestampが無難ですね
ありがとうございました

546 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 14:37:23.20 ID:CS8YjhCP.net]
最近の質問者は煽り耐性がないなw

547 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 14:48:20.68 ID:e+TlXwYN.net]
int32だと2038年になったとき困るもんな
そこで64bitPHPですよ

548 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 15:02:04.40 ID:Nu4gS3Qg.net]
>>544
64bitPHPって、動作環境も64必須になるの?

549 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 15:44:32.88 ID:3yfrnV+f.net]
8bit環境でも動くよ



550 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 16:42:19.25 ID:cB/a+aRW.net]
strtotimeは非常に柔軟な解釈をしますが
これはphpが他の言語を参考にしたのでしょうか?

551 名前:デフォルトの名無しさん mailto:sega [2016/06/06(月) 16:44:19.58 ID:m0TG3c4D.net]
Cのexec系のように
自分自身のプロセスを置き換えるプログラムの起動方法はありますか?

552 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 18:43:05.67 ID:BBAYr+Aj.net]
>>548
こないだの人と同じだろうか。
php.net/manual/ja/ref.pcntl.php
とりあえずここを一通り見るとこれからの疑問もいくつか解決できるかと。

553 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 19:06:02.71 ID:J1e3bhcQ.net]
>>543
無いのは耐性じゃなくて羞恥心だ。本当にサルしかいなくなった。

554 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 19:08:37.27 ID:J1e3bhcQ.net]
>>547
マネする事しかできないサルはそんなこと気にしても無駄だ。おとなしく使い方だけ覚えてろ。

555 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 19:10:05.25 ID:J1e3bhcQ.net]
>タイムスタンプの変数名として$dateを使うのは変ですか?

dateの意味が分からないサル、素敵。

556 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 19:17:07.72 ID:J1e3bhcQ.net]
>>549
そのバカは教えてもらっても活用できないから総合的なリンクを貼っても無駄だ。
1から100まで手とり足とり教えてやるだけの覚悟が必要だぞ。

557 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 19:37:24.24 ID:cB/a+aRW.net]
>>549
ちがいますよ
「こないだの人」っていうのはたぶん自分なので

558 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 21:51:51.16 ID:1+sOyhVW.net]
MySQLの画像が表示できずに困っています。


main.php

<img src="gazou.php">


gazou.php

$src = file_get_contents('画像のURL');

echo header('Content-Type: image/jpeg');

echo $src;


これなら正常に動作しますが、gazou.phpでDB接続しただけで画像も表示されなくなってしまいます。


$link = mysql_connect('localhost', 'root', 'pass');


DBに接続できる事は確認済みです。エラーも起きていません。

原因のわかる方がいたらお願いします。助けてください。

559 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 21:52:47.52 ID:1+sOyhVW.net]
すみません。改行がおかしくなってました



560 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 22:00:04.71 ID:O157QY9D.net]
<?php

561 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 22:06:18.56 ID:xfsRheZo.net]
>>555
DB接続と画像取得を同時にやると memory_limit に引っかかるとか?

562 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 22:16:02.69 ID:lRe9eSuk.net]
>>555
いや何でheaderをechoしてんの

563 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 22:20:02.11 ID:xfsRheZo.net]
言われてみればw

564 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 22:22:35.62 ID:1+sOyhVW.net]
>>558
リミット増やして、画像を極小の物にしましたが駄目でした。

>>559
ネットにあった物を丸コピしましたが、echoする必要なかったんですね。
ありがとうございます。

565 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 23:12:41.43 ID:pobwg1Vi.net]
>>561
そんなのネットに落ちてるのか
URL教えてくれまいか

566 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 23:15:55.37 ID:pcbEmQ5n.net]
>>561
DB接続を先にして画像表示を後にしてみれば

567 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 00:05:13.10 ID:lP0BMeFG.net]
>>563
すみません、先に接続してます
画像が表示されなくなるので、DBの画像がおかしいのかと色々調べて結論が
DBに接続したからってよく分からない原因でした
自分以外は起きないようですしDBに画像入れるのは諦めます、ありがとうございました

568 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 00:21:59.49 ID:D2B0dW6i.net]
>>564
レスポンス見るとたぶんなんか文字列が出てるんだと思うよ

569 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 03:50:11.15 ID:T/syB7Ij.net]
こんなんで諦めるのか。



570 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 06:38:58.63 ID:T/syB7Ij.net]
コードの出し惜しみすっからこういう事になんだよ。
細切れじゃなく動かないコードを全部はっつけてれば>>559あたりがとっくに解決してくれたろうに。
勝手に質問して勝手に諦めて、ただのスレ汚しでしかねえよ。

571 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 07:25:50.44 ID:zVxkgyZ2.net]
ブラウザからgazou.phpにアクセスすれば一発でわかるよ
どうせDB接続エラーでも出てるんだろ

572 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 08:59:25.37 ID:bV3Kj9Se.net]
2038年問題とか気にしてるやついるのかよ
もう32bitとか絶滅危惧種じゃねえか

573 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 09:56:02.61 ID:ljS7Rtyf.net]
>>569
というか、今動いている32bit機があと20年は余裕で保守されてしまうのだよ・・・

574 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 10:01:48.24 ID:SWn+auCj.net]
COBOLじゃあるまいし基幹系でPHP採用してるのはキチガイと言わざるをえないしその心配はいらない

575 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 10:08:11.73 ID:EI+C64Wv.net]
今なお動いているphp4のとき書かれた業務システムが普通にある

576 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 10:13:16.18 ID:mGsXs7zb.net]
PHP4使ってるところすらあるでしょ。「保守」はされてないだろうけどw

577 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 10:17:14.37 ID:SWn+auCj.net]
そのとおりだな
放置が正しい

578 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 11:27:15.75 ID:ZIJtMgP1.net]
2038年問題より、1970年問題に当たったことならあるなぁ
生年月日を扱おうとして。

579 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 13:46:49.20 ID:ljS7Rtyf.net]
>>571
思うのはいいけど、現実は厳しいからね



580 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 14:17:17.55 ID:LhHMvfyC.net]
思うのっていうか、PHPのバージョンと開発者の技量に影響受けまくるので、4の頃なら頭おかしいって評価はとても正しい。

581 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 14:52:12.33 ID:Ht3PiVwV.net]
phpをCLIで実行した場合、
$_SERVER['SERVER_ADDR']が設定されていません
マシンのipアドレスを知りたい時には
シェルコマンドを実行して自前で取得するしかないのでしょうか?

582 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 15:06:32.48 ID:TyQk9mVD.net]
>>578
マシンのipアドレスって?

583 名前:デフォルトの名無しさん [2016/06/07(火) 15:38:49.13 ID:57zhvgUm.net]
カレンダーを作るといいらしいね

584 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 15:47:57.36 ID:e+17T4IJ.net]
404や500などのエラー返す時にContent-TypeとResponse BodyってMUST?SHOULD?

585 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 16:33:43.53 ID:LhHMvfyC.net]
>>578

$h = gethostname();
echo gethostbyname($h);

isn't it?

586 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 18:26:48.76 ID:EI+C64Wv.net]
そりゃIP複数持ってるマシンなんざいっぱいあるんだから設定されてなくても仕方なかろう

587 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 18:31:43.94 ID:Ht3PiVwV.net]
>>582
随分すっきり書けるんですね
ありがとうございます

588 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 18:49:34.57 ID:T/syB7Ij.net]
>>584
u are welcome.

>>583
$_SERVER
php.net/manual/ja/reserved.variables.server.php

> The entries in this array are created by the web server.

do u think the web server will say something in cli? stupid!

589 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 20:25:27.97 ID:zVxkgyZ2.net]
>>575
生年月日をタイムスタンプで扱ってるの?
生まれた瞬間のミリ秒まで必要?



590 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 22:16:27.40 ID:ZIJtMgP1.net]
>>586
ミリ秒じゃなく秒と言いたいんだろうけど、秒どころか時刻もいらん。
ただ時間を扱ういろいろな関数の引数が UTC だから何も考えず UTC で扱っとけと思って失敗したという話。

591 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 23:51:25.08 ID:GjrjfS/I.net]
ハハ。$_SERVERの勘違いって誰もが通る道だね。

592 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 00:14:36.94 ID:mGCA+lka.net]
初心者なんだけど
cgi,php の掲示板って普通にサーバーにアップロードして
動かすとサイトのURLの末尾が cgi、php ってなるけど
例えば、自分の好きな英数字 xxxx.html とかで
htmlで表示する方法があるんだよね?
これってやり方紹介してるサイトとかあるの?

593 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 00:23:54.79 ID:uL38izUF.net]
Apacheかなんかのスレにどうぞ

594 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 01:23:51.21 ID:JCoBBX/9.net]
>>589
> htmlで表示する方法があるんだよね?

ある

> これってやり方紹介してるサイトとかあるの?

ある

595 名前:デフォルトの名無しさん [2016/06/08(水) 02:06:02.23 ID:HLpzPaCj.net]
まとめますとggrks

596 名前:デフォルトの名無しさん [2016/06/08(水) 03:29:07.02 ID:YJzUTB/9.net]
PHPとJavascriptって両方覚えた方が良いの?

597 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 04:13:34.53 ID:E3Y0fydP.net]
htmlは静的、phpは動的なファイル。
静的なファイルは変更されないから、キャッシュ・圧縮が効く

開発環境でのディレクトリの場所が違ってくるし、
その拡張子・ディレクトリ構成を前提とした、フレームワーク・ツールが動かなくなる

htmlファイルは処理Aして、phpファイルは処理Bして、という前提条件が崩れる

また、CDNなどのキャッシュ・圧縮などに影響するかも?

素人は、変なことを考えない方がいい

598 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 04:45:13.41 ID:xWo5zVvm.net]
最後の1行に説得力を持たせるためにそれらを書いたのなら、かなりのセンス。

599 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 06:14:37.48 ID:Y0v6vn2E.net]
サルが必死に知恵を絞るとこういう文章になってしまうというだけだ。
センスとか関係無い。



600 名前:594 mailto:sage [2016/06/08(水) 06:37:14.53 ID:E3Y0fydP.net]
慣例に従わないと、フレイムワーク・プラグイン・ツールなどが動かなくなる。
そういうツールの作者は、慣例を前提条件にして作っているから

何かがバグった時に、素人じゃ解決できないだろう

プロでも設定ファイルで、あーだこーだ設定しても、
設定した人にはわかるけど、人が変われば、もうダメだろう

601 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 06:41:40.02 ID:Y0v6vn2E.net]
>>595
な、マジもんだっただろ? 頭おかしいからほっとくしか無い。
素人にはかわいそうなこった。

602 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 06:43:42.35 ID:gbxJmrOf.net]
みんないいか?触るなよw

603 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 07:10:14.83 ID:Y0v6vn2E.net]
今日も動物園一直線か。
たまには人間が見たいもんだ。

604 名前:594 mailto:sage [2016/06/08(水) 07:34:36.51 ID:E3Y0fydP.net]
君らは、Gradle, Jenkins などで、.html .php など、

拡張子によって、テストツールなどの処理を変えたりしないのか?

605 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 07:40:28.27 ID:Y0v6vn2E.net]
うん、おまえ頭おかしいから元の質問100回よみかえして
どういう状況かよく考えたら病院行って薬もらってこい。

606 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 08:10:33.58 ID:uL38izUF.net]
自分はApacheくらいしか分からんけども、ぱっと思いつくのは3パターンくらい。


質問に対して正直に答えるなら、.htmlも動的ファイルとして認識させる方法だが、
大昔のSSIとかはともかく、今はデメリットしか無いだろうなあ。

ファイルの更新よりも極端に閲覧が多いなら、伝統的な手段として、
あらかじめ静的ファイルを生成する方法があるが、質問者の意図とは遠いだろう。
あとは今の御時世だと、そこまでパフォーマンス的なメリット薄いかも。

比較的質問者の意図に近く、かつ>601のような問題にも対応するなら
mod_rewriteによるパスの書き換えが無難かしらね? ただ初心者には難しい気がする。


やるなら最後だが、結局のところ最初はやらんほうがいいってことになるのかね。

607 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 08:25:59.30 ID:2v7uDDwq.net]
htmlを動的ファイルとして認識させるのは、理解し切ってやるならデメリットだけとも言えないとは思う

質問者の意図から外れるのは同意だけど静的htmlの生成・保持は今のご時世でもメリット薄くないと思う
昔はサーバリソースの問題から、今のご時世でもアクセス数の増大と先読みやらなんやらの超アクセスの問題から
特に重い処理は一部だけの保持でも十分に効果がある

というか一番の問題は動機、なんで拡張子偽装したいのか意味あんのかってあたりだと思うが
そこを突っ込むのは野暮か
*****.htmlじゃなくて /*****/ アクセスにするだけでも解決しそうな・・・

608 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 10:58:47.40 ID:YYbuS1Qq.net]
php7ってなんで公式リポジトリに含まれないん?
わざわざremiリポジトリ登録してやらんとあかんが疑問
JPCERTでも以前脆弱性出てたし
わかる方いたら教えて

609 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 12:38:58.71 ID:CAvCMOWG.net]
有益かゴミかはやり方知った後でやる奴が判断すりゃいいんだよ。
頭のおかしい外部のサルが判断すことじゃない。
教えるかggrksのどっちかでいいんだ。ゴタクは日記に書いてろ。



610 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 12:56:25.16 ID:lrS0iOEg.net]
>>605
デフォルトでは使うなってことでしょ

611 名前:デフォルトの名無しさん [2016/06/08(水) 13:40:06.16 ID:oY9bTRlh.net]
パーフェクトPHPのフレームワークの章とアプリケーション開発の章を理解するには
先にCakePHPの基礎を学ぶのがいいと書いているブログがあった
このスレ的にはどう思うよ?

612 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 15:55:08.69 ID:kQTZ9CNF.net]
そんな無意味な書籍読まないし知らんけど
FWのイロハがわからない人間にはイメージがつきにくい内容なら
実際何かしら触った方がいいのは当たり前のことだと思うが

613 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 16:46:59.87 ID:2v7uDDwq.net]
そんな本読んだことないし読む気もないが、フレームワークの章だけならまだしも
アプリケーション開発の章を理解するためにCakePHPの基礎やっとけというなら
高確率でそのブログが役立たずまたはその本が役立たずと思われる

614 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 16:56:11.26 ID:VGRHY7q5.net]
何でもいいよ
PHP系のフレームワークはどれも同じ

615 名前:デフォルトの名無しさん [2016/06/08(水) 16:58:16.97 ID:HLpzPaCj.net]
>>609
>>610
君らは自分の過去を無かったものにするのだな
別の本なりネットなりで勉学した初心者時代があっただろう
記憶喪失になったかな?

616 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 17:13:12.10 ID:2v7uDDwq.net]
>>612
初心者の勘違い防止とステマ防止のためなら何度でも言うが
一番重要なのはHTTP、DNS、HTMLの仕組みの理解を深めることであって
phpに関する学習は基本的にphp.netで十分
あとはプロセスだのスレッドだのファイルシステムだのSSL/TLSだのをレベルと必要性に応じて学べば足りる

617 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 17:51:55.00 ID:ZBwXDrqR.net]
マンモス本がでてPHPの時代が来るんじゃあと思ったことならある
LAMPで構成されることが多いしCMSもMVCフレームワークも豊富で困らないけどCakePHP推しはちょっと古いかもな
ORMは使わないことが多く、結局PHPよりSQLの知識の方が需要あるんだよね

618 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 18:01:25.33 ID:lrS0iOEg.net]
チームで開発するなら、フレームワークいいと思うけどね

619 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 18:05:39.32 ID:jZ2+9jcA.net]
syslog(LOG_INFO,'info');
syslog(LOG_DEBUG,'debug');
syslog(LOG_NOTICE,'notice');

こうすると、debugだけ/var/log/messagesに記録されていません
開発時にはDEBUGなどの定数を設定しておいて
その時にはLOG_DEBUGも出力される
開発が終わればLOG_DEBUGは出力しない
みたいなことをやりたいのですが
どうやれば出来ますか?



620 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 18:26:10.13 ID:PuNp4spr.net]
出ないのはsyslog.confの設定しだいだろうけど
log出力をライブラリ利用するかラッパーかまして自分で制御しては
syslogは開発完了後も使う前提だと思うけど

621 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 18:27:46.41 ID:v2PxA+KY.net]
>>615
フレームワーク使うにしてもそれに合わせた設計や規約を作らないといけないんだから、それほど意志疎通の手間を省くこともできないしそれ程素晴らしいとも思えないがなぁ。
もちろん自分達で一から書くよりはマシだろうという期待はあるが、フレームワーク自体のメンテナンスも必要になってくるしねぇ。

622 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 18:33:06.92 ID:lrS0iOEg.net]
>>618
> フレームワーク使うにしてもそれに合わせた設計や規約を作らないといけないんだから、
使わない方が大変な気がするが

> それほど意志疎通の手間を省くこともできないし
共通基盤部分の意思疎通は不要だし、わからないこともWebで調べることができるというメリットがある

623 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 18:38:13.16 ID:jZ2+9jcA.net]
>>617
LOG_〜はsyslogに対しての指定なのですね
どうもその辺りが分かってなくて
ありがとうございました

624 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 18:40:18.38 ID:Y0v6vn2E.net]
CakePHPなんて薦めてる時点でお察し。
フレームワーク嫌いになるし、MVC勘違いするしでいい事なんにもねぇよ。

625 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 18:40:30.18 ID:mGCA+lka.net]
>>594
cgi,phpをhtmlで表示する方法を知りたかったんだけど
素人はいじらない方いいってこと?検索して探しまくったけど細かく説明してるサイトがないんだよね
配布してるサイトには全く触れてないしさ

626 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 18:44:05.32 ID:Y0v6vn2E.net]
>>611 の言うとおり、ロクなものが無いと言う点に於いては
PHPのフレームワークなんてどれもおんなじ。

使いまわせるライブラリやフレームワーク自体を作ることが出来無い低レベルの会社か、
人の入れ替わりの激しい人買いくらいしかPHPの有名どころのフレームワーク使う恩恵なんてない。

627 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 18:45:20.25 ID:Y0v6vn2E.net]
>>622
そういうことはしない方がいいってわかってるから情報も少ない。
まぁ、ぐぐりまくれ。いい勉強にはなる。

628 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 19:53:45.61 ID:cqVMGaEH.net]
>>622
htmlでもPHPが動くようにapache設定するといいよ

629 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 21:28:57.46 ID:E3Y0fydP.net]
慣例から外れたことをやると、色々な設定を変えなければならなくなり、
一つ設定を変えると、またそれによって動かなくなるものが出てくる

それで大変だから、慣例に従うのよ。
素人は解決能力が無いので、変わったことをしない方がいい

たいてい、2chに居つく素人は、そういう変更をした人。
ずっと解決できなくて、2chに居つくw



630 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 23:12:26.27 ID:gbxJmrOf.net]
素人こそムチャクチャにいじり倒したほうがいいよ。流した涙の分だけ強くなれる

631 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 05:24:32.22 ID:Z+K8nZfh.net]
>>626
最後の二行なんか、まるで自己紹介かと思うくらいに真実味があるな。

632 名前:uy ◆e6.oHu1j.o [2016/06/09(木) 07:58:20.47 ID:soxVcx2A.net]
質問です
<h1><?php echo "ruby"; ?></h1>

これは純粋なHTMLコードよりサーバーに行わせる処理が多いものと思いますけど
気にしたほうが良い負荷ですか?
全てのページでこういう事やるのは避けたほうが良いですか?

633 名前:デフォルトの名無しさん [2016/06/09(木) 08:31:49.73 ID:udAwsxyk.net]
俺もそれ考えて、CachedNodeというクラスを実装しようと思う。
変更が有った時に幹に向かって破棄ビットを立てる。
変更があっても関連の無いノードのキャッシュは依然有効なまま。
変更が無い限り出力はキャッシュ済みでメモリー上にあるので最速。
まあセッションごとに起動される建前のPHPでは無理だけど。

634 名前:デフォルトの名無しさん [2016/06/09(木) 11:41:49.74 ID:I0vdXVFT.net]
アロー演算子 -> って前後にスペース入れちゃだめなの?

$this -> hogehoge() みたいにしちゃダメ?

635 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 12:52:46.82 ID:1e+LEmpu.net]
>>629
そういうことする為にwebプログラム言語はあるんだ。

636 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 18:58:43.72 ID:Z+K8nZfh.net]
なんで uy がここにいんの?

637 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 21:48:33.33 ID:gOehAXHk.net]
PHPでフォークをしてみたいのですが
子プロセスが全部終了するのを親が待つのは
作った子の数だけpcntl_waitすればいいのでしょうか?
子が死んだ時に待ってる制御が必ず戻ってくるのか、
というところに不安があります
もし待っているのに制御が戻らないと、永久ループになりますよね
そのへんは心配いらないのでしょうか?

638 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 21:49:19.88 ID:gOehAXHk.net]
×子が死んだ時に待ってる制御が必ず戻ってくるのか
○子が死んだ時に制御が必ず戻ってくるのか

でした

639 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 22:59:36.92 ID:gOehAXHk.net]
$childPidList = [];
for ($i=0; $i<5; $i++){
$pid = pcntl_fork();
if (!$pid){
echo getmypid()." forked\n";
sleep(100);
exit();
}else{
$childPidList[] = $pid;
}
}

while (count($childPidList)){
$pid = pcntl_wait($status);
$idx = array_search($pid,$childPidList);
unset($childPidList[$idx]);
echo "{$pid} ended\n";
}

こんな風にしてからkill -9で子プロセスを外から強制終了させても、
ちゃんと制御が戻りました
心配しなくても良さそうですね?



640 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 03:12:35.40 ID:0e6lKjME.net]
1つのファイルに1つのclassが書かれてるとして、許せる行数/KiB数はどのくらい?

641 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 04:50:15.18 ID:9JKXGlcv.net]
>>637
IDE使ってれば勝手に教えてくれる。
まだテキストエディタで書いてるのか?

642 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 08:24:36.60 ID:PSfQ4+av.net]
最近のIDEは行数にまで口出してくるのか。うぜえなw

643 名前:デフォルトの名無しさん [2016/06/10(金) 10:09:46.35 ID:mlu6vup/.net]
時代はJavaScriptよ
Mode.jsなら何でも出来る

644 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 10:19:00.19 ID:QeldepT2.net]
>>639
「変数が再定義されています。予期しない不具合を避けるため別の名前を用いて下さい」とかまで言ってくれるぞ。可愛いだろ?時々ぶっ壊したくなるけど。

645 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 10:21:02.62 ID:wJTDb5hO.net]
うちはもう全部SATAだぞ
いい加減古いPCは捨てろよ

646 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 11:16:48.36 ID:vAcnizog.net]
サーバーのファイルを直接的に編集できるからNotepad++使ってるんだけど
こうしたFTP機能があるIDEってある?

647 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 12:29:34.80 ID:QeldepT2.net]
大抵のIDEはできるんじゃねえの?
そういう事はやらんからよく知らんけどやってる奴は見た。

648 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 12:54:52.57 ID:vAcnizog.net]
>>644
ありがとう。
IDEは重いから避けてたけど、勉強がてらもう一度やってみます。

649 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 14:36:45.66 ID:VX0S6iFV.net]
phpの関数の引数の順番に迷うことが多いです
覚えやすいコツありますか?



650 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 14:38:09.38 ID:VX0S6iFV.net]
たとえばarray_searchなら
arrayをサーチするんだからarrayの方が先やろ→誤
となります

651 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 15:57:07.05 ID:gE4dMqOe.net]
>>646
覚えることを諦めてIDEに教えてもらう

652 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 18:47:17.98 ID:9JKXGlcv.net]
>>648
いい流れだ。腕を上げたな。

>>646
覚えなくてもいいから何が何でもphp.net検索しろ。
たまに下の方まで読むといろいろためになる情報が書いてあったりする。

653 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 18:50:21.21 ID:9JKXGlcv.net]
>>647
そういうのはJavaScriptみたいなのがいいよな。
array.join(",") みたいなの。ずっと分かりやすい。
Rubyもこんな感じだったっけか。

654 名前:デフォルトの名無しさん [2016/06/10(金) 18:54:05.44 ID:TQGlf4QP.net]
PHPStorm使えばいいんだろ?

655 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 19:02:50.34 ID:4O+4qcPo.net]
PSR-2フォーマッタついててPHPマニュアルがすぐ引けるなら何でもいい

656 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 19:31:49.15 ID:9JKXGlcv.net]
>>651
PHPStormは有償だから必ずしも職場で使えるとは限らない。
使えればラッキーだが、使えなかった時の事も考えておかなければならない。

657 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 20:18:43.09 ID:nh6LPx54.net]
>>612
なんで特定の本の話題出してそれに答えなきゃならんのか
もってること前提で質問されてもここはサポセンじゃないわけでな
ちなみに本に頼ったことなどない

658 名前:デフォルトの名無しさん [2016/06/10(金) 20:26:02.28 ID:TQGlf4QP.net]
>>654
亀レスにも程が有るのでは?

659 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 02:22:58.71 ID:BPhbrCpU.net]
亀をいじめないで!



660 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 05:12:42.04 ID:YhzsbXwG.net]
40レスぐらいで亀って随分平和になったな

661 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 06:46:43.40 ID:U0YLx5iK.net]
レス数の問題だと思う奴は頭の障害疑ったほうがいいぞ。
普通は時間とタイミングを考慮する。

662 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 11:22:18.74 ID:7IE41uX0.net]
ファイルをオープン(なければ作成)
→ロック
→読み込んで配列にunserialize
→配列の内容を変更
→配列をserializeしてファイルに書き込み
→ロック解除

ということをやりたいのですが、
ロックする前の、もしファイルがなければ作成する、という処理の部分は
排他的ではないので、変なことが起きる可能性があるんじゃないかという気がします
どうなんでしょうか?

663 名前:デフォルトの名無しさん [2016/06/11(土) 11:35:30.80 ID:BbMy6dfc.net]
>>659
其の通り

664 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 12:05:21.84 ID:U0YLx5iK.net]
そういう心配しなくてもいいようにDBつかうんだぬー
わざわざファイル操作で頭悩まさると禿げるんだぬー

665 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 12:11:12.11 ID:7IE41uX0.net]
でも良くある処理ではありますよね?
どうすれば問題が出ないようにできますか?

666 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 12:18:20.33 ID:enSm4S6w.net]
何らかの方法で排他的ロック方法を採用する
動作させるOSによって色々方法はある

667 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 12:21:08.46 ID:e5AOazPt.net]
uniqid()とかで一意なファイル名にする

668 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 12:24:02.14 ID:enSm4S6w.net]
→ロック
→ファイル操作
→ロック解除

669 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 12:30:39.02 ID:rc3AwP02.net]
>>661
DBならそういう心配しなくていいと思ってるからお前禿げてるんだろ?



670 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 12:34:32.72 ID:vIdecit0.net]
>>659
オープンと無ければ作成は同時にできる。
そこで取得したハンドルを flock すれば何の問題も無い。

でも、ロックファイルと本当に読みたいファイルは分けておくと何かといいと思う。
ロック方式を変える場合とか、データファイルの読み書きに fread じゃなく fire_get_contents とか include とか使いたいとか、
いろいろと融通が利くようになるから。
一度やれば面倒なんてことはないから、たったそれだけのために DB に走るのはまだ早い。

671 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 12:40:53.02 ID:vIdecit0.net]
たったこれだけ。

$lock = fopen('.lock', 'a');
flock($lock, LOCK_EX);

<排他されたコード>

fclose($lock);

排他されたコードとして、データファイル読んで操作して更新する処理を書けばいい。
更新の仕方を工夫すると、共有ロックと排他ロックを使い分けて同時アクセス時のパフォーマンスも上げられる。

672 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:02:26.63 ID:U0YLx5iK.net]
>>666
DBはそういうこといちいち考えなくても大丈夫な仕組みがいっぱいあるんだぬー
そんな事もわからないからおまえは666とか不吉な数字なんだぬー
おまえみたいなとんちきはオジー・オズボーンと一緒に田舎のババアから十字架持って追いかけられるといいんだぬー
アホが治るぬー

673 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:05:21.79 ID:U0YLx5iK.net]
>>668

> fire_get_contents とか

あうあうあうあうあうあうあうあうあう…

やばいよやばいよやばいよ… いろいろやばいよ…

674 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:06:01.45 ID:rc3AwP02.net]
>>669
その大丈夫な仕組みが>>668みたいなコードなわけだけど
DBとファイルでやってることが根本的に違うわけでもなしに
言ってることもキチガイじみてるし病院いったほうがいいよ^^;;

675 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:06:40.55 ID:U0YLx5iK.net]
やばくないか… 酔っ払ってるから何言いたいのかよーわからん
後で読み返す。

676 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:07:43.11 ID:U0YLx5iK.net]
>>671
だったらおまえはずっとファイル操作でしこしこやってたらいいんだぬー

677 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:09:52.19 ID:vIdecit0.net]
>>670
燃えそうw

678 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:10:00.47 ID:rc3AwP02.net]
酔っ払ってるを言い訳にするぐらいなら書くなよ
だからお前のコードはデッドロックばっかおこしてるんだぜ

679 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:14:29.55 ID:U0YLx5iK.net]
>>675
デッドロックなんて気にしてるってことがおまえがアホみたいな事やってる証拠なんだぬー
俺様はそんなしんぱいしなくてもいいようにシステムを作るので全く無縁の話なんだぬー



680 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:16:52.88 ID:U0YLx5iK.net]
>>667がどんなアホかと思ったけど、よく読んでみたら
ファイルをロックしていても読める関数使えって事らしいから、
本物のアホではないみたいだぬー

ただ、やってることが旧時代的でアホらしくてやってられないんでぬー

681 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:19:18.72 ID:vIdecit0.net]
>>676
排他する対象がひとつの DB の内容だけにとどまっていれば適当にやってもそうそうデッドロックしないかもしれないけどな。
余所の DB やシステムと連携したり限られたデバイスやリソースを共有するとか、排他は奥が深いぞ。

682 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:24:19.64 ID:U0YLx5iK.net]
>>678
その事と本件が何の関係があるんだぬー
ファイルロックしてれば他所のシステムと連携した場合でも簡単に排他できるのかぬー?
よっぽど大変になるのが目にみえてるんだぬー

おまえが物事の深さを語るのは108年早いんだぬー

683 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:25:50.01 ID:vIdecit0.net]
>>679
ファイルロックがあれば基本的になんでも排他できるだろ。
セマフォとか知らないか?
あれも実装によってはファイルロックだぞ。

684 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:30:10.44 ID:vIdecit0.net]
なんでもは言いすぎだったな。
でもいろんな応用をするための基礎だからやっとけって。

685 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:36:56.47 ID:U0YLx5iK.net]
>>680
「なんでも排他できるだろ」っておまえはアホかぬ?
排他する事だけがシステムの目的みたいになってるアホ発言だぬー
そんなにはいたいなら医者行けばいいぬー

ファイルで取り回すよりDB使ったほうがやれることがはるかに膨大なんだぬー
排他なんてそのうちのほんの1メリットだぬー
だったらDB使っちゃったほうがお得だぬー

とか言ってると、「DB使えない場合はどうすんだ」とか言うアホがでてくるんだぬー
だから今のうちに言っとくぬー

一般的でないケースの事なんか知るかハゲ!

686 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:38:31.55 ID:U0YLx5iK.net]
>基礎だからやっとけって。

DBは今時常識だからやっとけって。

687 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:41:00.34 ID:c3/xDSGs.net]
>>668
if (flock($lock, LOCK_EX)) { ... }
という風に失敗した場合の分岐を用意しよう
また新しいPHP(5.3.2以降)では手動でflock($lock, LOCK_UN)する必要があるらしい

688 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:42:44.74 ID:vIdecit0.net]
>>683
DB 使うなとは言ってないぞ。
手持ちのカードが多ければ好きに使い分けられるだろ。
お前はアクセスカウンター作るにもDB使うんだろうが、その選択しかできないのであれば潰しがきかないぞ。

689 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:43:06.58 ID:U0YLx5iK.net]
ほら、なんかいろいろとめんどくさい情報がくっついてきたぬー

おまえら、人生楽しそうだぬー



690 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:45:16.50 ID:U0YLx5iK.net]
>>685
ファイル操作にこだわってるお前のほうが潰しきかないから他人の心配してる暇ないんじゃないかぬー?

691 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:46:22.53 ID:vIdecit0.net]
>>684
LOCK_UN 必須の件は初耳だったけど、それ本当?
この辺の機能は OS の機能をそのまま使ってて、そんなに差がでる部分じゃないというか、ハンドル閉じてロックだけ残るってどういう事情だよって感じだが。
ハンドルを複製してるケースとかかな?

692 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:49:14.38 ID:U0YLx5iK.net]
>>688
おまえが調べてQiitaにでもまとめといてくれぬ。
必要になった時に見てやるぬ。
それまでは俺様は優雅にDB使ってるぬ。

693 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:53:03.18 ID:vIdecit0.net]
>>684
5.3.3 で試したけど、少なくとも >>668 の使い方では LOCK_UN の明示は要らないね。

694 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:55:02.40 ID:c3/xDSGs.net]
>>688
ついさっき確認したら変更履歴にそう書いてあったからであって、俺は検証してないよ
php.net/manual/ja/function.flock.php

どうなるのか想像でしかないが、解放しないと2度目からFALSE返すとかじゃね

695 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:57:05.92 ID:U0YLx5iK.net]
圧倒的な人柱感

696 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:58:16.03 ID:U0YLx5iK.net]
そういう、ファイルシステムの影響モロに受けそうな処理を平気でやる人たちって、
結局心が強いんだろうな。

オレはチキンだから無理だぬー

697 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 14:18:34.99 ID:a1oB3JFl.net]
まーた馬鹿が暴れてるのかー

698 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 14:24:21.01 ID:U0YLx5iK.net]
まーた馬鹿が戯言だけホザくのかー

699 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 14:29:21.37 ID:U0YLx5iK.net]
本当に、まともな思考力のある人間はいないのかねぇ…



700 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 14:39:42.63 ID:a1oB3JFl.net]
え?自分がまともな思考力もってると思ってんの?

701 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 14:46:49.83 ID:7IE41uX0.net]
>>668
ロック用ファイルを別に用意するんですね
ありがとうございます
ちなみにやたらdbを推してる狂人がいますが
今書いてるのはなるべく他のプログラムを使いたくないものなので、
今のところdbは考えていません

702 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 14:54:08.42 ID:U0YLx5iK.net]
>>697
自己紹介乙

このスレの参加者は自己紹介だけは得意だ

703 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 14:55:15.54 ID:U0YLx5iK.net]
>>698
なんか修行でもしてるんだ。学生は暇でいいね。

704 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 14:57:12.43 ID:U0YLx5iK.net]
PHPerはとにかく何でもPHPでやりたがるというのは本当だな。
脳みそが崩壊してる。

705 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 15:36:01.25 ID:a1oB3JFl.net]
ノウミソ崩壊って自己紹介はやめろって!

706 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 15:43:02.88 ID:U0YLx5iK.net]
オウムさん餌でもついばんででください

707 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 15:45:49.48 ID:U0YLx5iK.net]
人間、いないねぇ…

708 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 15:59:10.40 ID:a1oB3JFl.net]
低収入オッサンやめろよ
ここはストレス発散のはけ口じゃないんだよ!!!

709 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 16:05:51.89 ID:U0YLx5iK.net]
うん、ここはお前らの低能をなぐさめあう場所でもない。わかってるだろ?



710 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 16:06:40.12 ID:U0YLx5iK.net]
あと、さすがに酔いがまわってきたから突然落ちるよ。

711 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 16:08:50.21 ID:a1oB3JFl.net]
低能低能いうけどお前レベル低いからな(笑)自覚しろよ!!!

712 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 16:11:06.58 ID:ZgIjL8Zc.net]
最初flock絡みでデッドロックやらかした時は
スクリプト止まらないしエラー吐かないしで何が悪いのか全然わからなくて立ち往生状態だった

>>698
serializeほど楽じゃないが別途db用デーモンを起動させとかなくていいsqliteは便利
そういや手軽なdbの話じゃ最近berkeley dbの名前を全然見ないな…なんでだ

713 名前:デフォルトの名無しさん [2016/06/11(土) 16:11:26.13 ID:BbMy6dfc.net]
PHP使ってるのなんてみんな底辺だから仲良くしようや

714 名前:668 mailto:sage [2016/06/11(土) 16:16:02.35 ID:0LrYNLoc.net]
>>698
>>684 の情報により、fclose の前に flock($lock, LOCK_UN) を入れてね。
あと flock 使った排他で重要なところは、処理が終わってもロックファイルを消しちゃダメということ。
ロックファイルの存在確認式なんかだと処理が終わったらロックファイルを消す必要があるけど、flock式はそうじゃない。
同一のファイル(パスではなく inode)をオープンすることでロックをかけるから、消して作り直しても同じファイルにはならずその間でのロックがかからない。

あと、NFS 領域に対しては flock が使えない場合があるから、それは制限事項として覚えておいて。

といった具合に説明すると長くなるけど、コードはシンプルだから覚えておいて損は無いよ。

715 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 16:24:29.25 ID:ZgIjL8Zc.net]
>>691
いや違う、falseを返すとかじゃなくてデッドロックを引き起こす
延々とロック取得待ち状態になってkillしなきゃいけなくなる

716 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 19:09:00.14 ID:U0YLx5iK.net]
お前ら、人生楽しそうだな。
俺は頭痛い…

717 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 19:12:41.27 ID:U0YLx5iK.net]
おっかしいな… なんでこんなに頭いたいんだ?

718 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 21:39:16.03 ID:vIdecit0.net]
>>712
マニュアルに書いてあることにケチつける気は全く無いんだけど、
Linux の 5.3.3 と Windows7 の 5.6.22 で実験しても、LOCK_UN が必要だと思われる挙動が認められない。
fclose だけでロックは外れるし、同プロセス内で同じハンドルに対してアンロックも fclose もしないまま 2重にロックを掛けてもデッドロックしない。
どういうケースで LOCK_UN の明示が必要なんだろう?

実験コードはこれ。

$lock = fopen('lock','a');
echo "start\n";
if(!flock($lock, LOCK_EX)) {
echo "fail 1\n";
exit(1);
}
echo "locked 1\n"; // ロック成功

if(!flock($lock, LOCK_EX)) {
echo "fail 2\n";
exit(1);
}
echo "locked 2\n"; // 二重ロックでもデッドロックしていない

fgets(STDIN); // ENTER が押されるまで待つ

fclose($lock); // アンロックせずクローズ
print "unlocked\n";

sleep(5); // プロセスの終了を引き延ばす(ロック残り状態があるならそれを維持する)
print "end\n";

719 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 22:15:24.50 ID:ZgIjL8Zc.net]
>>715
すまんが712は単純に「LOCK_EXされたファイルへのLOCK_EX」の挙動を書いただけ
flockの仕様から同一プロセスからの多重flockは後に指定したLOCK_**に上書きされるだけ、なのも確実(winは知らん)

で、記憶掘り返しながらこっちでも試してみたけど>>715の言うとおり
同一プロセス内でも、別プロセスでも、fopen->flock->fclose->fopen->flock でデッドロックしなかった
flock($fh, LOCK_EX)絡みでデッドロックになってハマった記憶が確かにあるんだがなあ…しかも1プロセスで
昔書いたソースとメモを読んでるけど該当箇所が見つからん



720 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 22:25:33.55 ID:U0YLx5iK.net]
具合悪い… 吐きそう…

721 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 22:43:11.56 ID:vIdecit0.net]
>>716
アンロックも fclose もせずに fopen からやり直したに一票。

$lock = fopen('lock','a');
flock($lock, LOCK_EX);
echo "locked 1\n";

$lock = fopen('lock','a');
flock($lock, LOCK_EX);
echo "locked 2\n";

それは置いといて、仕様変更の事情が気になったので PHP のソースを読み始めた。
読んで分かるかは分からんけど、とりあえずソースを flock で grep したところから辿ってる。

722 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 22:53:40.15 ID:U0YLx5iK.net]
排他的に内容更新したいだけなのにお前ら何やってんだよ…

723 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 23:21:54.93 ID:u5pRtWh9.net]
僕の友達に「ゲームプログラムを兄から頼まれてよくやってるー」などと言ってる奴がいます。そいつにどんな言語使ってんの?とかきいてもいろんな言語使ってるから意識したことないわwとか誤魔化したり、c言語は難しくてよくわからんとか言っているのです。
なんか嘘くさいんで掘り下げてやろうと考えてます。

もしゲームプログラムするならこれは知ってて当然みたいな知識あったらそいつに仕掛けて反応見てみたいので教えてください。

724 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 23:27:06.01 ID:u5pRtWh9.net]
各場所間違えてました
ごめんなさい

725 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 23:36:10.98 ID:ZgIjL8Zc.net]
>>718
そんな感じがしてきた。(だが718のコードだと$lockを上書きしちゃってるからデッドロックは起きない)

同一のファイルを二重に開いて別々にファイルハンドルを保持し別々にflockしたとき
片方だけでもfcloseしたら両方LOCK_UNされることの対策か、とも思ったけど
実際に下記を手元のwin-5.2.0とlinux-5.1.6とlinux-5.6.8で試してみたら、どうも違うようだ
$file = './flock.lock';
$fh1 = fopen($file, 'a'); flock($fh1, LOCK_SH);
$fh2 = fopen($file, 'a'); flock($fh2, LOCK_SH);
fclose($fh1);
$fh3 = fopen($file, 'a'); flock($fh3, LOCK_EX); // いずれもここでデッドロックが発生

わからん

726 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 23:46:33.60 ID:vIdecit0.net]
>>722
上書きしてるから起こるんだよ、オブジェクトみたいに変数上書きしたら参照が無くなった方が勝手に破棄されるんじゃないから。
でも本質は、一つのハンドルには何度繰り返しロックをしてもスルーされるけど、一つのファイルでも別個の 2つのハンドルを取得しちゃった場合、
その両方にロックを掛けたらそりゃ 2度目の方はブロックされるという点。

意図せずこのバグを引き起こすケースとしてはこんな感じじゃね。

$lock = fopen('lock','a');
flock($lock, LOCK_EX);

<なんかの処理、でもうっかり $lock の値を壊してしまう>

fclose($lock); // ロックを解放したつもりだけど、$lock が正しいハンドルを示していないから失敗、ハンドルリーク

$lock = fopen('lock','a');
flock($lock, LOCK_EX); // 二度目のロック、同じファイルだけどさっきのロック取得済みのハンドルとは別ハンドルになるからロックを取得できない
:

727 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 23:50:10.54 ID:vIdecit0.net]
>>723
ごめんうそ言った。
ハンドルを上書きしたらクローズされてるみたいね?
なので >>723 は忘れて。

728 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 23:57:31.23 ID:ZgIjL8Zc.net]
>>724
気にすんな
しかしこうなると真面目に手動LOCK_UNの意味・有効な場面がわからなくなってくるな
というかfclose/flock仕様変更の前後の差異がわからん

729 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 04:10:30.87 ID:p2hTIoUv.net]
懐かしい話を掘り起こしているようで
tumblr.tokumaru.org/post/37141017115/



730 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 04:35:52.53 ID:jxNAYoxL.net]
オブジェクト指向はアクセス指定子や抽象クラスなどで
やってはいけないことや守るべきことをコードの中で示すことができますが
フォークすることによって起きる事態に対しては無力だと思います
たとえば、プロセスidを入れ込んだファイルパスは、
その都度getmypidを呼んで生成しなければいけない、
というようなことを、コードのシンタックスによって示すことは出来ませんよね
コードのどこかでフォークしているということに気付かずに
いちいち毎回作り直さずにキャッシュすればいい、と思うことはありそうです
いい方法はないでしょうか?

731 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 07:55:29.22 ID:4xmbllsr.net]
>>726
参考になった。ありがとう。
でもこれ、system関数のバグなんじゃね?
内部で fork した後、親プロセスから継承したハンドルを閉じてないんじゃ?
そこのデッドロックのサンプルだと、デッドロック中はロックファイルの lsof は子プロセス側に 2件ある。
5.3.2 での改修ポイントが間違ってたんじゃないのかなぁ…
少なくとも OS のシステムコールレベルではハンドルを閉じればロックも否応なく外れちゃうし、これは Unix系も Windows も一緒なはずだが。

732 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 08:18:59.24 ID:4xmbllsr.net]
検証した。
やっぱ子プロセスが継承したハンドル持ちっぱなしだよ。
当然マルチプロセスの処理を書く時にはそれを意図的に利用したいことはあるけど、PHP だったら内部で exec系を行う前にはスクリプトで開いたハンドルは全部クローズするべきなんじゃないのかね。
ただ現象が起こる理由は分かったから、それに基づけば明示的なアンロックが無くても影響があるところはほとんど無さそうだと判断するけどな。

733 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 13:06:26.58 ID:0JopogCG.net]
そもそもflockシステムコールはもともとマニュアルに書いてあるように

flock() によって作られるロックは、 オープンファイル記述 (open file description) (open(2) 参照) と
関連付けられる。 したがって、ファイルディスクリプターの複製 (fork(2) や dup(2) などにより作成
される) は同じロックを参照し、 これらのファイルディスクリプターのどれを使っても このロックを
変更したり解放したりできる。 また、ロックの解放は、 上記の複数のファイルディスクリプターの
いずれかに対して 明示的に LOCK_UN 操作を指示した場合か、これらのファイルディスクリプターが
すべて 閉じられた場合に行われる

というもので、phpのfclose関数の中でわざわざLOCK_UNしてたのは余計なお世話
で本来の動作を阻害していたから5.3.2でやめたって理解でいいんだろうか。

734 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 13:26:47.31 ID:4xmbllsr.net]
>>730
うん、よくよく考えると
> というもので、phpのfclose関数の中でわざわざLOCK_UNしてたのは余計なお世話
ということが正しいと思う。
元々マルチプロセスなプログラミングで自動で複製されるファイルディスクリプタの扱いはプログラマが意識する必要があって、複製の後始末をせずにロックが残ることがあるのはそもそも設計ミス。
こういうことをフォローするために PHP では fclose でのついでに自動でアンロックが走るようにしていたけど、そうると親子プロセスの一方で不要になったディスクリプタを閉じただけでロックまで外れちゃうという問題を引き起こす。
だったらリソースの管理はやっぱりプログラマに任せるって判断が妥当なんだろう。
互換性の点でも、そもそもディスクリプタの複製が行われるケース(恐らく PHP では fork を伴う何か)と関係無ければ fclose だけでロックは解放されるから問題は無いし、
複製が行われるような処理ではアンロックの必要性についてはプログラマが意識していてしかるべきだから、
結局のところ fclose にアンロックを合わせこむのをやめるのが正解だな。
ただ system をはじめとするシェル系の関数は気軽に使いがちだから、子プロセスのハングアップでロック残りが起こる可能性は身近かもしれないね。
これまでアンロックせず動いてたスクリプトを無理やり改修する必要までは無いけど、これから書くならアンロックは明示しとけってことだな。

久々に勉強になった。

735 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 14:20:54.54 ID:QWuFqOwW.net]
>久々に勉強になった。

使う機会あるといいけどな。

736 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 14:39:38.95 ID:Y/PMYUAu.net]
別に子プロがハングしようとLOCK_UNには関係ないんじゃないか
execしたphp以外のプロセスがロックしててもphpのロックには関係ないし
どんなプロセスでもプロセスが終わればロック解放されるんだから

737 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 15:10:09.70 ID:3j0TR14y.net]
>>733
ハングして終了しなければ殺すまでロックしっぱなしだろ

738 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 15:21:03.49 ID:3j0TR14y.net]
説明が足りないか。
PHPでファイルを開きロックをした状態で、例えば system で別プロセスを起動したとする。
このプロセスは、PHP で開いていたファイルディスクリプタの複製を持つ。
ディスクリプタが複製されても取得しているロックはひとつで、このディスクリプタのいずれかでアンロックすればロックは解放される。
誰もアンロックしなかった場合、そのロックに紐付く全てのディスクリプタが閉じられた場合に解放する。
つまりディスクリプタの複製を持った子プロセスがそれを閉じないままハングした場合、親プロセスがディスクリプタを閉じてもロックは解放されず、子プロセスを殺すまでロックされたままになる。
ちなみに子プロセスがPHPかどうかは関係無い。

739 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 15:29:21.61 ID:jxNAYoxL.net]
ファイルパスを正規化するにはどうすればいいですか?
realpathで出来ると思っていたのですが
まだファイルが存在しない時点では結果がfalseになるので駄目でした



740 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 16:09:50.68 ID:hcrF9o1u.net]
>>736
標準関数にはない。
Packagistには恐らくあるだろう。

741 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 17:23:27.51 ID:jxNAYoxL.net]
>>737
ありがとうございます
packagistというところから辿ったらありました
https://github.com/perchten/php-truepath/blob/master/src/truepath.php

742 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 17:28:53.54 ID:pWHiM9s7.net]
とりあえず話が収束したらまとめとして残してくれる?
ここまで議論しといて残さなかったらPHPerとして恥だし

743 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 17:51:52.67 ID:SdG9GRKe.net]
他力本願こそPHPerとして恥だぞ

744 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 18:52:27.13 ID:Y/PMYUAu.net]
>>734-735
あるファイルをphpで有効にLOCK_EXしても別プロセスで起動したviには何も影響しないと認識していたが?

だからphp以外をexecしてロックが生じてもphpの記述には関係がない=fclose前のLOCK_UNに関係ない
ある.php内であるいはexecで呼び出した.phpでファイルロックが起きてもmax_execution_timeの縛りで強制終了すればロックは解ける
ゆえに「ロック残り」とやらで掴みっぱなしになることはそうそうない、そう認識していたんだが

745 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 18:52:38.31 ID:QKWa7och.net]
で、お前らぴーえいちぱーって読んでんの?

746 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 19:03:36.38 ID:4xmbllsr.net]
>>741
flock によるロックって別のプロセスからのファイルアクセスを禁止するわけじゃないから。
同時にロックを取得できないだけであり、それによって「ロックを取得しようとするプロセス同士」を排他するわけ。
ロックを取得しようとしないプロセスはロックされたファイルであろうとアクセスし放題だよ、例えば vi とかね。
Windows では他のプロセスからのファイルアクセスを禁止することもできるけどな。

747 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 19:06:30.53 ID:QKWa7och.net]
ピーチクパーチク、ピーエイチパーチク
ヨー、チェケラッチョー

748 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 19:15:10.09 ID:Y/PMYUAu.net]
>>743
あれviってflock使ってなかったっけ?まあいいや他のなんでもいいんだが
本旨はphpにおける明示的flock($lock,LOCK_UN)の必要性だろう、それが他プロセスとどう関わるんだ
結局どういうときにLOCK_UNしないと「ロック残り」が起こるんだ

749 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 19:35:01.71 ID:4xmbllsr.net]
>>745
>>726 の実験コードで再現できるよ。
デッドロックのメカニズムはこう。

まず a.php でファイルを開き、ロックする。
そして system で b.php を開く(別に PHP である必要は無い)。
この段階で b.php は、a.php が開いていたファイルの fd(ファイルディスクリプタ)の複製を継承する。
b.php は継承した fd とは別に自前でファイルを開き、ロックしようとする。
ロック済みのファイルに対してロックしようとするから、これはブロックする。
この間 a.php は処理が進み、fclose が走る(*1)。
プログラマーの意図としてはここでロックも自動的に解放されると思っているが、このロックを共有する fd を b.php が閉じずに持っているので、まだロックは解放されない。
a.php は終了するがロックは解放されないので、b.php のブロックが解けることも無くデッドロックする。

このスクリプトをデッドロックさせずに走らせるためには、*1 の前に LOCK_UN するのが一案(PHP においては唯一の手段)。
これにより b.php は継承した fd を開かれたまま持ってはいるが(ある種のリソースリーク状態)、ロックは a.php により解放されるので、b.php が自分で開いた fd に対するロックを取得でき、処理が進行する。
もう一案は、PHP では実現不能だと思うけど、b.php が走り出した直後に継承した fd を閉じること。
PHP からは継承した fd の存在が見えないし、fd を知ることができたところで何もできないから詰むけど、fd を操作できる処理系ではそれが可能だし、むしろ常套手段。

ようは、何かのファイルをロックしたまま子プロセスを立ち上げ、その子プロセスが同じファイルのロックを取得しようとするかなり限定されたケースでは LOCK_UN が必要。



750 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 19:43:46.46 ID:4xmbllsr.net]
ついでにもう少し、>>746 のようなケースであれば、5.3.2 よりも前のように flose で LOCK_UN してくれりゃいいじゃんと思うかもしれない。
多分 PHP の設計者もそう思って、そうしていたんだろう。
でも pcntl_fork なんてことができるようになると、それじゃ問題が出るケースにぶち当たる。

通常 fork してもやっぱり親が持っていた fd は子プロセスに継承されるし、pcntl_fork に関して言えば継承された fd はファイルハンドルの形で PHP から操作できる状態で見えている。
通常マルチプロセスの処理は、親が持っていた fd はじめいろいろなものを継承してしまうので、子にとって不要なものを閉じてしまうというのが最初にやること。
親がロックを取得した fd をそのまま親と子で共有するなんてことはめったに無いから、親なり子なりでその fd を閉じる処理を書くことになる。
この時 LOCK_UN が自動的に走るようになっていると、そのロックを必要としている方のプロセスが持つロックまで解放され、非常に具合が悪い。
だから fclose で勝手に LOCK_UN するなんてのは余計なお世話以外の何物でもない。

というわけで、fclose で LOCK_UN しないようになったと、こういうことだよ。

751 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 19:49:34.59 ID:4xmbllsr.net]
>>747
> 親がロックを取得した fd をそのまま親と子で共有するなんてことはめったに無いから、親なり子なりでその fd を閉じる処理を書くことになる。
ちょっと誤解を招くかもしれないから捕捉。

親がロックを取得した fd をそのまま親と子で共有するなんてことはめったに無いから、
その fd はどちらか一方にとっては不要であるから、そちらのプロセスでは最初にその fd を閉じる処理を書く。

752 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 19:58:20.79 ID:p2hTIoUv.net]
>>745
プロセスが生きている間においては「ロック残り」が発生するが、どうせ死ぬから問題ないというスタンスだとすれば、
max_execution_timeを0にした場合や、(初期値が0である)CLIの場合は生き続けるよ。

753 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 20:37:09.64 ID:SRdEl8UG.net]
HTMLとは
ハイパー テキストマークアップ ラングアゲ

754 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 21:40:22.72 ID:ETS5lku+.net]
ランゲージ

755 名前:デフォルトの名無しさん mailto:sage [2016/06/13(月) 09:32:27.21 ID:Mgx0zrpD.net]
今phpをステップ実行できるデバッガで便利なのってどのあたり?
ステップごとにそれぞれの変数の中身がどうなってるか簡単にわかるとうれしい

756 名前:デフォルトの名無しさん mailto:sage [2016/06/13(月) 13:49:19.06 ID:XIduanRK.net]
array_filterで関数に他の引数も与えたい場合はどうしたらいいですか?

757 名前:デフォルトの名無しさん mailto:sage [2016/06/13(月) 14:23:37.32 ID:TYgkMCrQ.net]
>>753
コールバックにオブジェクトメソッドを指定して、オブジェクトに他のパラメータを持たせるとか?

758 名前:デフォルトの名無しさん mailto:sage [2016/06/13(月) 14:36:57.48 ID:TYgkMCrQ.net]
あんまやったことないけど、クロージャでやる方が簡単なのかね?

function my_array_filter(array $input, $param)
{
return array_filter(
$input,
function($var) use($param) {
return $var <= $param;
}
);
}

$a=array(1,2,3,4,5);

print_r(my_array_filter($a, 2));
print_r(my_array_filter($a, 4));

<実行結果>
Array
(
[0] => 1
[1] => 2
)
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)

759 名前:デフォルトの名無しさん mailto:sage [2016/06/13(月) 15:15:41.61 ID:XIduanRK.net]
>>755
phpもクロージャ出来るようになってたんですね
ありがとうございます



760 名前:デフォルトの名無しさん mailto:sage [2016/06/13(月) 16:04:29.44 ID:poUAr+t+.net]
Array→アレイ→アレ?→あれれ?
という発想が頭から離れなくて頭が基地外になりそうなんだけどプログラミングは向いてないよね?
ちなみに仕事はPG全く関係なくて異業種の作業員

761 名前:デフォルトの名無しさん mailto:sage [2016/06/13(月) 18:18:38.79 ID:Mj2HqjrQ.net]
おでかけですか〜?

762 名前:デフォルトの名無しさん mailto:sage [2016/06/13(月) 18:53:18.04 ID:I48wzFwG.net]
おまえら、平和でいいな。

763 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 00:37:10.95 ID:e/1BDrQk.net]
>>757
電気屋さんとか電波屋さんと仲良くなれそう

764 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 02:04:02.36 ID:vpCPShaK.net]
配列をオブジェクト指向的に使うための組み込みクラスは何故ないのでしょうか?

765 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 03:26:27.75 ID:E92ohJVI.net]
ないんですか?

766 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 03:29:28.98 ID:sdXnBDtj.net]
>>761
当初はあまりオブジェクト指向じゃなかったという点と、
現状の array をそのままオブジェクトとして見なす変更をしてしまうと array を関数の引数に取る場合に他のオブジェクトの扱い(array はコピー渡し、オブジェクトは参照渡し)と一貫性が取れなくなるから、今更どうにもできないってところじゃね。

それより、関数が返す array を直接添え字でアクセスできないのをなんとかして欲しい。
ようは explode(',', $str)[1] みたいにやりたいわけだが、この改修ならほとんど問題無くできそうな気がするけどな。

767 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 03:34:56.83 ID:pjhL6UK+.net]
list(,$test)=explode(',', 'test1,test2,test3');
こうするのがせいぜいだが、これで妥協するか自分自身が開発に参加して改修するかだな

768 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 03:48:41.99 ID:E92ohJVI.net]
できないんですか?

769 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 05:18:59.07 ID:jLlAbvBE.net]
ArrayObjectとArrayIteratorならあるぞ



770 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 09:39:15.99 ID:1o9WExv+.net]
>>761
実装済みの>>766に加えて自前クラスでもArrayAccessインターフェイスを実装すれば配列のように扱えるクラスを実装出来る

771 名前:デフォルトの名無しさん mailto:sega [2016/06/14(火) 10:25:21.42 ID:ekIyBZy6.net]
PHPStorm を優勝期限切れで使い続けてる人います?
バージョンアップできなくてつらくない?

772 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 11:58:51.69 ID:vpCPShaK.net]
ありがとうございます
ArrayObjectってあったんですね
探し方が足りなかったようです
やはり関数言語的な書き方をしようと思うと、生配列だと物足りなくなってきますね
ただArrayObjectも、関数言語的なメソッドは実装されてないようです
eachやmapやreduceなど
既にそういうの書いてる人はいるでしょうけど、
標準実装してほしいところです

773 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 12:23:57.32 ID:nAMCA7y/.net]
>>763
explode(',', $str)[1] については
いつまでも古いバージョンのPHPつかってんじゃねーよってことだが。

774 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 17:44:21.80 ID:vpCPShaK.net]
class ArrayObjectEx extends ArrayObject {

public function map($func){
foreach ($this as $key => $value){
$this[$key] = $func($value,$key);
}
return $this;
}

}

とりあえずmapを作ろうと上みたいな感じにしたのですが
インスタンスのmapを呼び出すとundefined functionと言われます
親クラスにないメソッドを追加することは出来ないのでしょうか?
だとしたらそんな制限は意味が不明すぎますが・・

775 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 19:05:12.07 ID:4d00OzM8.net]
検証すんのめんどくさいから全部コード乗っけてくれる?ハゲ

776 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 19:26:39.01 ID:E92ohJVI.net]
mapに何を渡したんですか?

777 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 21:39:45.32 ID:vpCPShaK.net]
失礼しました
あまりの非PHPっぽさに釣られて
$a.hoge();
みたいな書き方をしていました

778 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 23:57:10.36 ID:sdXnBDtj.net]
>>770
あれ本当だ
いつの間にこうなった

779 名前:デフォルトの名無しさん mailto:sage [2016/06/15(水) 00:30:10.47 ID:yBESscco.net]
>>775
5.4からだから既に4年以上前



780 名前:デフォルトの名無しさん mailto:sage [2016/06/15(水) 01:15:30.82 ID:/9sc4puR.net]
explodeの戻り値がfalseだったら文字列でもfalseでもない null が返ってくることになるよな、それ
noticeも出る

781 名前:デフォルトの名無しさん mailto:sage [2016/06/15(水) 02:58:03.10 ID:6YnDO2OY.net]
そうですね

782 名前:デフォルトの名無しさん mailto:sage [2016/06/15(水) 09:56:12.92 ID:35n6X8km.net]
>>776
ずっとそれ出来ないもんだと思ってた...

783 名前:デフォルトの名無しさん mailto:sage [2016/06/15(水) 10:18:18.00 ID:HJSiSv4s.net]
猿は勉強しないから知らなくても無理はない。気にすんな。

784 名前:デフォルトの名無しさん mailto:sage [2016/06/15(水) 11:45:48.59 ID:DNtAqMfa.net]
わかった。 もう気にしない。

785 名前:デフォルトの名無しさん mailto:sage [2016/06/15(水) 12:28:52.64 ID:63gxNX9v.net]
マイナーバージョンアップで使えるようになった書き方は互換性の面で正直使いづらいな。
使いやすくなることは喜ばしいが。

786 名前:デフォルトの名無しさん mailto:sage [2016/06/15(水) 14:10:09.61 ID:i5XubNZf.net]
自分の書いたコードが
PHPのどのバージョンから使えるコードなのかを判定する
ツール的なものはないのでしょうか?

787 名前:デフォルトの名無しさん mailto:sage [2016/06/15(水) 14:13:56.64 ID:x+vvrMaZ.net]
言い出しっぺが作るのです

788 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 03:33:03.54 ID:F+lw57im.net]
readdirでディレクトリエントリを読んでいきながら
便宜ファイルを削除しても問題ないのでしょうか?

789 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 11:12:05.38 ID:F+lw57im.net]
stackoverflow.com/questions/13507721/how-to-delete-a-file-from-folder-in-php

ここを見ると問題ないようです
foreachで元の配列を破壊的に変化させてるようなものだと思うのですが
どういうアルゴリズムなのか。
一旦全てエントリを舐めて、一つ一つ取り出してるだけなのでしょうか
scandirではなくreaddirを使うのはメモリを節約したいという意識からですが
一度に全部読んで単に取り出しを一つ一つしているだけなら
あんまり意味がないですね



790 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 11:51:44.03 ID:OOtzbp5n.net]
>>785
問題が出るかは確認してないけど、
問題が出るかもしれないから readdir のループでは対象ファイルのリストアップだけして、改めて処理用のループ回してる。

791 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 15:13:15.23 ID:rO3o63UR.net]
配列の操作について質問です。
MySQLから点数データを取得してwhile文で配列に格納するとともに、
点数の5段階の相対評価を得たいです。

学生(要素数が可変)の点数配列scoresがあるとした場合、点数の高い順に
最初の1/5をA、次の1/5をB、次の1/5をC、次の1/5をD、残りをEに分類するには
どういう操作をするのが定石でしょうか?

792 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 15:14:35.80 ID:rO3o63UR.net]
(続き)
やりたいことは点数出力時に、「相対的」に5段階評価してランク付けも出力したいのです。
絶対評価なら80点以上はA、60点以上はB・・・など基本的なif文の分岐で可能ですが、
相対評価の場合に、定石的な方法や、便利な関数などはあるのでしょうか?

いったん点数を配列に格納後に、配列をコピーしてソートして5つに分類するとか考えているのですが、
もっといいアルゴリズムや便利な関数などありますか?
よろしくお願いします。

配列の中身(MySQLからwhile文で取得)
scores[1] = 19;
scores[2] = 82;
scores[3] = 37;
...
scores[488] = 11;
scores[489] = 55;

793 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 15:20:11.03 ID:lOAG9aOi.net]
>>788
ここはphpの下質スレですがご質問はphpに関する質問ですか?

794 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 15:25:56.10 ID:rO3o63UR.net]
>>790
はい。
PHPでのアルゴリズムの実装方法やそのためのPHPの関数などを教えて欲しいです。

795 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 15:32:21.65 ID:F+lw57im.net]
>>787
それが安心ですね
ありがとうございます

796 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 15:40:54.97 ID:lOAG9aOi.net]
>>791
まあ…ほんとにphpなら
単純に1次元配列を並び替えるだけならrsort($scores);するかその前にsqlの時点でORDER BYすればいい
あとは$scores = array_chunk( $scores, (int)(ceil(count($scores)/5)) );とかすればいい
データが二次元だとか細かい処理したいとかならrsort()ではなくusort()も使える

797 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 16:28:58.79 ID:rO3o63UR.net]
>>793
ありがとうございます。
配列操作の関数がたくさんあってどれが最適なのか見つけられずにいました。
ORDER BYとご教示頂きましたarray_chunkの関数の組み合わせが最適そうですね。
解決できそうです。ありがとうございました。

798 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 16:49:55.80 ID:BCCkDo9p.net]
学生数が5できっちり割れる時は良いけど
そうならない時はどうするのかな?

799 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 17:36:01.49 ID:rO3o63UR.net]
>>795
ご注意ありがとうございます。
array_chunk には、次の記述がありますが、仕様上問題ないです。
「最後の部分の要素数は size より小さくなることもあります」
php.net/manual/ja/function.array-chunk.php



800 名前:デフォルトの名無しさん [2016/06/16(木) 21:36:32.86 ID:geCt37Iz.net]
質問させていただきます。
Class内でメンバ関数で定義した変数を別のメンバ関数から参照するにはどうすれば良いのでしょうか?

801 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 22:26:42.88 ID:S7gZdFkC.net]
>>797
何がしたいか分からんからやりたいことのコード例

802 名前:デフォルトの名無しさん [2016/06/16(木) 22:30:00.80 ID:geCt37Iz.net]
>>798
あ、ごめんなさい
class {
public function a() {
$x = 'hello,world';
}

public function b() {
print $x; //hello,worldを表示する
}

}

簡潔にかけばこんな感じです。
aメソッドで定義した変数をbでも使いたいです

803 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 23:17:55.32 ID:S7gZdFkC.net]
>>799
クラスのプロパティにしたらあかんのか?

804 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 23:23:33.51 ID:OOtzbp5n.net]
クラス内の特定の機能だけでしか使わない変数の扱いについては悩ましいこともあるな。
スコープを厳格にしたいならその機能を別のクラスとして切り出すか、そこまで小分けしたくないなら大人しくプロパティにしてしまうか。
JAVAなんかだとクラス内クラスが簡単に扱えてこういうのに便利なんだけど、PHPってどうなんだっけ。

805 名前:デフォルトの名無しさん [2016/06/16(木) 23:23:34.81 ID:geCt37Iz.net]
>>800
まあそれでもいいっちゃいいんですけど
ちょっとコードが長くなった時とか、別々にして処理させたいんですよね
皆さんがクラス書くときってどうやってるんでしょうか

806 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 23:30:35.19 ID:S7gZdFkC.net]
>>802
そもそも担当処理が違うなら別クラスにして委譲するのが適切だとは思う

807 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 00:04:23.57 ID:OWOb/yaE.net]
public function a() {
  static $x = 'hello,world';
}
これでは要求を満たさないならばおとなしく関数ではなくclassの変数やclass定数にすべき

808 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 01:04:47.60 ID:bXZXch1T.net]
>>804
質問を読んでなんでそんなコードが出てくるのか意味解らん

809 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 01:24:40.23 ID:VvmzJV5D.net]
配列から数をキーとして持つ要素だけを取り出す
いい方法はありませんか?



810 名前:デフォルトの名無しさん [2016/06/17(金) 02:24:59.62 ID:Ub5TQFWS.net]
PHPの本で分かりやすいのある?

811 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 07:28:42.66 ID:yged7CRH.net]
>>807
皆さんはどんなosでどんなツールでphpやっているの?
教えて

812 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 07:38:35.18 ID:kypwTnD/.net]
机の上でノートに鉛筆でコードを書きながら脳内デバッグして脳内リリース。

813 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 07:55:00.51 ID:zTp2v+lf.net]
>>809
奇遇ですな。

同じくアイデア段階では、パソコンでやらずに紙です。
すぐにフローやイメージ図を書き留められる。放射状に広げていける。
紙とエンピツがその時だけ本当に便利だよね。

814 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 08:36:09.46 ID:CYdk5Mt/.net]
シーケンス図は手書きの方が楽、人に見せるときは格好つけてVisioで整形するがな

815 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 10:05:23.41 ID:izLNj4Mm.net]
>>807
山田祥寛(よしひろ)、翔泳社
10日でおぼえる PHP 入門教室、第4版、2012

この本は、Webアプリ作成の流れがわかるけど、
文法の説明は、あまりない

816 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 10:10:12.64 ID:zTp2v+lf.net]
>>812
その人の本地雷だろ。
初心者の時にPEARの本買ったら、意味がわからなくなって挫折しかかった。
別の本で救済された。文法云々の前にとにかく、理屈をこねすぎて本質部分全然わかりにくい。

817 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 10:56:59.01 ID:izLNj4Mm.net]
山田祥寛は第一人者。
様々な言語の本を書いている。RoRでも有名

講習会も1日4万円!

818 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 11:50:18.31 ID:1vjuVThu.net]
>>806
array_filter() で ARRAY_FILTER_USE_KEY フラグを使ってフィルタリングする。
あるいは、foreach で順に走査して該当するものだけ取得する。

819 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 13:12:30.73 ID:VvmzJV5D.net]
>>815
ARRAY_FILTER_USE_KEYというのは初耳でしたが、
借りたVPSに入ってるのは5.4なので、まだ使えませんでした
おとなしくforeachします
ありがとうございました



820 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 16:07:38.77 ID:AeewtahV.net]
ユーザーアイコンの取得方法について質問です。

現在ユーザーアイコンの保存にてaws s3(フレームはlaravel)を利用しています。
疑問なのはアイコンの存在チェックをするべきかどうかです。
(アイコン名はユーザーのid名です)

以下のようにすると、存在チェックと取得の計2回のリクエストが発生してしまいます。
@if (Storage::exists('user-icons/' . $user->id . '.jpg'))
<img src=&quo

821 名前:t;{{ Storage::url('user-icons/' . $user->id . '.jpg') }}">
@else
<img src="{{ Storage::url('user-icons/default.jpg') }}">
@endif

そのため単純にユーザーが会員登録した時点でデフォルト画像をユーザーアイコンとして保存し
以下のようにただ取得するというシステムにしようか迷っています。
<img src="{{ Storage::url('user-icons/' . $user->id . '.jpg') }}">
(アイコンを変えないかぎり、ストレージ上ではデフォルト画像があふれるような感じ)

アイコンを設定するようなサービスは、どのような構造になっているのでしょう?
[]
[ここ壊れてます]

822 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 16:09:49.84 ID:KYjoOhmA.net]
>>817
データベースは使わないの?

823 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 16:40:23.10 ID:AeewtahV.net]
>>818
アイコン変更履歴を格納するという意味でしょうか?

824 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 16:56:34.53 ID:KYjoOhmA.net]
>>819
履歴が必要なら履歴も登録してもいいけど。
例えば、user.iconに画像ファイル名が入ってるなら、
select cese when user.icon is null then 'default.jpg' else user.icon end as user_icon
画像ファイル名じゃなくて、あり/なしでもいいし、フルパスにしてもいいし、
userとは別テーブルにしてもいいし。

825 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 16:58:19.35 ID:KYjoOhmA.net]
っていうか、
> 以下のようにすると、存在チェックと取得の計2回のリクエストが発生してしまいます。
これほんと?
$user->idってインスタンスのプロパティアクセスじゃないの?

826 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 00:14:26.11 ID:SEe9xJ4I.net]
>>817
ファイルを保存したことが確定していればそれでいいというのであればそのステータスをローカルのDBなんかに保存する
アクセス時点でクライアントに画像が見えることを担保したいのであればクライアントサイドでやるべきではないか

827 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 00:48:21.29 ID:W3J+GEBP.net]
>>821
> これほんと?
しかまともなレスがない

828 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 03:06:39.83 ID:zkudPs4r.net]
>>823
つかそいつ一人しかレス付けてないじゃん。

>>817
S3 は高性能なストレージで存在チェック程度のアクセスは気にするような話ではないんじゃない?
ただアイコンを表示する全ての個所でそのコードを書くのはだるいから、デフォルトアイコンを作ってしまうというのもアリだと思う。
ただそうすると、例えばアイコンを設定してないユーザー 10人を一覧表示する場合、
存在チェック式なら同一の画像URL 10個が並ぶからクライアントは結果的に 1回の画像取得しかしないのに対し、
デフォルトアイコンコピー式では画像は個別の 10 の URL になるからクライアントは 10回画像取得をすることになり、
存在チェックなどの些細な負荷より重い実際の画像アクセスが増えてしまう。

829 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 08:33:50.00 ID:8GpUPXrh.net]
>>817
ファイルリストをキャッシュしておいて
ファイルが変更された(画像ファイルの追加や削除)タイミングで
キャッシュをInvalidateすればいいんでないかい?



830 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 08:42:32.00 ID:saT7WdS7.net]
default.jpgくらいは手元(ローカルサーバー)に置いておきたいというのはあるわな
その場合はlocal://default.jpgとかs3-icon://xxxx.yyyみたいな独自書式を用意するかな

831 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 13:57:43.89 ID:a+CHws3P.net]
formと振り分けphpについて質問です。

<form action="furiwake.php">
<input type=submit>
<input type=submit>
<input type=submit>
</form>

で、furiwake.phpで$_POSTの内容判定してheader['Location']するのと

<form><input type="submit"></form>
を何個も書いてそれぞれ別のページに飛ばすのってどっちが良いんですか?
ただの趣味の話?
それともこうした方が良いとかってありますか?

832 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 14:07:09.69 ID:a+CHws3P.net]
書き忘れ
顧客情報データ持っててhiddenで渡して次画面行きたいだけなのですが
1.全部$_SESSIONに詰め込んで<a href>を何個も作ってそれぞれに飛ばす
2.一つの<form>にsubmitを入れまくって振り分け用phpにhiddenで飛ばす
3.<form>を複数作って顧客情報をそれぞれhiddenで飛ばす

$_SESSIONに何でもかんでも詰め込んで良いものか、
それとも振り分け用phpへのアクセスが増える(現実問題は大した事ないけど作り方として)のを避けた方が良いのか
というようなことで迷いました。

833 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 16:03:58.68 ID:ue516XaJ.net]
端的に言うと、どれもやらねぇかな。

834 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 16:51:59.61 ID:OFAUAFhz.net]
>>827
目的と手段を考えれば答えがでるんじゃない。
データを持って次画面行きたいだけなら$_SESSIONを使うかな。
むしろPOSTする意味がわからない。

835 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 19:19:52.96 ID:a+CHws3P.net]
>>829
どんな方法使うんですか?

>>830
取り敢えず$_SESSIONに詰め込む事にします

836 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 20:16:44.01 ID:CHIXqkwm.net]
何を参考にしたのか知らないが、普通はそんなやり方はしない

837 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 20:41:31.45 ID:a+CHws3P.net]
普通はどうするんでしょうか

838 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 20:55:18.11 ID:CHIXqkwm.net]
普通は、一つのformに一つのsubmit
処理内容を分けたいなら、
処理の選択をするエレメントを付けてやる

839 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 22:59:24.24 ID:pgLfn0h3.net]
>>833
自分がしたい処理に似ている有名なサイトのページを分析してみればいい



840 名前:デフォルトの名無しさん mailto:sage [2016/06/19(日) 18:04:14.78 ID:JfyAxJGc.net]
nanoappli.com/blog/archives/5448

こちらのサイトで
simpleXMLでXMLを組み立てた後
整形するためにDOMDocumentで出力しなおしていますが
最初からDOMDocumentでXMLを組み立てることは出来ないのでしょうか?

841 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 02:38:27.16 ID:tnqQkYkd.net]
$xml = simplexml_load_string($str);
json_decode(json_encode($xml), true);

で得られる形式の配列から
xmlに戻す、いい方法はありせんか?

842 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 06:31:07.37 ID:gb8WC3Pe.net]
foreachで頑張る

843 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 07:10:53.68 ID:6mpJGPIZ.net]
php同士ならserialize/unserializeでいいだろ
xmlとかyamlはまああれだ、趣味

844 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 12:29:12.56 ID:tnqQkYkd.net]
RSSを配列化→加工→RSSに戻す
ということをしたいのです
しかしPHPのXML周りはどうもイケてない気がします
簡単なことをするのも煩瑣で、少し突っ込んだ操作も不可能で・・
foreachで頑張るしかないのでしょうか

845 名前:デフォルトの名無しさん [2016/06/20(月) 13:06:06.35 ID:e7qwC/Xx.net]
>>840
Rubyでも使いなさい

846 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 13:56:49.12 ID:CH6czl6r.net]
Rubyを使ったところで向こうのコミュニティに迷惑掛けるだけだろう
どの言語でも共通のDOMすら理解できてないんだから

847 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 14:30:03.12 ID:ppvG3ddJ.net]
Groovy なら、クロージャを使って、簡潔に書ける

タグ名.each{ 要素 ->
要素.value = 'abc'
}

848 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 15:02:05.88 ID:tnqQkYkd.net]
別にPHPが駄目だといっている訳ではありません
実用主義のPHPなのに
XMLと配列との相互変換のための関数が用意されていないのっておかしくね?
と言っているのです
あと値を設定した時に実体参照に変換してくれないところも気が利いてません

849 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 15:30:57.32 ID:tnqQkYkd.net]
>>837
あと良く使われてるこの手法もネームスペース属性がそぎ落とされますし・・
イケてないと言わざるを得ません



850 名前:デフォルトの名無しさん [2016/06/20(月) 15:37:59.20 ID:dCVNOi3X.net]
黙れ!小童!!!!!
chattykh.com/wp

851 名前:-content/uploads/2016/03/CZezN7LVIAApejO.jpg []
[ここ壊れてます]

852 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 15:43:22.49 ID:CH6czl6r.net]
>>844,845
配列に型変換して一体何が楽になると思ってるのか知らんけど
DOMが嫌だという人のために配列っぽく扱えるSimpleXMLElementが用意されてるだろ
ドキュメントも読まずに自分勝手にarray使っておいて気が利かないとか
マとして恥ずかしくないの?

853 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 15:46:32.10 ID:kXAYtV38.net]
>>847
少なくとも配列とDOMを相互変換とか言ってる時点で正気じゃない
黙ってNGに突っ込んでおくのがよい

854 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 16:19:51.02 ID:tnqQkYkd.net]
>>847-848
じゃあXMLのままフィルタリングやソーティングしてみて下さい

855 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 16:21:39.69 ID:o/Q8QvES.net]
入れ子になってる構造でソートだって?

856 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 16:22:31.78 ID:1gK0q/ls.net]
>>844
その辺に関してイケてると思う言語はどれ?

857 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 16:26:10.03 ID:1A5wn0fq.net]
>>850
兄弟の順序に意味があるXMLだって?

858 名前:デフォルトの名無しさん [2016/06/20(月) 17:55:01.05 ID:o3UTjcQ6.net]
セキュリティ関係が頭に全然入ってこないです
どうやって勉強すればいいでしょうか

859 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 18:14:04.86 ID:Iph33/KO.net]
>>853
模擬サーバーにハッキングしてみる(実証実験)



860 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 18:43:25.91 ID:6mpJGPIZ.net]
頭に入らないってことは頭の安全性は保障されてるんじゃね、セキュアだな

861 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 19:42:02.13 ID:DtHt205g.net]
みんな頭いいね。おれなんて
total=total+1の時点で頭がテンパってるわ

862 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 19:51:18.58 ID:7UcrPiUv.net]
いまでもよく無限ループやらかします(小声)

863 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 19:56:33.91 ID:Ht1YDCGg.net]
>>857
ループ変数を $i にするのを卒業しようとしたら $i++ だけ残ってたり

864 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 21:23:50.71 ID:7KDOMThT.net]
イテレートで盛り上がれる純朴さが羨ましい限りだ。

865 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 21:28:32.25 ID:7KDOMThT.net]
Too young to die, too drunk to live なのかねぇ…

866 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 23:03:57.10 ID:tnqQkYkd.net]
>>851
rssの生成は今回はじめてやってるので知りません
他の言語と比較してイケてないと言っているのではなく
単にイケてないと言っているのです

867 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 23:07:57.34 ID:vKqEeD2c.net]
>>861
プログラミング言語なんだからイケてるライブラリは作り放題だぞ
できたら公開してくれ

868 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 07:36:44.50 ID:F8rFyF6H.net]
>>861
XML_RSSってメンテされてないんでしょ、これはあれだ、お前がやれという天啓

869 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 13:10:43.41 ID:ZCseRBtp.net]
XMLオワコン
JSONだけでいいだろもう



870 名前:デフォルトの名無しさん [2016/06/21(火) 14:03:51.86 ID:ZWokyEcu.net]
WEB IDEの PhpStorm ておいくらなの?
会社に購入を申請しようとおもうだけど
お値段がどこにものっていない

871 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 14:17:29.46 ID:ZCseRBtp.net]
https://www.jetbrains.com/phpstorm/buy/#edition=commercial
つうかphpstormでググれば3秒でわかるような質問してる人がプログラマーなのに驚愕

872 名前:デフォルトの名無しさん [2016/06/21(火) 15:02:57.47 ID:ZWokyEcu.net]
>>866
高!!
199ドルもするの??

phpstormでググったけどその価格のページにたどりつけんかったんよ

873 名前:デフォルトの名無しさん [2016/06/21(火) 15:07:06.24 ID:ZWokyEcu.net]
>>866
とりあえず会社に申請してみます。
ありがとう。

874 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 15:20:20.47 ID:ZCseRBtp.net]
ブラウザとか環境によるのかもしれんけど自分の場合こんな感じに出る

PhpStorm IDE :: JetBrains PhpStorm
https://www.jetbrains.com/phpstorm/
このページを訳す
The most intelligent PHP IDE with refactorings, code completion, on-the-fly code analysis and coding productivity orientation.
Download PhpStorm ・ Buy ・ What's new in PhpStorm 2016.1? ・ Docs & Demos

そんでBuyのとこを押すとたどりつけるというわけさ

仕事で使うなら商用ライセンスだろうということでそっち貼ったけど
199ドルは商用ライセンスだから個人の場合は89ドルね
https://www.jetbrains.com/phpstorm/buy/#edition=personal

875 名前:デフォルトの名無しさん [2016/06/21(火) 15:32:11.50 ID:GUPYo8em.net]
PEARを使うことによってPHPでの開発は劇的に向上する

876 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 16:01:19.29 ID:GdkMnzSr.net]
いまさらですか?

877 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 16:07:25.78 ID:JNUr2v78.net]
ネストされた配列を再帰を使わずにパースしていく
いい方法はありませんか?

878 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 16:53:13.58 ID:PPdTS3ln.net]
$199とか、1日の人件費くらいだろ

879 名前:デフォルトの名無しさん [2016/06/21(火) 16:54:36.54 ID:F8qq0CQB.net]
>>871
あんたPEARなんて使ってんの?



880 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 16:56:47.93 ID:GdkMnzSr.net]
安価ミスですか?

881 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 17:10:33.70 ID:gufFnXZC.net]
これ以上ないくらい美しく書けた

//AWS S3上のphotosを削除(データベースはcascadeで対応)
$photosId = $user->photos()->lists('photos.id');
if (count($photosId) > 0) {
$deletePhotoPaths = [];
foreach ($photosId as $value) {
$deletePhotoPaths[] = 'photos/' . $value . '.jpg';
}
Storage::delete($deletePhotoPaths);
}

882 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 17:30:39.61 ID:GdkMnzSr.net]
API仕様知らないけどこれだとまずいの?

$deletePhotoPaths = [];
foreach ($user->photos()->lists('photos.id') as $value) {
$deletePhotoPaths[] = 'photos/' . $value . '.jpg';
}
Storage::delete($deletePhotoPaths);

という些細なものは置いといても、単数形と複数形のポリシーが適当すぎて気持ち悪い。

883 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 18:18:36.43 ID:E96GoXUh.net]
>>876
逆にそれより汚く書くとどうなるんだ?

884 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 18:32:23.09 ID:JNUr2v78.net]
正直ごく普通のコードに見えますが・・。
配列はphotosIdListとかにして配列と示した方が良さそうですね

885 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 18:39:20.94 ID:E96GoXUh.net]
ID からパスを求める処理は他でも使うから、メソッドなり関数なりに切り出しておくべきだろうね。
array_walk のコールバックに合わせたインタフェースにするといいかもしれないが、それだと単体の変換向けにはちょっと使いづらくなるから、
そこをどう解決するかにセンスを求められるかもな。

886 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 18:44:08.60 ID:E96GoXUh.net]
>>880
array_walk じゃなく array_map にすりゃいいのか。
なんかボケてたわ。

887 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 18:53:30.67 ID:Dmco6gBH.net]
>>873
フリーや零細ならそういう考え方でいいが、
ある程度の規模になるとそんな甘っちょろい考え方では済まなくなる。

888 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 20:06:44.71 ID:E96GoXUh.net]
>>872
なんで再帰にしたくないの?
パースって具体的にどんな処理?
もしかして >>837 の人?

889 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 20:08:30.54 ID:JNUr2v78.net]
>>845の件ですが
ネームスペースだけでなく、属性も消えると判明しました
ネームスペースや属性もちゃんと表示するコードをしこしこ手書きしたのに
短い方がいいと思って廃棄してからそのことに気付きました
ファックですね?



890 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 20:10:13.56 ID:JNUr2v78.net]
>>883
処理が単一的でないので、再帰だとどうもうまくいかないと思ったのです
でも再帰でうまく出来そうです
ありがとうございました

891 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 20:11:19.45 ID:Dmco6gBH.net]
>>884
一生言ってろ、dumbass

892 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 20:17:57.37 ID:JNUr2v78.net]
>>886
ハゲは黙ってろ

893 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 20:36:38.54 ID:oaiM5wE7.net]
>>884
gitみたいな分散バージョン管理システムつかいなよ
こまめにローカルコミットしとけば
戻りたい地点にすぐ戻れる

894 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 20:39:12.30 ID:Dmco6gBH.net]
サルがVCSか。どのように使うか見ものだな。

895 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 20:48:50.16 ID:E96GoXUh.net]
>>884
むしろ XML の使い方を simplexml_load_string で扱える範囲に収める方がいいんじゃない?
わざわざ XML を使うなんてのは余所とのデータ交換のためなんじゃないかと思うけど、であればなおさら誰でも読めるフォーマットにした方がいいでしょ。
もう仕様が確定して運用中だったらどうにもならないけど。

896 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 22:24:57.65 ID:JNUr2v78.net]
>>884の件ですが
ファイルを別ファイルとして保存
→undoしまくる
という方法で復活できました

>>888
一応dropboxをバージョン管理に使ってるのですが
今回はちょっとしたテストのつもりでデスクトップで書いていたので・・
ちゃんとした開発ではsubversion使ってます

>>890
生成しようとしてるのはpodcast用のRSSなので、
仕様はすでに決まってるのです・・

897 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 22:34:22.85 ID:3K6j4RYc.net]
>>891
dropboxでバージョン管理とな?

898 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 22:50:17.70 ID:nLutN5Ez.net]
ほんのちょこっとした個人用プログラムくらいなら
Dropboxでも十分よ

899 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 05:54:22.15 ID:cac9buRO.net]
素直にGitは難しくて使い方わかりませんって言えばいいのに。



900 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 08:16:06.21 ID:b8o1sKk7.net]
>>893
俺もプロジェクトごっそり暗号化zipにして日付つけてdropboxに放り込んでるわ
そういう簡単なソフト作った
windowsなら標準でonedriveにバージョン単位で保存できるみたいだけど

901 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 09:54:21.10 ID:pXRO6eh+.net]
GitとGitHubは別物ですか?
SQLとMySQLみたいな。

902 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 10:14:00.80 ID:PtXJngN/.net]
gitを使おうとしたら全部のディレクトリに勝手に管理用のファイルが
生成されたからなんか嫌で使ってない
本番用の公開サイトでもgitの管理ファイルがあってもいいものなの?

903 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 10:52:05.69 ID:Aw/Pyhhi.net]
以前はFTPでファイルのアップロードを行なっていて
いつのころからかrsyncで同期するようになり
今ではhg push

904 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 11:01:25.47 ID:uyRcysT8.net]
気付けば何もかもが面倒になって直接サーバ入ってviで作業

>SQLとMySQLみたいな
うまい

905 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 11:27:29.72 ID:A5e06e5G.net]
全然うまくねえよ、ハゲ

906 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 11:52:44.24 ID:WfMLciR4.net]
>>897
git はトップディレクトリにしか作らなくね?
エクスプローラーがあちこちに Thumbs.db を作ったりするよりはよほどいいと思うよ。
なんにしてもそんなものを公開サーバに上げるのはマヌケ。

それよりも、個人的にはファイルのタイムスタンプが維持されないのが気に食わない。

907 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 12:24:51.88 ID:OlmvlLQ3.net]
>>901
ありがと。参考になります。もう一度やってみるよ。

908 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 12:59:23.09 ID:k28/2S7E.net]
>>882
> ある程度の規模になるとそんな甘っちょろい考え方では済まなくなる。
ある程度の規模になれば、それこそ$199なんて誤差になってくるだろ
MSDNに比べれば、ゴミのような値段

909 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 13:08:25.26 ID:A5e06e5G.net]
>>903
流石、平しかなった事のない奴の発言は重みがあるな。
お前はずっとそう思ってればいいよ。



910 名前:デフォルトの名無しさん [2016/06/22(水) 13:10:35.97 ID:BFfjtylb.net]
PEARを使うことで格段に作業効率がUPするのにどうしてみんな使わないの?

911 名前:デフォルトの名無しさん [2016/06/22(水) 13:42:08.67 ID:pXRO6eh+.net]
オブジェクト指向でクラス化して作っても
結局はあとあと、再利用、改変、再購読する可能性が低ければ
クラス化する意味はあまり無いのですか?

912 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 14:07:44.37 ID:WfMLciR4.net]
>>906
変数をクラス内に閉じ込めておけるという点だけでもクラス化の恩恵はあると思う。

913 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 14:33:22.24 ID:k28/2S7E.net]
>>904
お前のような奴がいると、ちゃんとした統合環境も使えず、GitHubなんかも使えず、
CI環境とか監視ツールとかもできあいのものが使えないんだろうよ
かわいそうだわ

914 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 18:17:18.97 ID:s+FJ5KLI.net]
「添字配列」を英語で何と言いますか?

915 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 18:27:32.70 ID:k28/2S7E.net]
>>909
indexed array

916 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 18:55:49.97 ID:cac9buRO.net]
>>908
どういう論拠でその結論をだしたんだ?
サルの考えることは本当によくわからんな…

917 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 18:58:15.96 ID:cac9buRO.net]
>>905
どれもこれも古臭くて不便だから。
他に良い方法がなく、それが最善である場合を除いては使う必要ない。

918 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 19:03:43.32 ID:cac9buRO.net]
先日PEAR::Mailを使ってるプロジェクトのメンテしたが、
たかがメール送るのにあんなクソみたいなライブラリを使うヤツの気が知れない。
そんな奴だから、PEAR::Mailをより不便に糞ラップしてあった。
そうだ、これこそがPHPerの恐ろしいところだ。

919 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 19:03:46.51 ID:s+FJ5KLI.net]
>>910
ありがとうございます



920 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 19:05:47.43 ID:cac9buRO.net]
>>906
それ、前スレだったか、かなり前に同じこと聞いてなかったか?

921 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 19:13:55.80 ID:cac9buRO.net]
俺が今でも使ってるPEARライブラリというと、Net_GeoIPくらいか…
代替手段が無いのかどうかはしらないが、
昔書いたコードで特に不便はないから放置してあるというのが正しいが。

922 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 19:27:13.26 ID:s+FJ5KLI.net]
>>906
オブジェクト指向で書かないと分かりにくいくらい複雑になった時点で
オブジェクト指向に移行します
再利用しなくても、その方が理解しやすくなるというメリットがあります

923 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 20:22:05.78 ID:s+FJ5KLI.net]
SimpleXMLElementオブジェクトから
XML宣言を取得したいのですが、それらしいメソッドがありません
asXMLメソッドで全体の文字列を取得して
先頭から切り出せば取得できますが、そんな方法しかないのでしょうか?

924 名前:デフォルトの名無しさん [2016/06/22(水) 20:57:41.64 ID:UX1eBnCv.net]
基礎を身につけました
実践的な力を付けたいので
これを作るといいという物を教えてくだたもれ

925 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 21:17:09.01 ID:14AwA6D3.net]
>>919
お家カタログ

926 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 21:17:59.56 ID:tA72U/sZ.net]
>>919
スマホゲーム

927 名前:デフォルトの名無しさん [2016/06/22(水) 21:52:32.27 ID:6WTwmu+N.net]
>>897
それバージョンアップで変わったよ。
リリース時はトップレベルの.gitフォルダを削除してあげればおk

928 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 21:56:30.25 ID:14AwA6D3.net]
>>919
話し相手

929 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 22:03:00.47 ID:s1zk4i3O.net]
>>919
なにを作るべきかついて話し合うサイト



930 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 22:10:54.83 ID:npVvWban.net]
>>922
それだけで本番環境に置き換えられるならすごい便利かも
貴重なアドバイスに感謝です

931 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 22:30:22.51 ID:rpiti0Uo.net]
不要なもんは削除したほういいけど、デプロイはリモートリポジトリからプル。ってやるなら.gitは残さないと。公開ディレクトリ外である事前提だけど。

932 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 22:34:17.61 ID:WfMLciR4.net]
>>926
そのやり方は便利なんだけど、PULLしてる最中の中途半端な断面が公開されてる状態になるというのがいただけないよな。

933 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 23:01:22.76 ID:rpiti0Uo.net]
>>927
そうだね。厳密にやるならプル後にシンボリックリンクでディレクトリ毎切り替えとか。まぁツールで楽しろってこったね。

934 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 10:25:07.43 ID:XHBKYGLc.net]
>>911
> サルの考えることは本当によくわからんな…
お前の考えることの方がわからんわ
$199ごときでがたがた言うのに、>>908みたいなことはないというのか?

935 名前:デフォルトの名無しさん [2016/06/23(木) 11:02:23.22 ID:Ox92qZ2z.net]
「CakePHP3」の登場でPHPはプログラミング言語の上位に返り咲くことが出来ました! 多謝!!!!!

936 名前:デフォルトの名無しさん [2016/06/23(木) 11:22:16.08 ID:w+1ZvzwV.net]
PHPスクリプトを用いて、某英辞書サイトから任意の英単語の語義を抽出してPSS形式(=P-Study-System)にしたいのですが、どなたか方法がわかる方がいたら教えていただけないでしょうか?

●ネット上におちていたPHPのコード : massive.tendon.bz/english/crawl.txt
(拡張子をphpに変えて、FC2サーバLiteで使用)
●某辞書サイト: eow.alc.co.jp/$word(検索ワード)/UTF-8/
●出力ファイル→output.csv
成功版: massive.tendon.bz/english/output_success.csv
失敗版: massive.tendon.bz/english/output_fail.csv
●任意の英単語→wordlist.txt : massive.tendon.bz/english/wordlist.txt

上記のコードを使い、一度は語義の抽出ができたのですが、「Fatal error: Maximum execution time of 30 seconds exceeded in /コードを格納してあるアドレス/crawl.php on line 37」と、表示されて以来、任意の英単語のみ(失敗版output.csv)しか吐かなくなりました。

フリーソフト「PSS=P-Study-System」に読み込んで、英単語学習をしたい……と思ったのですが、使い方がつまずいています。

どなたか解決方法がわかる方がいらっしゃるようでしたら、どうかご教授のほど、お願い致します。

937 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 12:23:02.34 ID:g0w8fquD.net]
>>931
30秒返事がなかったからエラーにするって書いてあるけど
そのサイト、て入力でアクセスして返事すぐ返ってくる?
頻繁にアクセスしすぎて制限かけられたとかじゃないの?

938 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 12:30:52.85 ID:x8Tq2OJc.net]
勘で答えるけど、30秒以上も、色々なサイトを、クロールしていたから、
サーバーエラーになったのだろう

エラーの際、プロセスの強制終了により、設定ファイルか何かのリソースに、
途中まで中途半端に書き込まれて、整合性が取れなくなった。
それ以後、そのファイルを読んでも、正しく処理されないとか?

まあ、普通の無料アプリで、エラー処理まできっちり書いていることは、まれ。
エラー処理後のテストなども、普通しない

設定ファイルなどをすべて削除して、最初からやり直せば?
でも、またサーバーエラーが出れば、同じようになるかも

939 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 12:52:22.88 ID:aUw7JVj6.net]
失敗版しか吐かない問題とは別に、クローラはCLIで動かしましょう



940 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 12:56:23.30 ID:ISrN3FK4.net]
>>932
いやそれはクローラーで、初回に実行しておくかバッチで回すものなんじゃないの。
多分。

941 名前:デフォルトの名無しさん [2016/06/23(木) 14:23:39.57 ID:Ox92qZ2z.net]
CakePHPとLaravolどっちがいいかな?

942 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 17:11:28.79 ID:WHuxwDdZ.net]
ネストされた配列に、キーの配列を使ってアクセスする関数って
PHPにないんですか?
$array['a']['b']['c']['d']
のような配列に、配列['a','b','c','d']でアクセスできるようなやつです

943 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 17:33:34.71 ID:WHuxwDdZ.net]
$a = 'a';
$b = 'b';
echo $a ? $a : $b;

こういう処理で、$aを二度書くのが嫌なのですが
いい方法ありませんか?

944 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 17:39:57.01 ID:WHuxwDdZ.net]
boolとしての判定を配列の先頭から行っていって
trueになった時点でその値を返す
という関数があればいいのですが、phpにはないのでしょうか?

945 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 18:25:23.33 ID:7w307aVI.net]
総合するとおそらく求められているのは
php.net/manual/ja/function.array-search.php#91365
みたいなやつだろ、返す値が不満なら自分で改造しなよ

946 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 18:37:39.57 ID:opomWGEo.net]
>>938
エルビス・プレスリーを使う
echo $a ?: $b;

947 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 18:44:33.45 ID:znOgoNn/.net]
>>929
おサルさん、よく聞きなさい。
仕事の現場で大切なのはお金だけではありません。
俺様が一度でも金について話しましたか?
だからあなたは平しかなった事のない野猿だというのですよ。

948 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 18:46:27.39 ID:znOgoNn/.net]
> >>908みたいなことはないというのか?

あるわけねぇだろ、ハゲ
お前は観点がおかしいんだ
保育園からやり直せ

949 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 18:52:22.06 ID:znOgoNn/.net]
>>938
PHP7を使う。



950 名前:デフォルトの名無しさん [2016/06/23(木) 18:58:32.34 ID:pXTHavhi.net]
俺様だってよwww

951 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 19:10:25.79 ID:znOgoNn/.net]
朕と言った方がよかったか?

952 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 19:12:54.18 ID:ISrN3FK4.net]
>>941
おーすげー
はじめて知った、こりゃ便利だな

953 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 19:37:46.60 ID:aUw7JVj6.net]
「こういう処理」のさらに限定的用法でいいならエルビスでも合体でも使えばよろし

954 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 19:38:09.84 ID:znOgoNn/.net]
$hoge = @$_POST["foo"] ?: "bar";

こういうことしなきゃいけなくなるからダメなんだよ。やっぱ7の ?? じゃねぇと。

955 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 19:40:29.22 ID:WHuxwDdZ.net]
>>940
自分でそういう関数を書くのは簡単ですが
標準の機能を使ってやりたいです
>>941
エルビス演算子というのですね
こんなものがあったとは
ありがとうございました

956 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 19:45:31.19 ID:aUw7JVj6.net]
?: の代わりに ?? を使えと読めてしまうあたり、
偉そうだけど正しい情報を出してくれるタイプの人というわけでもないようだ。

957 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 19:54:22.07 ID:WHuxwDdZ.net]
PHP7では出来るようになってるんですか
でもかなりのメリットがあるなら別ですが
yumで普通に入るくらいになってないと使いたくはないですね

958 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 19:58:22.33 ID:znOgoNn/.net]
この >>951 馬鹿、何言ってるのかよくわかんねぇから、誰か翻訳してくれ。

959 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:00:11.97 ID:znOgoNn/.net]
ああ、>>948 に対して >>949 を言ったと思ったのか。サルだな。
投稿時間をよく見てみろよ、マヌケ



960 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:03:47.46 ID:znOgoNn/.net]
ID:aUw7JVj6 ← 今日採れたての猿

961 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:04:19.65 ID:aUw7JVj6.net]
>>954
え?そういう話じゃないんだけど

962 名前:デフォルトの名無しさん [2016/06/23(木) 20:05:13.04 ID:pXTHavhi.net]
サルサルサルサルさるげっちゅ言うてる奴がサルだったというオチ

963 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:09:48.69 ID:znOgoNn/.net]
>>954
じゃあなんでどういう話か言わないんだ?おさるさん。

964 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:10:09.01 ID:znOgoNn/.net]
アンカー間違えちゃったよ

965 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:12:18.41 ID:znOgoNn/.net]
>>929 とか >>956 はマトモに日本語の会話できんのかな?

966 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:13:28.27 ID:aUw7JVj6.net]
>>958
それこそ >>948 で書いた。
限定された状況下でしか等価にならないものを、知ってか知らずかそれを言わずに ?: や ?? を使えばいいというレスは
正しい情報とはいえないだけ。

967 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:19:11.19 ID:znOgoNn/.net]
>>961

>>938 になんて書いてあるか読めないハゲってことか?

状況が限られてるんだが、PHP7を奨めることになんか問題あんのか?

脳みそないのにお前がハゲになったのは考えすぎたわけじゃなくて遺伝か?

968 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:19:28.62 ID:aUw7JVj6.net]
"?: や" は忘れてくれすまん。

969 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:20:22.45 ID:znOgoNn/.net]
あと、

> それこそ >>948 で書いた。
> 限定された状況下でしか等価にならないものを、知ってか知らずかそれを言わずに ?: や ?? を使えばいいというレスは
> 正しい情報とはいえないだけ。

このクソみたいな日本語は何だ? 中学生でももう少しマシな説明が書けるぞ。



970 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:20:51.96 ID:aUw7JVj6.net]
>>962
確認させて。
>>938 の状況に対して PHP7 を使い、そして ?? を使えばいいというレスをしたってことでいいの?

971 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:22:53.99 ID:znOgoNn/.net]
> "?: や" は忘れてくれすまん。

こいつ何言ってんだ?

?: の場合、$aが設定されていなければNotice吐くんだぞ?
だから >>949 で説明してやったのに。

ここはサル山動物園か?

972 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:23:42.18 ID:znOgoNn/.net]
>>965

他に読めるならどう読むか逆に教えてくれ。

973 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:26:01.78 ID:aUw7JVj6.net]
ありがと。

$a = '0'

974 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:27:10.81 ID:znOgoNn/.net]
>ありがと。
>$a = '0'

それがなんの問題があるんだ? 説明してみろよ。

975 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:28:40.89 ID:aUw7JVj6.net]
試せばわかるでしょ

976 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:28:51.68 ID:znOgoNn/.net]
$a = '0'
$b = 'hoge'

$a = $a ?? $b;

この場合に$aに入って欲しい値を何だと思ってるんだ?

977 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:29:24.06 ID:znOgoNn/.net]
>>970
その言葉、そのまま返すから、何が入って欲しいか言ってみろよ。

978 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:30:34.66 ID:aUw7JVj6.net]
等価じゃないことは確かだから、一概に ?? を使えとはいえないよね。

979 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:31:03.07 ID:znOgoNn/.net]
ほら、話をはぐらかし始めたw



980 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:31:36.67 ID:znOgoNn/.net]
ああ、こいつ、どうやらこの前のシングルクオートエスケープ馬鹿じゃねぇか?

981 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:32:11.22 ID:znOgoNn/.net]
早く何が入って欲しいか答えろよ野猿

982 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:36:14.10 ID:/dY0hFq/.net]
最近変なのが多いな,
「PHPにないんですか?」のID:WHuxwDdZ
「サルと戯れる人」のID:znOgoNn/
ついでにめんどくさいこと分かってるのにわざわざ相手にしちゃうID:aUw7JVj6

983 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:37:40.18 ID:znOgoNn/.net]
>>973

「私は“何が入って欲しいか答えろ”と言いました。
するとどうでしょう?
彼は何もしゃべらなくなりました。
あなたは自分の答えに自信があったんですよねぇ。
あなたは猿じゃないんですよねぇ。ID:aUw7JVj6さん」

https://www.youtube.com/watch?v=wVFNAAHccqA

984 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:38:47.51 ID:znOgoNn/.net]
>>977

この状況で単発で ID:aUw7JVj6 擁護って、随分肝っ玉の大きいこって。

985 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:39:39.42 ID:znOgoNn/.net]
>最近変なのが多いな,

PHPerって本当に自己紹介が得意だよな。尊敬するわ。

986 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:39:50.55 ID:aUw7JVj6.net]
>>978
何が入ってほしいかは質問者しか知らんよ。
で、あなたは挙動の異なる演算子を提示した。
それだけの話。

987 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:41:05.93 ID:znOgoNn/.net]
>968 : デフォルトの名無しさん2016/06/23(木) 20:26:01.78 ID:aUw7JVj6
>ありがと。
>
>$a = '0'

言った後自分で試してみてびっくり m9(^Д^)プギャーーーッ

988 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:41:49.13 ID:znOgoNn/.net]
>>981
ほら、更に話をはぐらかし始めたww

989 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:43:04.83 ID:znOgoNn/.net]
これが、これこそがPHPerなのです。皆さん、どうぞ ID:aUw7JVj6 を宜しく。

>ありがと。
>ありがと。
>ありがと。
>ありがと。
>ありがと。

>$a = '0'



990 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:45:15.70 ID:znOgoNn/.net]
>何が入ってほしいかは質問者しか知らんよ。
>で、あなたは挙動の異なる演算子を提示した。

望む挙動がお前にはわからないのに、なんで異なるって分かるの? おさるさん

>それだけの話。

どれな話なの? ちゃんと説明してくれる?

991 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:46:11.95 ID:znOgoNn/.net]
>ありがと。
>ありがと。
>ありがと。
>ありがと。
>ありがと。

>$a = '0'

アホすぎる! アホがすぎるぞ! ID:aUw7JVj6 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


992 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 21:03:01.96 ID:8l+T8FXA.net]
次スレ立てます

993 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 21:06:15.49 ID:/dY0hFq/.net]
>>987
頼んます

前も言ったけどテンプレ古臭過ぎるので要検討

994 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 21:06:46.23 ID:aUw7JVj6.net]
ワッチョイつきが立ってるよ

【PHP】下らねぇ質問はここに書き込みやがれ 5 [無断転載禁止]©2ch.net
echo.2ch.net/test/read.cgi/tech/1462971286/

995 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 21:09:32.67 ID:8l+T8FXA.net]
次スレ
echo.2ch.net/test/read.cgi/tech/1466683550/

996 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 21:11:23.06 ID:8l+T8FXA.net]
立ててしまった・・・
どちらを使うかはおまかせします

997 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 21:17:37.65 ID:/dY0hFq/.net]
あー, 重複スレがあったのか。
すっかり忘れてた, すまんな

998 名前:デフォルトの名無しさん [2016/06/23(木) 21:47:29.07 ID:pXTHavhi.net]
こんな過疎スレに一日30回近く書き込みする物好きがいると聞いて見物している

999 名前:デフォルトの名無しさん [2016/06/23(木) 22:09:04.47 ID:pXTHavhi.net]
さっさと埋めろや無能ども



1000 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 22:12:48.63 ID:WHuxwDdZ.net]
issetを使っているところをエルビス演算子に置き換えてみたのですが
@でエラー出力を抑制しても、
エラーハンドラをセットしている時にはしっかり呼び出されてますね・・
エラー出力を抑制しないといけないところに使うのは、
あまり筋のいい書き方ではないですね

1001 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 22:29:59.73 ID:ISrN3FK4.net]
?: は便利な書き方だけど $a を boolean として評価した結果と選択したい方が一致しない場合には使いづらいな。
$a が文字列だとして空の時に特別な表示をしようと
echo $a ?: '未設定';
なんてやった場合、$a が '0' だったりすると意図から外れちゃうもんな。

便利な書き方なんだけど惜しい。

1002 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 22:39:41.33 ID:BeTIQhqe.net]
?:は、@$foo にしないとやってられない…

1003 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 22:44:17.42 ID:ISrN3FK4.net]
@ もまた使いづらい。
特に変数が配列だったりすると、内部的には配列のコピーが作られてパフォーマンスに影響があるんだよね。
@$_POST['foo'] の場合にこのキーが無ければ、$_POST がコピーされ foo に対応する値が null な配列を作り出し、式としては null を返し、作った配列は捨てちゃうと。
なんでこんな実装になってるんだろ。

1004 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 23:01:44.89 ID:/dY0hFq/.net]
そもエラー抑制演算子なんて相当の理由がなければ使うべきじゃないし

楽したいならそういう機能のある新しいバージョン使う方が絶対に正しい
新しいバージョンが使えない, 使いたくないというのであれば, 楽をするのはあきらめて素直にissetで定義済みか確認せねばならん

1005 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 23:08:30.51 ID:ISrN3FK4.net]
>>999
まあな。
ただ、配列に関して言えば array_key_exists より isset の方がパフォーマンスがいいというのは微妙に納得いかないw
いや isset の方が楽で助かるけどさ。

1006 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 43日 1時間 21分 40秒

1007 名前:1002 [Over 1000 Thread.net]
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
premium.2ch.net/
pink-chan-store.myshopify.com/


1008 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<272KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef