◎正当な理由による書き込みの削除について: 生島英之とみられる方へ:
【PHP】下らねぇ質問はここに書き込みやがれ 8 [無断転載禁止]©2ch.net ->画像>4枚
動画、画像抽出 ||
この掲示板へ
類似スレ
掲示板一覧 人気スレ 動画人気順
このスレへの固定リンク: http://5chb.net/r/tech/1489506082/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。
PHPに関する下らない質問用避難スレです。
まず読むこと【PHPマニュアル】
http://www.php.net/manual/ja/ 前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 7
http://echo.2ch.net/test/read.cgi/tech/1478657006/ 次スレは
>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】7.0
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・ 解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・ 誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・ SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
>>1乙
前スレ
>>974の件はDB云々よりも別担当者が作ったコード片の安全性をどう担保するかが一番の問題
会員対応の担当者が自由にカスタマイズ部分をPHPで編集できるようにしたいけど
その都度システム担当者(質問者)がレビューやテストをやってコードに組み込む手間はかけられないから
それを解決する手段として考えた案だと想像してる
DBにコードを入れることも想定できない人が騒いでたようだね。
最近はジョブ管理システムなどもWebの技術で作ったりするんだけど・・
あと読み込んだ文字列をプログラムとして実行するようなものも、システム周りのスクリプト読むと多いよ。
まぁPerlが多いけど、最近だとRubyで作った管理ツールとかも増えてるね。
Perlは後で人が読むことを考えないプログラムが多くて辛いけどw
Rubyの人は、Rubyの世界で全てやろうとする傾向に違和感あるけどww
同じく
自分が分かってないことを分からない人は成長の見込みも薄いからね
前スレで
> WEB以外を知ってたら、なんでDBにコードぶっこむことになるんだよ土人
> 何より、DBに入れるメリットが何処にあるんだ、アホなのか?
って聞かれたのにそれには答えず、
> DBにコードを入れることも想定できない人が “騒いでたようだね”。
だもんな。本物の馬鹿じゃん。
> 最近はジョブ管理システムなどもWebの技術で作ったりするんだけど・・
とか、DBにコードぶち込むことがなんでWEBの技術になるのかわけわからんし、
PerlとかRubyとか名前出すことが何の意味があるのか、そいつの説明からは全くわからん。
何よりこの馬鹿
>>5 ってさ、HOWばっか気にしてんのな。
何をするか=DBにコードを入れる にずっとこだわってんの。
アホほどHOWだのWHATだのにこだわるんだよ。
頭がマトモなやつが重要視するのはいつでもたった一つ、WHYなのさ。
なんでそんなことするのか、何故そうしなければいけないのか。
このアホ
>>5には、その説明が一切ない。
それこそがノータリンの証なわけさ。
> Perlは後で人が読むことを考えないプログラムが多くて辛いけどw
> Rubyの人は、Rubyの世界で全てやろうとする傾向に違和感あるけどww
そして、アホは必ず全く意味のないところで草を生やす。これも定番だ。
一応、正確に
> WHATやHOWばっか気にしてんのな。
> 何をするか、どうやるか=DBにコードを入れる にずっとこだわってんの。
に訂正しとくけど、それはしなくてもわかんだろ。
インスタンス生成時、変数に代入しない場合何かデメリットありますか?
?
・参照できない
・スコープが外れるまでメモリから意図的に破棄できない
・場合、言語によってはメモリリーク
あたりか?
何が聞きたい? てか、なんでそんな事したい?
オレがWHYが大事だと言った直後の書き込みとは思えん
>>13 お前、何言ってんの? ちょっと詳しく説明しろよ
> スコープが外れるまでメモリから意図的に破棄できない
これについて詳しく教えていただけますか
ホワイ ジャパニーズ ピーポォォォォォォォォォォ!!!
2つの別々の変数に同じ文字列が入っている場合、それぞれの変数をキーにした
要素数2の連想配列を作ろうとすると最終的な要素数が1になってしまうのは
仕様ですか?
>>20 できないんですね、すみません
普通に動くことは動くので出来ると思ってました
データベースから値を2つ持ってきてそれらをキーとバリューで紐付けようとしてました
勉強し直します
>>21 できないとかじゃなくて、「お前のPHPは、どうやって“変数”をキーにしてんだ」って聞いてんだ。
変数の値をキーにすることは出来るが。
>>10 え?まじ?
DBにコードを入れるメリットというより、
デメリットがどのくらいあるのかを知りたい、入れて良いのかを知りたいってのが
元の質問だったはずなんだけど・・
だから、実際にコード入れてるシステムの例をあげるのが一番わかりやすいと思うんだけど
そもそも、それにメリットがあるかどうかはシステムの要件によるので意味のない質問なんだよねww
運用する人からDBに入れてくれって要望があることもないとは言えないからね。
実際ちょっとしたファイル変更もやりたくないって人もたまにいるんだよね。
DBなら認証もバックアップもセキュリティもDB管理者がやってくれるからって、たまにあるんだよね。
>>21 今変なのが湧いてるけどwww
最初の質問の意味がわかりにくかったんだが・・
ハッシュキーで、同じキーを使ったら上書きされてしまうのは仕様ですね(これはPHPとか関係なく)
2つのキーを持った連想配列ってことならPHPでは簡単に出来るよ
例えば多次元連想配列でググってみて
他にも、配列の中に配列を入れたりもPHPだと簡単に出来るので便利だよ。
> 運用する人からDBに入れてくれって要望があることも“ないとは言えないからね”。
> DBなら認証もバックアップもセキュリティもDB管理者がやってくれるからって、“たまにあるんだよね”。
> あと読み込んだ文字列をプログラムとして実行するようなものも、システム周りのスクリプト読むと“多いよ”。
> まぁPerlが多いけど、最近だとRubyで作った管理ツールとかも“増えてるね”。
>“最近はジョブ管理システムなどもWebの技術で作ったりするんだけど”・・
ばーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーかw
>>25 : デフォルトの名無しさん (ワッチョイ 0342-QFag)2017/03/17(金) 13:07:23.79 ID:hXHSlYUO0
>21
> 今変なのが湧いてるけどwww
自己紹介おつかれさまっす
>そもそも、それにメリットがあるかどうかはシステムの要件によるので意味のない質問なんだよねww
メリット無いものについて「DBにプログラムリストを入れるのを最初から否定するのは“発想が貧困すぎww”」とか
草生やす馬鹿は、マジ、ペチパーくらいしかいねぇよなw
>>24 : デフォルトの名無しさん (ワッチョイ 0342-QFag)2017/03/17(金) 12:53:02.59 ID:hXHSlYUO0
>10
> え?まじ?
おまえの頭がマジかよ!?w
>>25 : デフォルトの名無しさん (ワッチョイ 0342-QFag)2017/03/17(金) 13:07:23.79 ID:hXHSlYUO0
>ハッシュキーで、同じキーを使ったら上書きされてしまうのは仕様ですね(これはPHPとか関係なく)
使用じゃなくて“道理”だよ、ノータリン
>2つのキーを持った連想配列ってことならPHPでは簡単に出来るよ
お前、何いってんの? 日本語話せよクズ
>他にも、配列の中に配列を入れたりもPHPだと簡単に出来るので便利だよ。
PHPだけじゃねーよ、そんなの。本当に脳みそ腐ってんのかお前
ばーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーかw
ID:hXHSlYUO0
こいつ、マジ、話せば話すほどボロだしくるの、マゾなん?
> 運用する人からDBに入れてくれって要望があることも“ないとは言えないからね”。
> 実際ちょっとしたファイル変更もやりたくないって人も“たまにいるんだよね“。
> DBなら認証もバックアップもセキュリティもDB管理者がやってくれるからって、“たまにあるんだよね”。
なるほどー、つまりお前 ID:hXHSlYUO0 は、マトモなシステム構築ではなく
他人のわけわからん指示に従わなければならない下僕、ただのクソコーダー、というわけですね?
そんな下流の人に、発言権なんか、ねーです、さーせん
他人のわけのわからん指示って、運用を考えたシステム構築とかやったことないんだね。
もしくは、人と話をしたこともないのか?
どうりで質問者の意図を読み取ろうとしないわけだ
>他人のわけのわからん指示って、運用を考えたシステム構築とかやったことないんだね。
“本当に運用を考えた構築”したら、お前の言うようなシステムになんかなんねーよ
アホが集まって考えたアホシステムを言われたとおりに作らされてるお前の意見なんか、説得力ね〜ってまだわかんねーの?
お前自信が言ってんだろ
> 運用する人からDBに入れてくれって要望があることも“ないとは言えないからね”。
> 実際ちょっとしたファイル変更もやりたくないって人も“たまにいるんだよね“。
> DBなら認証もバックアップもセキュリティもDB管理者がやってくれるからって、“たまにあるんだよね”。
そりゃ、それを選んだんじゃなくて、“仕方なく”やってるだけじゃねーか
本物の下流だな
>もしくは、人と話をしたこともないのか?
おまえがなw
人と話すには論理ってのものが必要になる。
おまえの言い分に論理があるかよ?
お前の言ってることは、「上が言うから仕方ないんです」の一辺倒じゃねーか
>>16 多分何かと勘違いしてるんじゃないかなぁ?
14自体意味不明だしww
頭の中でGCの話に強制変換されてるのかもねww
まぁ最初の質問が壮大すぎて・・もう少し具体的に書いてもらうと回答あると思うよ。
>どうりで質問者の意図を読み取ろうとしないわけだ
ここはYahoo! 知恵袋じゃねーよ
質問者の意図よりも、技術者としてどう対応するかの方が重要だ
まぁ、上の指図に反論もできない使いっぱは、せいぜい質問者に併せてなぁなぁやってろ
>>36 : デフォルトの名無しさん (ワッチョイ 0342-QFag)2017/03/17(金) 13:45:55.68 ID:hXHSlYUO0
>16
>多分何かと勘違いしてるんじゃないかなぁ?
>14自体意味不明だしww
>頭の中でGCの話に強制変換されてるのかもねww
ほらな、この程度の馬鹿だもん
そりゃ、上からの指示をそのまま実行することしかできねーよな。
このバカ、多分メモリ使用量とか図ったこともないぜ
てか、実際のところ、ぺちぱーって
>>14とか
>>16の意味分かんないやつ、マジでたくさんいるんだろうな
そりゃ、多言語ユーザーから馬鹿にされるわけだよ
>>36 >頭の中でGCの話に強制変換されてるのかもねww
こんな自虐的に草は生やせるのが、ノータリンペチパークオリティーなのですw
おーい、ワッチョイ 0342-QFag ID:hXHSlYUO0
ま じ で、 >>14 と >>16 の意味、わ か ん ね ー の ?????
本 当 に プ ロ グ ラ マ ー な の ? www おーい、アホ
>>25 ワッチョイ 0342-QFag ID:hXHSlYUO0
> >2つのキーを持った連想配列ってことならPHPでは簡単に出来るよ
> お前、何いってんの? 日本語話せよクズ
これについて、詳しく説明しろよw
逃げるなよw
アホレスを晒しとこ
>>985 = ワッチョイ 0342-QFag ID:hXHSlYUO0 : デフォルトの名無しさん (ワッチョイ f342-aox5)2017/03/13(月) 14:08:04.12 ID:f3raQE2X0
> プログラムも信頼できない人が作っておける環境だとまずいけど
> そうでなければ、DBにどんなプログラムを実行するかの情報を入れること自体は問題ないと思いますよ。
> まぁ直接文字コードを入れさせると、入力間違いで変なプログラムが実行される危険があるので
> そこはプログラムリストから選ぶような仕組みにした方が良いと思うよ。
>
>>973 みたいにDBにプログラムリストを入れるのを最初から否定するのは発想が貧困すぎww
前スレ
>>973の発想が貧困なんじゃなくて、お前に決定権が無くて言われたことを実行するしか許されてねーだけじゃんwwww
お? 貼ってみて気づいた
>まぁ直接文字コードを入れさせると、入力間違いで変なプログラムが実行される危険があるので
>
>>973 みたいにDBにプログラムリストを入れるのを最初から否定するのは発想が貧困すぎww
なんすか? この、「オレだけが分かる用語定義」みたいなのwwww
「もじこーどいれる」ってなんすか?wwww
「ぷろぐらむりすと」ってなんすか?wwww
ちょっと説明プリーズっすwwwwwwwwwwwwwwwwwwwwwwww
やべぇ、
まじ、ぺちぱー ワッチョイ 0342-QFag ID:hXHSlYUO0、やべぇw
マジ、脳みそ腐ってるwwwww
巻き込まんでくれ。
気が付けばジャグ配列もメジャーになったもんだね。
あと本当にどうでもいいんだけど ID に iPod が入ってて、世が世なら神IDだった
>>25 ああ、キーを一意につけてからバリュー自体を配列にしてそこにデータを入れ込めばいいんですね
ありがとうございます。やってみます
>>25 遅くなりましたが無事出来ました
イメージとしては
$hoge = 'hoge';
$hoge_flg = '1';
$hoge2 = 'hoge';
$hoge2_flg = '1';
$piyo = 'piyo';
$piyo_flg = '0';
みたいなデータがいくつかあって、変数名_flgが1の変数だけ格納した配列を作りたかったんです
最初は連想配列をよくわかってなかったので
$array = array_keys(array_filter([
$hoge=>$hoge_flg,
$hoge2=>$hoge2_flg,
$piyo=>$piyo_flg
],function($elm){
return $elm === '1';
})
);
と書いたら$arrayは['hoge','hoge']になるかと思ったのですが実際は['hoge']となり重複が
消えてしまったので困っていました
>>25を参考に
$array2 = array_column(array_filter([
['id' => $hoge, 'flg'=> $hoge_flg],
['id' => $hoge2,'flg'=> $hoge2_flg],
['id' => $piyo, 'flg'=> $piyo_flg]
],function($elm){
return $elm['flg'] === '1';
}),
'id');
と書き直したところ無事期待していた配列を得られました。改めてありがとうございました
PHPはまだ触り始めてから1ヵ月も経ってないので難しいですがなかなか面白い言語ですね
結局phpとRubyてどっちがいいの?
初心者より
>>49 いろいろ作りながら学習していくと良い
ただこのスレとかWebProgのスレとかは2chの中でも特に治安が悪いから, 2ch以外で聞いたりした方がいいだろう
>>50 Rubyだっつってんだろ、
安易にPHPとか使う馬鹿は ワッチョイ 0342-QFag ID:hXHSlYUO0 みたいに初心者と馴れ合いする知識しかない馬鹿にしかなれん
少しはマシな知識がほしいならRubyやってろ
マジかよ「パーフェクトPHP」買ってきたばっかりなのに
返金してもらったほうがいいかな?
まず、そんな理由で返金してもらうような人外はじゃまだからこの業界に入ってくるな
データベースで数百万有るデータの中から10件のデータをランダムに呼び出したい場合
何が一番データベースに負担かけずに呼び出せるんだ?
>>55 まず、おまえがどんな検索をしてるか書けよ
>>56 オレが出ていったらおまえらみたいな搾りカスしかいなくなって困るだろ?
>>55 order by random 使っているRDBMS でググる
>>55 ランダムという言葉が指す意味が不明確。
DBにインデックス張れ、で済みそうな気もする。
変数の連結には.じゃなくて,使えって言われた!
速いんだって!
知らんがな(´・ω・`)
いや知っとけよ
遅い速い以前に内部の挙動が違うやん
>>58 うまくいきました。
ありがとうございます。
, には連結の意味はないけど
echoしたら空白無く出力されるから連結して見えるだけ
. は実際に連結処理してる
web系プログラム初心者です
PHPを使ってローカル内のCSVをアップして、MySQLにインサートする処理をしたいのですがファイルのアップ処理で躓いています
HTMLあたりの処理から自信なくやってるため、
PHP以前にHTMLの要因もあるかもしれませんが、どなたかご教示願えませんか?
HTMLもCSVも使わず、まずは一つのデータをMySQLに追加してみる
これができないならHTMLの知識と関係はない
>>66 あと別スレで無事解決しました
ありがとうございます
WEBアプリで、例えば宿泊客管理アプリで
ズラーと顧客一覧が並んでて
田中一郎 [編集][削除]
香山誠一 [編集][削除]
美樹本洋介[編集][削除]
みたいなかんじとするじゃないですか。
で、選ぶと、当然 GETなりPOSTなりで IDが送られ
編集画面で
名前[ 田中一郎 ]
カナ[ たなかいちろう ]
住所[ 東京都足立区... ]
....
みたいな感じで編集画面が表示され、編集完了のサブミットをおすと
これまた GET POST で情報が送られ
SQLなどに送信されてデータが書き換わるという感じだとおもうのですが、
この際にGETやPOSTの内容を WEBデベロッパーツール等で
書き換えて不正な値や、他のデータへまで影響するのを避けるようにするは
どういった対策が考えられるでしょうか?
できればバリデーション処理無しで。
>>68 >どういった対策が考えられるでしょうか?
いっぱい勉強する
以上
>>69 それ言い出したらこのスレの存在の意味はないな
>>68 >できればバリデーション処理無しで。
無理
以上
> バリデーション処理無し
ここでいうValidationっていうのがなんかのフレームワークの機能を指してる可能性?
ネイティブならともかくWebアプリで
クライアント側の暗号化ロジックを隠すのはほぼ無理
>>75 お前のアプリは通信を暗号化することで
> この際にGETやPOSTの内容を WEBデベロッパーツール等で
> 書き換えて不正な値や、他のデータへまで影響するのを避ける
ことが出来んだ、すげーなwwww
ちょっとそのアルゴリズムを教えろよwwww
>>74 指していたらなんか話が変わってくるのか? ゴミカス
>>76 おまえの喋っていることに、何か意味があると思ってる?
それってクライアントが不正することが前提の話なの?
>>78 馬鹿すぎて想像もできないんだろうけど通常の思考を持ってたらバリデーション無しとか書かねえだろ無能
>>79 つおまえか!
口は悪いが理解はマシなやつだと思ってたんだが
誰かすまん、この馬鹿展開が論理的に成立している根拠を教えてくれないか?
>>81 こいつ、マジ、脳みそ無い
74 : デフォルトの名無しさん (ワッチョイ 6a79-jHpr)2017/03/24(金) 22:35:18.56 ID:p/x57KqO0
> バリデーション処理無し
ここでいうValidationっていうのがなんかのフレームワークの機能を指してる可能性?
78 : デフォルトの名無しさん (ワッチョイ dff0-FAJs)2017/03/24(金) 23:44:40.72 ID:AiSXPZSJ0
>>74 指していたらなんか話が変わってくるのか? ゴミカス
81 : デフォルトの名無しさん (ワッチョイ 6a79-jHpr)2017/03/24(金) 23:55:10.59 ID:p/x57KqO0
>>78 馬鹿すぎて想像もできないんだろうけど通常の思考を持ってたらバリデーション無しとか書かねえだろ無能
あーあ、
>>81 みたいな文盲、早く死なねーかな…
>
>>82 : デフォルトの名無しさん (ワッチョイ ea3c-EscV)2017/03/25(土) 00:00:20.61 ID:WyZVpsBF0
> >79
> つおまえか!
> 口は悪いが理解はマシなやつだと思ってたんだが
そうだよ? オレだよ?
口は悪いが博識で知能も高く、常に正しいことを言い清廉潔白で汚いことはせず、
中肉中背、暴飲暴食はせず、つつましく人生を全うする髪の毛フッサフサのオレだよ?
なんか文句ある?
これPHPじゃ無理でしょう
ネットゲームのチート対策みたいなことしないといけなくない?
はい、アホ登場
>これPHPじゃ無理でしょう
論拠、よろしく♪
住所が
「東京都足立区.」のはずが
「東京都墨田区」に書き換えられていたとして
どうやってその正当性をチャックしたら良いのだろう?
23区に存在する名前かどうかまでは出来るだろうけど
存在する区名なら、予め適正値を知ってない限り受け入れないといけないよね?
get値変えてpostなんてデベロッパーツール使わなくてもアドレスバーに入れれば送信できるやん?
>>92 受け取り側が$_POST["hoge"]しか受け取らない設定であれば
POST値でおくらなければならない。
しかし POST値であっても Chrome検証ツールとかでなんとでも書き換えれる。
ラジオボタンで
<input name="impression" value="はい">
<input name="impression" value="いいえ">
があったとして、ローカルでソースを書きかえて
<input name="impression" value="どちらでもない">
とついかすれば、
「どちらでもない」という値がポストされる。
権限レベルが3以上の方でないと編集できません。
<input name="permission_level" value="1">
↓
権限レベルが3以上の方でないと編集できません。
<input name="permission_level" value="5">
とかもできるかもしれない。
まあ、権限レベルとかは流石にPOSTでもGETでもなくSESSIONに格納するが・・・。
見たまえ、諸君 この噛み合わない会話をwwwwwwwwwwww
> この際にGETやPOSTの内容を WEBデベロッパーツール等で
> get値変えてpostなんてデベロッパーツール使わなくてもアドレスバーに入れれば送信できるやん?
>>90 : デフォルトの名無しさん (ワッチョイ fe1f-5sBS)2017/03/25(土) 03:32:56.70 ID:xo5w+TUA0
> 住所が
>「東京都足立区.」のはずが
>「東京都墨田区」に書き換えられていたとして
> どうやってその正当性をチャックしたら良いのだろう?
自分がアホなこと言ってるって気づくのに3年くらいかかりそうだな…
>>94 何か間違っとるの?
post値はurlじゃムリだけどgetはいけるやん?
>>96 そうだよ、そのとおりだよ? で、お前、本当に文盲?
相手が「GETやPOSTの値の変更」って言ってるのに、
なんで「GET値を変更してPOST」に話変えちゃうの?
それから、普通は紛らわしいから「GET値を変更して送信」とか言うよね
英語的にはPOSTするで間違ってはいないけど、頭がマトモなら「GET値を変更してPOST」とか言わないよね
おまえ、ノータリンだよね?
>>98 お前周りにいちいち細けえことウザいって思われてるだろ
>>100 え? オレ、エスパーじゃないから、
>お前周りにいちいち細けえことウザいって“思われてるだろ”
他人がどう思ってるかなんてわかるわけないじゃん?wwwwwwwwww
おまえ、わかるの??? すげーーーーーーーーーーーwwwwwwwww
エスパー現る! エスパー現る!wwwwwww
____
/_ノ ヽ、_\
o゚((●)) ((●))゚o ,. -- 、
/::::::⌒(__人__)⌒:::::: / __,>─ 、
| |r┬-| / ヽ
| | | | { |__
| | | | } \ ,丿 ヽ
| | | | / 、 `┬----‐1 }
| | | | / `¬| l ノヽ >>100 くそばーーーーーーかwwwwwwwwwwwww
\ `ー'ォ / 、 !_/l l / }
{ \ l / ,'
\ ´`ヽ.__,ノ / ノ
\ ヽ、\ __,ノ /
 ̄ ヽ、_ 〉 ,!、__/ >>102 getの話してんだからgetの部分の話だけしたら
「postの話してねーじゃん!ノータリン!」
てお前がバカなだけだろ?
なんならこのスレ終わるまでテメーのクソっぷりを語り尽くすか?
この程度で勝ち誇ってんじゃねえよクソが
ほらこいよ?
なんならリアルで待ち合わせすっか?
テメーのクソみたいな顔拝ませろ
ぷっ、マヌケがなんかホザき始めたw
>>104 >getの話してんだからgetの部分の話だけしたら
おまえ、「GETをPOSTする」とか、本当に言うんだ?wwwwwww
いーーーーーーーーひゃっひゃっひゃっひゃ!
>>104
____
/_ノ ヽ、_\
o゚((●)) ((●))゚o ,. -- 、
/::::::⌒(__人__)⌒:::::: / __,>─ 、
| |r┬-| / ヽ
| | | | { |__
| | | | } \ ,丿 ヽ
| | | | / 、 `┬----‐1 }
| | | | / `¬| l ノヽ 「GETをPOSTする」やてーーーーーーーーーーwwwwwww
\ `ー'ォ / 、 !_/l l / }
{ \ l / ,'
\ ´`ヽ.__,ノ / ノ
\ ヽ、\ __,ノ /
 ̄ ヽ、_ 〉 ,!、__/ 一応、他の参加者に聞いておくけどさ
なんか、このバカ
>>104 オレがどういう奴か分かってねーみたいなんだけどさ、
こいつがこんなこと言ったんだから、
>なんならこのスレ終わるまでテメーのクソっぷりを語り尽くすか?
本当にこのスレ終わるまでやっちゃってもいいんだよな?
オレのせいじゃないよ? このバカ
>>104 が悪いんだから、オレに文句言うなよ?
な?wwwwwwwwwww
>>105 : デフォルトの名無しさん (オッペケ Srd3-6vFh)2017/03/26(日) 09:34:49.48 ID:dNTFG84Fr
> ほらこいよ?
> なんならリアルで待ち合わせすっか?
> テメーのクソみたいな顔拝ませろ
あらいやだ、野蛮な人はすぐこういうこと言い出すわねw
お下品ねー、「GETをPOSTする」とか言っちゃう頭の人ってwwwww
>>104 : デフォルトの名無しさん (オッペケ Srd3-6vFh)2017/03/26(日) 09:32:51.03 ID:dNTFG84Fr
> この程度で勝ち誇ってんじゃねえよクソが
あー、負けてるって自覚あるんじゃんwwwwwwwwwwwwwwww
負け犬の遠吠えw
負け犬の遠吠えwwwww
「GETをPOSTする」って、一体、何グラマのセリフなん????wwwww
2017年第一四半期 流行語大賞
____
/ \ /\ キリッ
. / (ー) (ー)\ <「GETをPOSTする」
/ ⌒(__人__)⌒ \
| |r┬-| |
\ `ー’´ /
ノ \
/´ ヽ
| l \
ヽ -一””””~~``’ー–、 -一”””’ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
php7の環境に、過去に作ったプログラムを置いてみたら
全く動かんかった。
非推奨関数とか混ざりまくってるから
動くようにするには、かなり改修が必要そうだ。
ファイルのパスを以下の二通りで指定すると解釈が違うようなのだが何故だ?
./path/file
path/file
>>117 まぁ、その「解釈が違う」ケースを書いてみ。
ひょっとしたらそれを書けば、おまえの独力でも解決できちゃうんじゃね?
>>105 : デフォルトの名無しさん (オッペケ Srd3-6vFh)2017/03/26(日) 09:34:49.48 ID:dNTFG84Fr
> ほらこいよ?
> なんならリアルで待ち合わせすっか?
> テメーのクソみたいな顔拝ませろ
来いよって言うから行ってやったら、なしのつぶての件、クソワロスwwwww
>>117 実行時のカレントディレクトリが異なるんじゃないのかな
some_fn(1,2,3,4)
こう渡すべき関数があって、渡したいデータは[1,2,3,4]という感じに配列に入っています。
some_fnを拡張する以外に、うまく渡す方法はないでしょうか?
let [ a, b, c, d ] = [1,2,3,4]
some_fn(a, b, c, d)
>>126 レスありがとうございます。
ちょっとそれだと自力感が強くて、some_fnの引数が可変だったり場合も応用がききづらいですね。
evalを思い出したので、入力も自分が用意するもので外部由来ではないので、他の方法思いつくまでevalで代用しておきます。
$a = [1,2,3,4];
$a = 'return some_fn('.implode(',',$a).');';
eval($a);
>>128 おー出来るようになってたんですね。
PHP5.4だったので早速アップデートしてみます。
ありがとうございました。
【OS名】Debian 8
【PHPのバージョン】7.0
【連携ソフトウェア】なし
【質問内容】
あるクラス(仮にMy)のメソッド(同my())があるとします
Threadを継承したクラス(仮にMyThread)のインスタンスをstart()する式が中にあるmy()をコールしたとき、
生成したスレッドの終了を待たずにmy()を終了する方法はありますか?
class MyThread extends Thread {
function run() { echo "start!\n"; sleep(3); echo "stop!\n"; }
}
class My {
function my() { $thread = new MyThread(); $thread->start(); }
}
$my = new My();
$my->my();
echo "here!/n";
で start!->stop!->here! を start!->here!->stop! のようにしたいのです。
PHPで簡易掲示板作成して公開してみたら英語ロシア語のスパム投稿が殺到するようになった
さっそくkcaptchaというツール使って画像認証機能付きに改造してみたんだけどそれでも
スパムが殺到するんだわ。
結局日本語以外の投稿は片っ端から破棄する方式に変えて対処できるようになったけど
それでも飽きずに投稿を試みてくるんだよw
ああいう画像認証突破って人海戦術で投稿してるんだろ?
拒絶されまくってるのによう飽きずに何度もチャレンジしてくるわな
ご苦労さんとしか言いようが無いw
>>131 Worker使ってPoolに放り込む
但しWorkerも別スレッドなので処理順序に関しては保証出来ない(自分の環境だと"here"が最初になる)
どうしても実行順序を揃えたければPoolのsubmitメソッドをオーバーライドしてparent::submitコール後にウェイト掛けるようにすればいい
書けなかったのでideone
https://ideone.com/tzpULt >>133 here!とstart!は前後しても大丈夫です。Poolを使えばいいのですね。ありがとうございます。
SQLを変数に格納するとき職場だと
$sql ="";
と初期化してからSelect文やらを代入し始めるのですがこれには何か意味があるんですか?
>>135 > と初期化してからSelect文やらを代入し始めるのですがこれには何か意味があるんですか?
文字列接続でSQLを組み立てるときに、SQLがずれないという微妙なメリットがあるといえばある。
$sql = 'SELECT ...';
$sql .= 'FROM ...'
と
$sql = '';
$sql .= 'SELECT ...';
$sql .= 'FROM ...';
の違い。
ちなみに俺はヒアドキュメントを使う。
意味はないだろ。
変数は初期化してという職場ルールとかだろ。
なるほど、こういう場合もありえるか。
http://php.net/manual/ja/language.variables.basics.php > 初期化されていない変数のデフォルト値に依存すると、そのファイルを
> include している別のファイルで同名の変数が使用されていた場合などに
> 問題を起こします。
> また、register_globals が on の場合には重大なセキュリティリスク
> を抱えることになります。
名前空間使わないとかクソだし
register_globalsがonの環境自体がクソだし
もっと手前のことを考えるべきだろうけど
PHPでゲーム開発って今どんな感じ?
まだ、現役で使える?
PHPしかできないならさすがに仕事はない
と元ゲームメーカープログラマの俺は思う
質問させて頂きます。
PHPを使った簡単な選択ゲームを作成していまして、最初に名前(フォーム)を入力してもらい、以降のページでradio
ボックスを使って選択していく感じです。
クリア画面で最初のページで入力した名前(フォーム)を表示するにはどういったやり方がよろしいでしょうか?
php7 に uuidライブラリを導入したのですが、sudoでしか受け付けてくれません
インストールはpecl install uuidで入れたのですが、root以外はじかれて、ページ上では500エラーとなります
なにか間違っているんでしょうか?
>>149 メンテナンスされてないエクステンション使うよりメンテナンスされてるライブラリ使った方がいいよ
https://github.com/ramsey/uuid root使えないならcomposerで導入できるライブラリ探せ
>>151でまず問題ないはず
PHP5でアンケートページを作りました。
「アンケート入力」の画面で送信ボタンをおしてページ移動を
しています。パソコンとマックのブラウザからはちゃんと
動作している(アンケート画面が移動する+MySQLにも書き込みが
されている)のですが、iPhoneのLINEからアクセスするとエラーが
出てしまいます。AndroidのLINEではエラーがでません。
iPhoneを持ってないので確認が難しいです。
googleで検索してもアプリ内ブラウザの違いのようなのですが、
具体的に何が原因なのかわかりません。
なにか注意点とかiPhoneのLINEだとこれはダメだなどありましたら
教えて頂けないでしょうか。よろしくお願いします。
せめてエラーログの内容くらい書いてほしい
iPhoneの場合は純粋のブラウザ(safari)でアクセスするのと、
アプリ内ブラウザで立ち上がるブラウザ(webview)が違う
例えばwebviewの場合はcookieを保存しないなど、ちょっと挙動が違うところもある
てか、開発するのにiPhoneの実機ないとはさすがにだめじゃね?
ちょっと雑に書いてしまったが、
cookieの件はアプリを終了すると消すという意味だから、
一時的に使うだけなら問題ないはず
foreachで最後の一つ前にifを使いたいんだけど
何かいい方法ない?
ないっぽいのでforでやります。
ありがとうございました。
webアプリケーションフレームワークのスレはこの板ではなく別の板でしょうか
【OS名】Win7-Pro
【PHPのバージョン】5.6.28 (XAMPP v.3.2.2)
【連携ソフトウェア】ブラウザはFirefoxかChrome
【質問内容】
JavaScriptでPHPを起動し、これに処理をさせ返ってきた値を受け取りたいです。
参考にしたのは
http://wpcos.com/?p=13945 上のHPのJSとPHPのコードを丸コピーして Chrome57.0で実行させたところ下記のようになり
原因が分かりません。 PHPに問題があるようなのでこのスレで聞きました。
※XAMPPのApacheは起動済みです
※JSとPHPのファイルはUTF-8で保存済み
※Firefox53.0だと「XML パースエラー: 要素が見つかりません。」が出ます
何かヒントを下さい
>>159 Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
って思いっきり書いてあるんだけど?
レス有難うございます
>>160
「Cross origin requests are only supported for protocol schemes」自体で調べたところ、
『どうやらChromeではローカルでAjaxは使えない様です』 とのことなのですがFirefoxでも
上記の通りエラーになります。
結局、サーバー上でやった方が早いのでしょうか?
>>161
要求された URL は本サーバでは見つかりませんでした。 もし手入力で URL を入力した場合は、
綴りを確認して再度お試し下さい。
サーバーの障害と思われる場合は、ウェブ管理者までご連絡ください。
Error 404
と出ます >>162 何故JavaScriptもPHPも分からないのに同時にやろうとするのか
サーバを介さずにリクエストして, 一体誰がPHPを実行すると考えている?
>>163 サーバーにUpしたらFirefoxとChrome共にOKでした。
お手数をおかけしました。
>※XAMPPのApacheは起動済みです
起動しているなら、ブラウザでhtmlが表示できるんでしょ?
そこに置いてみた?
Apacheなんて難し過ぎてきちんと分かってるとは到底思えない
XAMPP使うよりまずはPHPのビルトインサーバで勉強した方がいい
>>165 はい。 普段使ってるlocalhostのphp置き場にhtmlとtest.phpを置いています。
htmlの起動はOKですが、ボタンを押すとエラーになります。
>>166 8年位前にやってたときはPHPを単独でインストールしてコマンドプロンプトで
やっていたのですが、PCを変えたときXAMPPなるものを試してみたかったので
>>167 ここのエラー表示を見ると、
C:/xampp/htdocs/ tests/test.php
となっているけど、
htdocs の中にあるフォルダ testsって、
先頭に空白文字があるの?何か変だよね?
test.htmlってブラウザからどのようにリクエストしてます?
http://localhost/_tests/test.html ですか?
もしもそうなら、javascriptのこの部分、
$.get('test.php', を
同じようにフルパス指定にしてみたらどうかな?
XAMPPのApacheを止めてそのファイルがあるディレクトリで
$ php -S localhost:8080
とでもしてビルトインサーバを起動して
http://localhost:8080/test.html にアクセスした方が早い
jQueryは、こういう感じに書く
// 先に全体の設定
$.ajaxSetup({
data: {format: 'xml'},
timeout: 60 * 1000
});
$.ajax( 絶対パス )
.done(function( data, textStatus, jqXHR ) {
console.log('statusCode = ' + jqXHR.status,
' : ' + textStatus );
})
.fail(function( jqXHR, textStatus, errorThrown ) {
console.log('statusCode = ' + jqXHR.status,
' : ' + textStatus );
});
CORS(Cross-Origin Resource Sharing)制限
ブラウザでAjax通信を行う際には、同一生成元ポリシー(Same Origin Policy)によって、
Webページを生成したドメイン以外へのHTTPリクエストができないので、
ajax通信のJSONP を使って、出来るようにしている
他にも、ブラウザの制限は厳しくて、
iframe内に、他のドメインのページを読み込んでも、
親側のHTMLからは、それにアクセスできない
JavaScriptはどれぐらい理解してるの?
山登り始めた人がいきなり冬の北アルプス登ろうとしてる感じに見える
色々有難うございます。
>>170-171
171さんの方法で試してみます。
>>172
これは http://code.jquery.com/jquery-1.11.0.min.js とかのjQueryを改造する場合の
ことでしょうか?
>>174
JavaScript自体は合計5年くらいの経験があり、たぶん100〜200位のコードを書きましたが
その殆どがローカルで動くもので、また数理的な図形描画や可視化のようなものです。
例:分子構造のデータを読み込んでSVGライブラリ(Raphaelとか)で3Dベクター描画 とか
PHPも実務経験はありますが、8年くらい前にやったきりで今年になってようやく再度必要性が
生じて、昔の本やコードを引きずり出して再勉強しています。
平たく書くとローカル動作主体でWebやネットワークには弱いです。 まずはPHPとJavaScript別々に勉強を進めてはどうか
特にJavaScriptの通信は非同期処理になるので、
しっかり勉強しないと何をしてるか意味が分からないと思う
Cross origin requestのエラーであたふたするレベルだとちと厳しい
まずはJavaScriptかまさないPHPだけのをしっかり学んでからで良いと思います
あと、本で学ぶなら最新のを買ってきた方がいい
PHPもJavaScriptも8年前からかなり進化してる
実務で使うならなおさら最新のを学んだ方がいい
>>176-177 有難うございます。 確かにそうですが、業務上JavaScriptとPHPの連携(連動)が
必要な案件を取りたいので基礎でも良いのでこの連動を実現したかったです。
実際の製品にするにはこの分野に強い業者と組むことになりますが、営業で回る前に
「これくらいは自分でやっとかないとアカンだろうなあ」と思いました。
本も「最新の知識以前に基礎が大事」という発想と、過去のコードをベースにして再勉強
したかったので買っていませんでした。 後で本屋を見てみます。
なるほど、立派な営業さんですね
自社製品なのに何も知らんで営業やってるやつがゴロゴロいるからねぇ
連携する部分はあるにせよ、一気に学ぼうとせずに、
ひとつひとつ学んでいく方が近道かと思いますので頑張ってください
画像にハッシュタグを付け、それに「何かしら識別コード」を関連付けて保存する。
それらを比較することで近しい画像を検索するというようなことがしたい。
この「何かしら識別コード」はなにかいいモノはないでしょうか?
「近しい画像」って何をどう比較して近しいとするの?
それが分からんと何ともアドバイスしにくい気がするけど
SimPixという同一、類似画像を探して、整理を補助するフリーソフトがあるんだけど
これみたいに使いたいのだがどういう原理で比較してるのかわからないのです。
ありがとうございます。
こういうのを探していました。
早速使ってみます。
ペチパー(PHPer)って馬鹿にする文脈でしか見たことなかったが、今ではペチパーが普通なのか?
http://wordpress.ideacompo.com/?p=8594 題:JavaScriptでPHPを起動し、これに処理をさせ返ってきた値を受け取りたい
>>171を試そうと
C:\xampp\htdocs\_tests>$ php -S localhost:8080
としたところ下記が出ました
'$' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
単にcdでディレクトリ移動して $ php -S localhost:8080 ではダメなのですか?
Windows環境で試すならWindows環境で書いてる本買ってきて勉強した方が良いと思うよ
そこで躓くレベルだと手取り足取り教えてもらわんと進まないと思う
>>190 $ はコマンド入力を示しているだけなので入れなくていいよ
>>191 どうも。 やってみましたがダメでした。
C:\xampp\htdocs\_tests>php -S localhost:8080
'php' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
trim関数を文字列に適用する際は、事前に前後のいずれかに空白や改行文字があるかのチェックをした方がいいですか?
とりあえず放り込んどいても問題ないですかね?
>>192 C:\xampp\htdocs\_tests>php -S localhost:8080
この部分は、君が入力していないから、書かなくてよい
C:\xampp\htdocs\_tests>
php -S localhost:8080
環境変数PATHに、php の実行ファイル名を指定していないから、
php と言うコマンドが存在しない
PowerShell を起動して、以下を入力してみ。
$env:Path.split(";")
環境変数PATHは、; で区切り
「環境変数 path 追加」で検索して
環境変数に C:\xampp\php; を追加だね
とりあえず動かしたいなら ..\..\php\php -S localhost:8080
>>193 ここで聞く前に、やってみれば?
$str = "あいう";
$str = trim ($str);
echo $str;
>>196 見かけ上問題ないのと本当に問題ないのは違うと思いまして質問させていただいた次第です
159ですがもう一つ質問があります。
【OS名】Win7-Pro
【PHPのバージョン】5.6.28 (XAMPP v.3.2.2)
【連携ソフトウェア】ブラウザはFirefoxかChrome
【質問内容】
JavaScriptでPHPを起動し、サーバー内の同一ディレクトリ内にある abc.txt (最初はカラ)
に文字列を書き込みたい。
本を見てローカルでは上手くいったので、159の
http://wpcos.com/?p=13945 のコードの下に
$handle = fopen("abc.txt", "w");
flock($handle, LOCK_EX);
fwrite($handle, "テスト文章です");// abc.txtにデータを書き込む
flock($handle, LOCK_UN);
fclose($handle);
を追加したのですが、abc.txt は何も変化しません。 どうしたら良いでしょうか?
>>194-195 後で試してみます。 PowerShell って初めて聞きましたのでこっちも調べてみます
上記の「本を見てローカルでは上手くいったので」は
書き込みコード($handle〜fclose($handle); )限定の話です
先の質問は解決してんのか?
してないんなら何やったって無駄
>>200 はい、解決しています
>>164。
>>186〜195は
>>170-171 で提案して頂いた別案の検証です。
>>202 ならとりあえずエラー(Warning等)出てないかチェック
>>203 どうも。 下記のようにしたところ、 20 kakikomi と表示され、コード自体は実行されたようです。
※20は解消済みの掛け算。 コンソールログには何も表示されません。
try {
$handle = fopen("abc.txt", "w");// abc.txtを書き込みモードで開く
flock($handle, LOCK_EX);// abc.txtをロックする
fwrite($handle, "テスト文章です");// abc.txtにデータを書き込む
flock($handle, LOCK_UN);// abc.txtのロックを解除する
fclose($handle);// abc.txtを閉じる
print " kakikomi";
} catch (Exception $e) {
print " error";
}
コード先頭でerror_reporting(E_ALL);
>>204 その try catch に何を期待していたのか分からないが、
エラー処理は正確にね。
>>204 abc.txtを全ディスクで検索してみたら?
それか、fopen("C:\\abc.txt", "w")として、フルパスで指定するか。
教えてください。
PDOでSQLからデータ取ってきてそのまま配列に入れたら、
Array (
[0] => Array ( [title1] => hoge [0] => hoge [title2] => fuga [1] => fuga [title3] => piyo [2] => piyo )
…
てな感じで1つのRowに同じ値が2つな状態になるんですけど、
これ配列入れる前か後に、どっちか1つにできる方法ないですかね。
このあとforreachの処理に投げたんすけど、データがダブっておかしなことになったので…。
よろしくお願いします。
>>208 ロードのオプションで、数字かキーか両方(指定なし)がえらべる
皆さん、有難うございます。
>>205 何も表示されませんでした
>>206 すいません気を付けます
print "例外キャッチ:", $e->getMessage(), "\n";
とかで書いておきます。
>>207 Cross origin requests でエラーが出たのでローカルでなくサーバー上でやっています。
>>210 ini_set('display_errors', 1);
も追加しとけ
>>210 あと勘違いしているようだから言っておくと, fopenは例外を投げない
というファイル操作関数は例外を投げない
ファイル操作で例外処理をしたければSplFileObjectを使うかset_error_handlerでエラーハンドラを書き換える
>>209 公式に同じような配列の処理例がありますね…fetch使えばいいのか。
よく調べます、ありがとうございます。
ImageCreateFromJPEG($imgfile);
$imgfileにjpg画像以外のpng画像やgif画像を入れるとエラーになるのはわかったのだけど
png画像やgif画像をjpg画像に変換する方法がわかりません。
やり方が分かる人がいらっしゃいましたら教えてください。
すいません。
できました。
imagecreatefromstring(file_get_contents($imgfile));
こうすればpng画像でもできるようです。
ありがとうございました。
>>210 > ローカルでなくサーバー上でやっています。
なら、そのサーバ上のディレクトリに対して書き込み不可なんじゃないの?
やることその1: fopen()の戻り値$handleを調べて、成功しているかどうか確認する(falseなら失敗)
やることその2: サーバのエラーログを見る
とにかく不具合あればアクセスログ、エラーログを見ろ
それで8割は原因分かる
>>217-218 有難うございます。 昨日から体調が悪いので検証できません
【OS名】Windows 10 Home
【PHPのバージョン】5.6.30
【連携ソフトウェア】OpenWeatherMap(API)
【質問内容】
http://ryus.co.jp/blog/openweathermap/ を参考にして、ウェブサイトに東京都の天気情報を表示したいです。
ただ、OpenWeatherMapからの天気情報をJSON形式で取得すると方角の値が0〜360で返ってきます。
この値を方角に置き換えて風向きのテーブルに表示したいです。
まだ、PHPを始めたばかりでswitch分しかわからず、それを使用しています。
switch分を変数に代入したり、sprintf関数に組み込んでみたりと色々試しているのですが上手くできないです。
風向きのテーブルに方角を表示するためのアドバイスをください。
よろしくお願いします。
$url='
http://api.openweathermap.org/data/2.5/weather?q=tokyo&units=metric&appid=********';
$json=json_decode(file_get_contents($url),true);
$format='
<tr><td>気温</td><td>%s°C</td></tr>
<tr><td>風向</td><td>【ここに方角を表示したいです】</td></tr>
<tr><td>風速</td><td>%sm/s</td></tr>
<tr><td>湿度</td><td>%s%%</td></tr>
';
echo sprintf($format,$json['main']['temp'],$json['wind']['speed'],$json['main']['humidity']);
$degree=$json['wind']['deg'];
switch($degree){
case $degree > 348.75 && $degree < 11.25:
echo'北';
break;
(同じような感じで方角が16分割されています)
}
>>220 上手くできないって何が上手くできないのか?
エラーログが出てるならエラーログの内容をそのまま書いてほしい
エラーログが出ないなら、エラーログを出すようしにして、エラーログの内容を書いてほしい
そうすれば答えてくれる人がいると思う
array_reduceは常にインデックス通りの順番で動くことが保証されてますか?
例えば配列の全ての数字を引き算するときに使っても問題ありませんか?
>>222 エラーが出ないというか出せないというかうまく言葉で説明できないです。
申し訳ないです。
もう少し試行錯誤します。
ありがとうございました。
>>220 $degree > 348.75 && $degree < 11.25:
348.75 より大きくて、かつ 11.25 よりも小さい数字ってあるかな?
PHP5.6なのですが、php.iniのoutput_bufferingをOnにしないと
CookieやSessionが使えなくなったのですが、関係あります?
Cookieが使えない原因が分からず、output_bufferingをOnにしたら使えました
ググっても関連があるようには思えないのですが、もしあるなら教えてください
>>228 マニュアルに書いてましたか・・・
勉強不足でした。ありがとうございました
みなさん、画像ファイルのアップロード先フォルダはどのようにしていますか?
単純に/uploadsみたいなところに入れますか?
それともWordpressみたいに
/uploads/2017/05というように日付でフォルダ分けして管理しますか?
状況に応じて変わるとしか言えん
どういう使い方するか考えればおのずと決まるはず
確かにそうなんですが、
ある程度のスタンダードな考え方・分け方は知りたいと思いまして。
他のサイトを調べると日付で分けることが多いみたいなんで、
大量に画像をアップロードする可能性があるなら、そうしてたほうが無難なんですかねぇ
>>230 何故フォルダに分けてるのかは、お前は分かっていないということだな? 231、233も含めて
Configure::read()
という書き方って専門用語でなんて言うのでしたっけ?
PHPのバージョンによってもこの書き方が使える場合とエラーになる場合があり、
それを調べようと思ったのですが、用語をど忘れしてしまいました
疑似変数ですかね。
色々と質問させていただきましたが、
マニュアルを見逃すことが多いので、注意したいと思います。
(続き)今日はシフトの非番なのでやってみました
------------------
>>211の ini_set('display_errors', 1); は
failed to open stream: Permission denied in ・・・ test01.php
となりました。 ※長々と文章が続きますのでここだけ抜粋
------------------
>>212 例外処理でSplFileObjectを使ってみました。
try {
$obj = new SplFileObject("abc.txt", "w");
} catch (Exception $e) {
//エラー処理
echo $e->getMessage();
}
これだと 500 (Internal Server Error) が出ます。
set_error_handler は未だです
------------------
>>217の「fopen()の戻り値$handleを調べて」で
$handle = fopen("abc.txt", "w");// abc.txtを書き込みモードで開く
print $handle;
をやってみましたが、何も表示されません。
------------------
現時点での結論は「原因が全く分からない」です。
>>238 >
>>217の「fopen()の戻り値$handleを調べて」で
> $handle = fopen("abc.txt", "w");// abc.txtを書き込みモードで開く
> print $handle;
> をやってみましたが、何も表示されません。
>
> ------------------
> 現時点での結論は「原因が全く分からない」です。
いやいや、何も表示されないというのは、fopen()が失敗してるってことだよ。
falseをprintしても何も表示されないから。
成功してたら、"Resouce id #5"みたいに表示されるはずだから。
つか、
>>238 >
>>211の ini_set('display_errors', 1); は
> failed to open stream: Permission denied in ・・・ test01.php
> となりました。 ※長々と文章が続きますのでここだけ抜粋
エラーの原因出力されてるじゃん・・・
とにかくエラーログがてるところまで何とかしろ
そこにたどり着く前に色々やっても何も分からんだけ
先に進まず、まずはここだけやれ
そしてエラーログが出るようになったら必ずログを確認しろ
500エラーなら必ず理由がログに出る
>>238 せめてさ, エラーメッセージでググるくらいのことはしてくれよ
ローカルで使用する時に別ドライブから画像参照したい
htmlだと
<img src="file:///I:/img/0000.jpg">
こう書けば別ドライブから画像を参照して表示できるのだけど
PHPではこう書いてもできない。
どうすればいいでしょうか?
>>239-242 FFFTPでサーバー上の目的テキストのパーミッションを開き、権限者「その他」で「書き込み」
にチェックマークを入れたところ、print $handle; は Resource id #3 が出ました。
※Chromeで実行しましたがエラーは出ていません
文字化けしていますが曲りなりに成功しました。 有難うございます。
(追記)
文字化けは、目的テキストの文字コードを UTF-8 にするため
$str = "テスト文章です";
$str = mb_convert_encoding($str, "UTF-8", "EUC-JP");
でOKでした。
何故か "EUC-JP" でなくファイルの元コード "sjis" や "Shift_JIS" から
変換すると文字化けのままです。
>>244 お返事ありがとうございます。
ローカルだとうまくいきませんでした。
何か別の方法を考えてみます。
>>247もそうだけど、上手くいかないならまずはアクセスログ、エラーログを見よ
ログがでてないならまずはログを出すところから始めろ
PHP ログ 出力 でググって調べろ
上手くいかない場合、ここで聞くよりログを見た方が確実だし早い
冷たいようだが手遅れになる前にハッキリと言っとく
プログラムが意図した通りに動かない時
自分でエラーメッセージを確認してググるなり本なりで調べて解決しようとして
私はこう思ってこうしたのだけど動きません
という質問の仕方なら分かるし将来性はある
動きません
分かりません
という質問の仕方しかできないなら、ハッキリ言うがプログラミングには向いてない
手遅れになる前に他の業界にいきましょう
>>250 でもそれはアナタが慣れているから。
初心者はエラーメッセージの出し方も分からないないし、長々としたメッセージの
どこを見れば良いかも分からない。
優越感の視点で書いちゃダメだよ。それに
> ハッキリ言うがプログラミングには向いてない
オマエ、FPGAのプログラミングもやったことあるの?
プログラミングなんてPC上でカタカタやって終わりのモノだけだと思ってないか?
それに資料の殆どが英語という言語もあるんだぜ
プログラミングやってたら知りたい情報が英語で書かれてることなんて珍しくもないし、そんなとこで優越感持たれても困る
業界どうこうの話じゃなくて、自助努力の痕跡が見つけられるかどうかでしょ
>>251 日進月歩の世界だから自分の力で調べて解決する能力のない人は向いてないってだけの話
長ったらしいエラーが出たら出たで、今度はそのエラーをググればいいじゃないか
昔はググる事すらできなかったのにさw
別にプログラミングに限った話でもない
20半ばぐらいまでならまだ間に合うから、さっさと業種を変えた方がいい
手遅れになった人を何人も見てきてるし30過ぎまで引きずるとほんと悲惨だよ
お前そんなんじゃ結婚もできないだろって奴ばっか
FPGAなんて言葉を出して優越感()に浸ってるお方には理解できないのかもしれないけどさw
というか物凄く親切丁寧なPHPのエラーですら読んで理解できないのはプログラム云々以前の問題だと思う
中学レベルの英語力すらないのか?
>>253 要はエラーが出ない場合は、「エラーメッセージの出し方を教えて下さい」で、
あと「どの個所を見れば良いのですか?」 という2行を追加ということでOK?
あとFPGAの存在は知っておいて損は無いよ。
専用ツールをライセンス購入すると100万円超えるけど
>>251 オマエ、今年の痛い奴No1を更新したぞ
検証の手順と質問の仕方は考えてほしい
超能力者じゃないと答えられん質問投げられてもだれも得しない
エラーログを出す(まったく出てないなら出す方法から調べる)
エラーログを見る
エラーログをコピペしてググって調べる
再度ソースを確認する
それでも分からなければソースとエラーログを
他人に見られてはいけないところ(パスワードどか)以外全部ここにコピペで書け
そうすれば答えてくれる人も多くいると思う
ソースだけとかでも分からない場合が多いので
>>243 > ローカルで使用する時に別ドライブから画像参照したい
> htmlだと
> <img src="file:///I:/img/0000.jpg">
> こう書けば別ドライブから画像を参照して表示できるのだけど
「ローカル」というのがローカルPCで動作するHTTPサーバを指すなら、HTMLでも表示できないと思うが。
単にHTMLファイルをダブルクリックして表示することを指しているのなら、それに変わるPHPの使い方はできない。
テンプレに追記が必要か?
[プログラムが動かない場合]
* エラーは出ているか?
出ている→コードと内容をそのままコピペ
出ていない→error_reporting(E_ALL); ini_set('display_errors', true); をコード先頭に追記して実行して表示されるエラーをコピペ
すいません、以下質問させてください。
SQLで取得したデータを多次元配列に入れてHTMLのテーブルでリスト表示してます。
そのテーブルヘッダにドロップダウンリストを付けて、
複数条件の絞り込み機能を付けたいのですが、
配列をフィルタリングするにあたり、どのような関数またはロジックを使えばいいでしょうか。
キー(フィールド):
10列ほど。検索値の指定は全キー必須ではなく、指定したりしなかったりされる。
なお1列だけ数値データがあり、それについては範囲検索する。(0-3, 4-6, 7-9…)
配列形式:
Array (
[0] => Array ( [titile1] => hoge [titile2] => fuga [〜 [title10] => 2 )
[1] => Array ( [titile1] => piyo [titile2] => fuga [〜 [title10] => 7 )
[2] => Array ( [titile1] => hoge [titile2] => hogera [〜 [title10] => 5 )
…
例えば、title1をhogeでドロップダウン選択したら、
Array0と2のレコードを抽出して表示
よろしくお願いします。
>>262 配列をフィルタリングするんじゃなくて sql の where 句を変えるようにするんだよ
>>263 ありがとうございます。
1ユーザー単位の検索回数が多いであろうと想定して必要以上のDBアクセスを避けるために、
最初のページ読込で全データとったらあとは配列でなんとかしたかったのですが無理そうですかね…。
>>264 Javascriptで実装する範疇ですね。
Web制作板に適切なスレがあるかも・・・。
まぁ簡単に言えば、条件に適合する行は描画して、そうでない行はスキップすればいい。
それを全部自前で実装するか、何かのライブラリを使うか、フレームワークを使うか。
ライブラリは、
https://datatables.net/とか。
これ以上は、Web制作板かな。(Javascriptの質問を重ねないように)
>>265 やはり、いち関数とかでどうこうできないですかね…残念。
検索値のログを取りたくてPHPを選択してみた経緯でした。
JavaScriptではファイル書き込みなどのファイル操作ができないようなので。
ありがとうございます。
>>268 サーバにクエリ投げてPHPで実装すれば?
いや、PHPでもゴリゴリ実装すればできると思うよ
ログも取れるし
SQLで間引くか、表示の直前で間引くかすれば良い
当然、適切なSQLを生成して必要な情報のみ取得して表示した方がサーバには優しい
>>264 まずは普通に作ってみたらいいのにと思うんだけど。
・
>>265 がいうようにクライアントでフィルタをかけるなら、クライアントに全データを渡すことになるのは問題ないのか
(配列にフィルタかける方法を知りたがってるんだからクライアントでのフィルタは意図していないと思っていたけど)
・セッションに保持するなら、データが更新されたときの整合性はどう担保していくのか
を考慮しないといけないんじゃない?
もう、全件Excelに読み込んで、Excelの機能でフィルタリングしちゃえ
RESTで必要な分だけJSONで取れるようにすればよいのでは
みなさん、ありがとうございます。
>>266 あらためて調べなおしてみたら、array_filterでいけるかもですね。
これだと検索キーのぶんだけ、ネストでぶら下げていかなきゃいけない…のかな。
とりあえずベタでやってみます。
数値の範囲指定検索がややこしそう…。
>>267 最初はJqueryとか使って動的にやれたらな〜と軽く考えてましたが、
検索値指定してボタン押したら、セッションで検索値と配列渡して飛び先のphpページで処理して表示する流れにしました。
>>269 クエリでやらないのは
>>264に書いた理由でした。
>>270 そうですねー、あまり余計な負荷は避けたいかなと。
>>271 クライアントにはデータは渡したくないので、あくまでサーバー側で処理したいと考えてます。
おっしゃる通り、まずはトライしてみます。array_filterで。
セッションの部分はまだ勉強不足でして…宿題です。
(データ登録は数日に1回10件くらいなのでシビアに見なくても大丈夫…かな?)
アクセス多いならデータベースに負荷をかけない方法として
memcacheやradisなどのキャッシュサーバ使ったり
PHPのAPCキャッシュを使うことも検討するといいよ
いきなりは厳しいけど、徐々に勉強していけばいいと思います
Redisは正式にはキャッシュじゃなかった
キャッシュ的にも使えるよ、という意味です
Sessionよりもより効率的なので将来的にはここまで頑張って進んでほしい
>>261 良いのでは?
スレタイを声に出して100回読んでみろと言いたいところだが
>>250は真実だしな
口が臭い奴にお前口が臭いよとはっきり言う方がある意味では親切なのと同じで
向いてない奴には向いてないとはっきり告げるのも必要だ
綺麗事だけじゃ仕事は勤まらん
>>274 既に誰かが書いてたらすまないが、初回のsql発行結果を元に配列ソート用のJavaScriptのコードをPHPで出力してやるなんてやり方もあるよ
もう少し詳しく書きたいんだがスマホからなのですまない
>>260 > 単にHTMLファイルをダブルクリックして表示することを指しているのなら、それに変わるPHPの使い方はできない。
ありがとうございます。
それがわかっただけでも対策を立てることができるので助かります。
すいませんapcuみたいな有効期限付けれる kvs ライブラリで有名なの教えてもらえませんか
拡張機能ではなくcomposerで入れられるのがいいです
>>280 https://github.com/chatbox-inc-hoge/SimpleKVS 有名でもないし、有効期限の実装もまだかもしれん
PHPだけでの実装なら都度都度ディスクから読み書きするしかないだろうから色々と厳しそう
SQLite使えるならそこにKVS実装するとか
ぶっちゃけ、どこかにmemcachedプロセス立ち上げるのが一番速いと思う
>>281 ランキング的なものをjsonで書き出して普段は読み込むだけなのでファイルでもいいかなと
レンサバなのでmemcachedは難しそうです
ありがとうございましたm(__)m
>>276 そうなんですよねー。
いずれSQLはコールドデータ的にして、Redisにコピってそっちでやり取りできたらいいなあと。
Dockerとかで環境作れそうですけど、基本的な実装が終わったらトライしてみたいですね。
APCキャッシュは知らなかったので調べてみます。
>>274 そんなやり方があるんですね。
お時間あったらでいいのでもう少し情報いただると助かります、
自分のほうでも調べてみますので。
ありがとうございます。
文字列の最後が「Part1」とか「Part23」と感じなってるんだけど
この数値の部分を取り出すにはどうすればいいでしょう?
>>284です。
正規表現でできました。
ありがとうございます。
【OS名】WindowsServer2012R2
【PHPのバージョン】5.4.9
【連携ソフトウェア】Apache2.2
PECL2.0.1.2(PHP5.4ThreadSafe)
Oracle12.1.0.2(x64)
OracleInstantClientBasic12.2.0.1.0(x86)
OracleInstant ClienODBC12.2.0.1.0(x86)
【質問内容】PHPからDB接続が失敗します。
アドバイスください。
そもそもこの組み合わせで動作しない?
【やったこと】
環境変数Path
OracleInstantClientBasicのbinを先頭に追加。
tnsnames.ora、sqlnet.oraの設定
httpd.conf
LoadModule php5_module "c:/php/php5apache2_2.dll"
php.ini
extension_dir = "c:/php5/ext"
※"ext"、"c:\php5\ext"に変えても同じ
extension=php_oci8_12c.dll
(extフォルダにphp_oci8_12c.dllを格納)
apache再起動・OS再起動
参考にしたサイト
http://www.php.net/manual/ja/oci8.installation.php 【判明していること】
apacheのerror.log…oci_connect undefined function
phpinfo…oci8の項目がない。
他の32ビットアプリからOracle接続できています。
extentionの組み込みに失敗してるようだから、
試しに他のextention組み込んでみれば?
それもダメならそもそもextention動的に追加できない環境とか
phpまったく分からない初心者で申し訳ないんですが、こちらの(
http://www.punyu.net/php/oekaki.php)お絵かき掲示板をサイトに設置したいのですが、設置方法通りにやっても
Parse error: syntax error, unexpected '}' in ""/poti/htmltemplate.inc(312) : eval()'d code on line 147
このようなエラーが出てしまいます…
該当のファイルは全く手を付けていないので原因が全く分かりません。
本来ならば配布サイトで聞くことなんですが、かなり昔に更新停止してしまっているようで…。
ご教示いただけたら幸いです。
>>291 そのサイト見ても403エラーしか表示されないのでよくわらかんが、
syntaxエラーということはプログラムが正しい記法で記述されてないということ
PHPのバージョン違いで対応してないのかもしれない
そもそも更新が停止されてるプログラムなんかセキュリティホールあるかもしれんし
素人ならなおさら使うべきではないと思う
ちゃんと今もメンテされてるところを探すべき
そのファイル見たらfor PHP4とか書いてあるんだけど
PHP4のEOLから約9年なんですけど
みなさんアドバイスありがとうございます。やっぱり古いのはだめなんですね…。
今までレンタルサーバーを使っていたのですが、こちらの
https://github.com/funige/neo ツールを使いたくて先程のお絵かき掲示板を設置しようとしていたのです…。こちらで普通につかえているようなので大丈夫だと思ったのですが…。
>>290 ありがとうございます。
明日試してみたいと思います。
訪問者が以前見ていたページからオススメのページを表示させたいのだけど
そういうことはできるのでしょうか?
詳細な情報は自分で調べてくるので大凡な概要を教えてください
出来るだろうけど、オススメのページを決めるのはあなただよね?
オススメというか同カテゴリの人気ページを表示させたいと思っています。
アクセスユーザーがログインする形なら、ログインしたユーザーID
ログインしいなら、クッキーを使ってアクセスユーザーを特定する
後はサーバー側で、人気ページ集計やオススメページを決定し
そのアドレスに誘導するなりお好きなように
ログインはないのでクッキーと言うものを使ってみようと思います。
ありがとうございました。
訪問者をどうやって区別するのか?
ログイン処理などでID管理してればID使えるし、そうでないならcookieで識別するか?
訪問者が以前見たページの情報をどこにどうやって保存するのか?
データベースに保存するのか、ファイルに保存するのか?
オススメのページをどう選定するのか?
ページのごとにIDをふって、オススメページの対応表を自分で作るのか?
ユーザの動向からオススメページを決める手法はかなり難しい
レコメンドアルゴリズムとか協調フィルタとかでぐぐれ
PHPにもライブラリはいくつかあるようだが、そのまま使うのは厳しいかも
>>296 「レコメンドエンジン」でググるといいよ。
たとえば、
「レコメンドエンジン(協調フィルタリング)をPHP+Redisで実装」
http://qiita.com/yudsuzuk/items/6de4650cb6d50236533e switch文でcaseが30個超えたりする場合
もっと簡潔にする方法ってありますか?
単純に引数の値によって個々の返値を変えたいんですが、
シンプルな方法がわかりません。
>>303 そのswitchが何回出て来るかによる
1回ならもうそのままでいいし繰り返し出て来るならケース自体をオブジェクトにしてexecute呼ぶだけにするとか
配列も考えたんですが、うまい方法がわかりませんでした。
出てくるのは一回だけなので、このままでいってみます。
ありがとうございました。
連想配列の方がスマートだと思う
キーを定義ファイルとかにまとめればswitchよりもキレイで見やすい
外部ファイルをよみこんだけど、
その外部ファイル上からクラスを探してくれないときはどうすればいいですか?
たとえば読み込む側ファイルが、 use.phpだとして
<?php
require_once '/xxx/foo.php';
var_dump(require '/xxx/foo.php');
// => true
$foo = new Foo();
// => PHP Fatal error: Class 'Foo' not found use.php on line 7
→この 「not found use.php 」となっていることから、
そもそも読み込んだ foo.php 上を探してくれていない可能性があります。
もちろん、 foo.phpには
<?php
class Foo{
public function func($arg){
echo $arg;
}
}
とだけ記述されていて、極めてシンプルな検証用ファイルなので、
extendsとかimplementsとかそういった要素は関係していません。
なぜ new のときに読み込まれた側ファイルを探索してくれないのでしょうか。
すみません誤記がありました
上記の
var_dump(require '/xxx/foo.php');
で requireとなっていますが、
var_dump(require_once '/xxx/foo.php');
でもtrueが返ります。
>>308 use.phpとfoo.phpを同一ディレクトリに配置して
'/xxx/foo.php' -> __DIR__.'/foo.php'
に書き換えて動かしたけど再現しない
実際に再現するコードは?
>>310 検証ありがとうございます。
今、私も foo.php と use.phpを同じカレントにおいて実行したところ
実行できました。
つまり、この問題は「foo.phpとuse.phpのディレクトリ(及び実行するカレントディレクトリ)が違う」
という問題が原因していることが新たにわかりました。
ディレクトリが違うと問題が起きるのでしょうか?
読み込んだモジュールと読み込んだ側、実行カレントなどの
ディレクトリを揃える手段ってありますか?
>>311 ディレクトリaaaを掘ってそこにuse.phpを移動しかつ
__DIR__.'/foo.php' -> __DIR__.'/../foo.php'
として問題なく動作する
繰り返すが再現する条件と実行可能なコードを出せ
きちんと原因を知りたいならな
>>312 すみません、自己解決しました。
上記の質問をしたのは autoloadの useが使えなくなり、
require_once(); もcomposerでインストールしたライブラリでは
使えなかったためで、
そもそもの useが使えない原因を特定しました。
私はwindowsから macにPCを変えたばかりで、macでは
\マークと\ を分けていることに気が付きませんでした。
option + \ で \ を出力できることを知り、 useの問題を解決しました。
require_once ();の問題は解決したことにはなりませんが、
とりあえず useで問題なく外部ファイルを読み込めるのでこれで解決
と思うことにしました。
お騒がせして本当にすみません。
あれ、投稿したら ¥マークもバックスラッシュになっちゃいましたね・・
つまり、このことがよくわかっていなかったということになります。
>>314 円記号とバックスラッシュは同じ文字コードです。
表示するフォントで見え方が違うだけ。
>>316 せっかく環境まで書いてくれているというのに君は
>>317 macでは円記号とバックスラッシュは別の文字コードってことか?
なるほど、調べたらmacでは円記号は0xA5なのか。
それは知らなかった。
>>319 utf-8で1バイト目が0xA5にはなりえないというのに君は
>>320 何に関してレスされてるのかわからん。
macでバックスラッシュ使うところを0xA5の円記号を使っておかしくなったって話じゃないのか?
コンストラクタの引数を使ってひとつの処理を実行するだけのオブジェクトを作る場合
コンストラクタに全ての処理を書いてインスタンス生成のみを行うのと
実行用のメソッドを作って、インスタンス生成直後に$foo->do()から実行するのと
どちらで作るのが一般的なんでしょうか?
処理は内部的な物で、どうしても必要なクラスという条件です
>>322 > 処理は内部的な物で、どうしても必要なクラスという条件です
なら、コンストラクタで実行するしかないよね。
>>322 生成&メソッド呼び出し
DIやテストを書いてみれば分かると思う
Webページのソースコードが文字化けするページを見つけたのですが対象方法がわかりませんでした。
どのようにすれば良いのでしょう?
$url="
http://momoniji.com";
$html=file_get_contents($url);
$html=mb_convert_encoding($html,'utf8','auto');
echo $html;
文字化けではない
HTTPレスポンスヘッダのContent-Encodingを見れば分かるがレスポンスボディはgzip圧縮されている
だから結果をgzdecode関数にかければよい
>>328 ありがとうございます。
ずっと文字化けだと思っていました。
解決できました。
ftp関数ってftp関数の使用が許可されているサーバーから許可されていないサーバーに通信できるの?
さくらインターネットはftp関数使えないけど、使えるサーバーからさくらに接続できる?
受け入れる側が許可してないと何やっても繋がらんよ
ftpdのプロセスが立ち上がってて、かつ必要なポート番号が開いてる必要がある
アクティブモードかパッシブモードかによって色々変わる
さくらのサーバ側がどうなってるか確認すれば良い
繋げる側は通信が外に出ていければだいたい大丈夫
もちろんftpプロトコルで通信できる環境は必要だが
>>331 つまりftpソフトで繋がるサーバーならphpのftp関数とは関係なく大丈夫ってことですかね
繋げる側はエックスサーバーでやってみて大丈夫でした!
>>332 繋ごうとする側にFTPクライアントかFTP関数的なものが必要ということだよ
何のファイルを送受信するか分からんけど、
素のFTPだと暗号化されてないから注意せよ
今の時代ならSFTPとかSCPとか使う方が安全
>>333 ああ、そうなんですね。
だとすると繋ごうとする先のレンタルサーバーを確認しないとダメですね。
うーん、仕様を確認してわかるものなのか…。
ちなみに送受信するのはhtmlやcssファイルです。
自分のサーバー(ftp関数を実行して繋ぐ側)はエックスサーバーで決まりなんですが、
ftp関数で繋ぐ先のサーバーはいろんなホスティング会社のサーバーです。
ロリポやさくらなどのレンタルサーバー会社。
ftpソフトで繋げられるからといってphpのftp関数でも繋げられるとは限らないということですね。
>>334 XServerはPHPがほぼ最新だし、
ftp_connect系の関数も基本は標準で入ってるはず
FTPプロトコルは接続時のお作法がサーバの設定によって色々変わるから大変だと思うが頑張って
>>335 ありがとうございます!
ちょっと他のサーバーを仮契約して試してみます!
>>336 > ftpソフトで繋げられるからといってphpのftp関数でも繋げられるとは限らない
普通につながるから安心していいよ
つなぐ先のサーバのphpにftp関数があるかどうかは関係ない
>>337 そうなんだ!
昨日からいくつかサーバー確認しはじめたけど、それがわかるならテストしなくていいから助かります!
いや、テストはした方がいいよ
そりゃ、たいていは繋がると思うが
ポート番号とかモードの設定とかサーバ側の設定次第で色々調整が必要になることはある
>>339 ポート番号とかモードはユーザーが設定できるようにしてるので大丈夫かな
>>340 そういう目的じゃないので…
逆に不正アクセスできないように配慮はしてるつもり
画像ファイルをアップロードして一覧表示するプログラムを作成していて、
iOS端末だけ保存ファイル名が取れないのですが原因わかりますでしょうか。
formから以下の記述で取得してもすべてimage.jpgにリネームされて
複数アップロードしてもぜんぶ同じ画像になってしまいます。
index.html
<form name=“upform" method="post" action=“test.php" enctype="multipart/form-data">
<input type="file" name="uploadfile[]" multiple>
…
test.php
$_FILES["uploadfile"]["name"]
よろしくお願いします。
APIを作りたいんですが
codeigniterとかフレームワークを使うのってへんですか?
>>343 ・そこそこの数のAPIを作る
・認証が必要
・自前でCSRFとかの対策だるい
・自前でルーティングするのだるい
とかなら、フレームワークおすすめ。
ただ、フルスタックのでかいフレームワークじゃなくて、マイクロフレームワークと呼ばれる
のを調べてみるといいよ。
LumenとかSlimとかSilexとか。
>>343 変じゃない。
>>344が書いてるようにフレームワーク使った方が楽。
LumenやSlimもいいんだけど、マイナーだからなにか問題起こると
ググっただけでは答えが見つからないこともある。
初心者だったらメジャーなフレームワーク選ぶといいよ。
最近シェア落としてるけどcakeでいいと思う。
エラーメッセージそのままコピペしてググれば、ほぼ答えが出てくる。
かなりひさしぶりにPHP触るんだけど今ってテンプレートエンジンは何が熱い?
昔は、smartyが遅いからsmarty記述法と互換性がある自作エンジンを作ってやってたんだけど
最近熱いエンジンのソースコードが見たくなった
「自作エンジンを作って」ってなんか頭痛が痛いみたいだ
気にしないでw
質問失礼します。
php7でサーバプログラムを作成中です。
HttpsRequestでデータを受けとってレスポンス、そのデータをWebSocketで別クライアントに返すという機能を実装したいのですが、
両方のポートで待ち受けるようなプログラムって実装可能なんでしょうか?
(1つのポートでも構いませんが、、、)
php7 + Apache で色々試したり、フレームワークのSilexを入れて試したりしましたが、
これってつまりプロセス間通信だったり、なにかしらのストレージに入れないと無理ですよね?
>>350 HTTPリクエストを受け取って処理する部分は、待ち受けする必要ないでしょ
リクエストを受け取って、何か処理して、WebSocketサーバにデータを送信する
WebSocketのサーバもPHPで書きたいなら、そこでは当然接続を待ち受ける必要がある
>>351 WebSocketは待ち受けて、HttpRequestは待ち受けない(Apatchまかせ)のであれば、データをWebSocketでクライアントに送信する際、確実にストレージなりを利用する事になります。
今回それをやりたく無いので、両方同じクラス内で待ち受けて処理できれば、クラス内の一時メモリを使いまわせるのになぁ。
と思った次第です。Silexで試した理由はそれです。
>>352 > データをWebSocketでクライアントに送信する際、確実にストレージなりを利用する事になります。
え?なんで?
a.phpがHTTPリクエストを処理したなら、a.phpからWebSocketサーバはsocket通信だよ?
>>352 読み間違えてた
a.php: Apacheから呼び出される何かのリクエストを処理するコード
WebSocketサーバ:あるポートで待ち受ける、WebSocketプロトコルをしゃべるサーバ
のとき、a.phpはWebSocketクライアントだよ?
>>353 という事は、a.phpが呼ばれたらlocalhostに接続して送信切断という流れなんですね。
確かにそれでも可能です。
後から要件追加して申し訳ないですが、a.phpが短時間に大量に実行されるので、できれば接続と切断は繰り返したくないのがあります。
今試したら、WebSocketのsocket_acceptでHttpRequestを受け取れました。
httpもsocketも同じtcpだからacceptするんですね。目から鱗でした。
接続と切断を繰り返してしまいますが、これしかないですかねぇ。。。
>>355 ちょっとまってくれよ
HTTPリクエストを捌くのはmustなの?そうじゃないの?
短時間に大量のリクエストってどれくらい?100req/sec?10000req/sec?
>>356 つか、WebSocketが何者だか理解してるか?
まるで同一サーバで別プロセスが同一ポートでLISTENしているかのような書き方だけど、どこかに隠し情報があるんだろうなぁ
>>349 他言語ばっかやっててPHP書くのなんて久しぶりだから
最近の流行りもののソースコードを何となく見てみたくなるんだよw
そこで自分が全く知らない新しい事を見つけたら嬉しくならない?
海外レンタルサーバーを借りたのですが
○○○.com/ にアクセスると
○○○.com/?i=1
というように、すべてのurlに ?i=1がくっついてくるのですが、これを取り払うには htaccessに何と書けば良いのでしょうか?
それとも他に方法がありますでしょうか?
>>360 どのくらい久しぶりなのかによるけど、改めてsmarty使ってみたら?
「smarty遅い」といってもいろんな理由があるので、使う側の問題で遅いということもある。
他のエンジンがいいならbladeとかtwigとか。
もっとも、やっぱり自作最高やってなりそうな人にも見えるので、やるだけ損かもしれない。
>>357 同時接続2000人が想定のチャットサーバ書いてます。
WebSocketの処理でhttpのパケットを解析しようかとも考えたのですが、a.phpを叩いてもらって、
そこから接続切断する方が楽そうですね。。。
ブラウザからのhttp requestをWebSocketで受けたらデータが汚すぎて萎えました。
(接続と切断を2〜3回繰り返す。。。)
>>360 > 最近の流行りもののソースコードを何となく見てみたくなるんだよw
見たいんならさっさと見ろ
>>363 だーかーらー、そのチャット中にHTTPリクエストを捌くのは必要なの?不要なの?
いらないんじゃないの?
>>364 >>360みたいな人には何言っても無駄だよ。
「〜したい」「〜やりたい」と言うだけで実際には何もしないし出来ない。
そういう奴は相手しないこったね。
>>365 http request内のデータが取得できるのであれば、なんだって大丈夫です。
なのでmustではないという事になりますかね。
WebSocketでチャットとかありがちで、ググればサンプルも死ぬほどあるだろうけど、
たとえは、これ
http://qiita.com/hosomichi/items/66b309a6c3c20d910218 チャットそのものは、JavascriptとWebSocketサーバがやりとりする
WebSocketサーバは、別に何で実装してもいい
もちろん、最初のページはHTTPリクエストで取得する
このラインでいいの?駄目なの?
駄目だとしたら、何が必要なの?
>>368 少し祖語があるみたいです。
http request発行者はクライアントではなく中核サーバーになります。
(上でブラウザで試したというのはクライアントを模してやったわけではなく、単なるテストとしてやりました)
今書いているコードはクライアントと中核サーバーとの中継サーバーのものです。
中核サーバーのコードは修正できません。
そこからhttp requestでメッセージが飛んでくるんです。
そういう意味ではhttp requestを捌くのはmustですね。。。
>>369 やっと、どんなものか輪郭が見えたよ
> そういう意味ではhttp requestを捌くのはmustですね。。。
だったら、多数回の接続・切断は必要だということじゃないかな
まぁ、これ以上、俺からは何も言えないけど、ひとつだけ言えるとしたら、
最初に戻って、複数のポートで待ち受けできるかどうかだけど、できるよ
http://php.net/manual/ja/function.socket-select.php >>370 おお!
パッと見どうやって使うのか、まだよく理解できていませんが、貴重な情報ありがとうございます!
言葉足らずですいませんでした。
>>371 実際PHPで使ったことないから、ほんとにできるかどうかは不明
できなかったらごめんね
PHPのサンプルは見つからなかったけど、select()はこんな感じで使える
http://totofuga.hateblo.jp/entry/2014/09/05/174554 同時接続2000人ってかなりデカいサービスなので数限られる。
動画配信が一番可能性高いけど、そういう仕事やってるとこは・・・。
まさか会社から2chに繋げてないよね?
知り合いの会社の社員のような気がしてきたw
2chに書き込むとインフラとセキュリティにメールが飛ぶとこもあるぞ。
気をつけなされ。
>>372 > 実際PHPで使ったことないから、ほんとにできるかどうかは不明
> できなかったらごめんね
普通のソケットプログラミングとほぼ同じだよ
>>362 bladeとtwigありがと
smartyはこういうところが変わった
bladeはここがいい
今一番伸びてるのはtwigだ
そういうレスを期待してたんだけどね
なんかグダグダ余計な事言ってるアホが居るから消えるわ
>>366 なんだその決め付けはw
2ch脳も大概にしてくれや
面倒くせぇやつだな
アフィリエイトのリンクはクリックしたら広告先のURLに移動しますが、
PHPでアフィリエイトリンクからクリック先のURLを取得する方法はないでしょうか?
(つまり、クリックせずに正規のURLが取得したい)
get_headers($url)は無理でした
>>376 通常はクリックするアクションでGetやPostを要求し、
サーバー側の処理により移動先サイトのURLを受けとることになる
だから、クリックしないと無理じゃないかな
もしもHTMLソースに埋め込む様な形でリンクが張ってあるなら
ソースを読んで該当箇所を探し、取得する事は出来るかも知れない
アフィリリンクはたいていリダイレクトしてるから無理じゃないかな
【OS名】Win10
【PHPのバージョン】 5.6.30
【連携ソフトウェア】MySQL XAMPP
PHP5技術者認定初級の公式教本(2014年9月20日発行)を読みながら勉強をしてる全くの初心者です。
データベースを作成、接続する部分でつまづいてしまいました。データベース、ユーザーの作成を行い
<meta charset = "UTF-8">
<?php
require 'MDB2.php';
$db = MDB2::connect('mysql://user名:passlocalhost/データベース名');
if(PEAR::isError($db)){
die ("接続失敗:" . $db->getMessage());
}else{
echo "接続できました。";
}
を実行、「接続失敗:MDB2 Error: connect failed」と返ってきます。
PHP5.3以降でMDB2_1.4以降を利用するためにはエラー制御、またはMDB2ドライバのbeta版インストールが必要とのことなのでbeta版のインストールをしました。
この手順に失敗があったのか確認する方法がわからず、とりあえずpaer listで確認したところ、
INSTALLED PACKAGES, CHANNEL PEAR.PHP.NET:
=========================================
PACKAGE VERSION STATE
Archive_Tar 1.4.3 stable
Console_Getopt 1.4.1 stable
MDB2 2.5.0b5 beta
MDB2_Driver_mysql 1.5.0b4 beta
PEAR 1.10.4 stable
Structures_Graph 1.1.1 stable
XML_Util 1.4.2 stable
と表示されました。
データベース接続のため、アドバイスをいただきたいと思います。
足りない情報などもあると思いますが、宜しくお願いいたします。
・'mysql://user名:passlocalhost/データベース名' の内容が間違ってる
・MySQLが起動してない
あたりのオチでは?
そもそも今MDB2を使うメリットって皆無だと思うからPDOを勉強した方が良いと思うけど
>>381 最初のアドバイスとしては、MDB2はもう未来がないからPDOにしとけってこと
10年前に終ってるものを今さら引き合いに出すなってw
2014年発行の本でMDB2をとりあげた理由ってなんだろう
PHP5.3系の古いバージョンのPDOだと
文字コードの指定ができないという致命的な欠点があったけどその関係だろうか?
そこまで踏み込んで解説されてるのであれば別に良いけどね
恥ずかしながら
「一般社団法人 PHP技術者認定機構」なんてものがある事を初めて知ったw
実務でどれくらい役に立つんだろうねこれ
>>381 PHP5技術者認定初級の公式教本って
オライリージャパンの「初めてのPHP5 増補改訂版」かな?
原書の方は Final Release Date: June 2004ってある。
日本語翻訳で追補しているかも
7章の13辺りからPDOでの操作が載っているようだから、
その辺と読み替えてみたらどうだろう
2014年でMDB2なんて使う必要性ゼロだったと思う
当時でもPDOもしくはmysqliのどっちかしか推奨されてなかった気がする
その本はすぐに捨てて2015年以降に発刊された本を買い直した方がいい
できればPHP7に対応してるやつ
この本から出題されるらしいから、それは無理だと思う
つか、phpなんてググるだけでいいだろ
教本なんていらんのや!
目的はPHPの試験に受かりたいってこと?
なら動かさなくてもいいじゃん、暗記だけでいいと思うよ
正直、もうほとんど使われてないライブラリだから
実際には大して役に立たない
試験受かったら新しめの本買って学び直せ
PHPや他言語で、JSのconsole.log();みたいに
オブジェクトや配列を▼ボタンで折りたたみ/展開できる
デバッグ方法ない?
多次元配列どうしの結合で教えてくださいませ。
以下のようなそれぞれの配列を、
Array1
(
[0] => Array
(
[key1] => 1
[key2] => 2
)
Array2
(
[0] => Array
(
[key3] => 1
)
このように1つの配列にまとめたい場合はどのようにすればいいでしょうか。
Array
(
[0] => Array
(
[key1] => 1
[key2] => 2
[key3] => 1
)
よろしくお願いします。
[array_merge(Array1[0],Array2[0])]
$Array1[0] + $Array2[0] でもok
質問させてください。
条件分岐で結果の数が多い場合、
if文でネストする以外にいい方法はありますでしょうか。
配列の同じキーの値を、1〜5つ前まで順にたどって、
同じ値が続いていたら続いたぶんの数を新たに配列に入れたいと考えています。
よろしくお願いします。
>>400 同じキーの値ってどういうこと?
二次元配列?
ネストしてていいから一回コード見せてくれると助かる
>>400 エスパーで答えるとarray_count_values()を使えば解決する気がする
もろもろレスありがとうございます。
>>402 いまこんな感じです。
配列allDataのhogeValue値をもとに、
1件前との差分値がdiffValueに入っており、
zeroOneに下がったか上がったかのフラグ値が0or1で入ってます。
実際は5連続まで判定したいのでネスト足りてませんが、
以下のコードは配列allDataのzeroOneキーを3つ前までたどって、
0が続いた場合に連続してます値をzeroCheckキーにPushしてます。
いまは5連続までですが、最終的に7くらいまで増える可能性があります。
if($allData[$i - 1]["zeroOne"] == 0) {
if($allData[$i - 2]["zeroOne"] == 0) {
if($allData[$i - 3]["zeroOne"] == 0) {
$allData[$i]["zeroCheck"] = "4連続";
} else {
$allData[$i]["zeroCheck"] = "3連続";
}
} else {
$allData[$i]["zeroCheck"] = "2連続";
}
} else {
$hairetsu[$i]["zeroCheck"] = "1回目";
}
>>402 まとめて送信できなかったので、配列は以下の通りです
配列:$allData
Array
(
[0] => Array
(
[id] => 1
[hogeValue] => 9594
[diffValue] => 0
[zeroOne] => 0
[zeroCheck] => 0
)
[1] => Array
(
[id] => 2
[hogeValue] => 9494
[diffValue] => -100
[zeroOne] => 0
[zeroCheck] => 1回目
)
…
array_column($allData, 'zeroOne');
で
'zeroOne'の値だけ抜き出した配列を別に作ってそれをforeach()あたりで回してチェックすればいいだけな気がするが
何か勘違いしてたらすまない
※array_column()はPHP5.5以上でしか使えないから注意。仮に使えなくても自分で作れるよね?
>>404 途中で1が出てきたら打ち切り?継続?
例えばzeroOneが0,0,1,0,0の順番だった場合はどうなるの?
>>404 あとその5とか7ってのは$allDataの長さなの?
それとも要素数が100でも最初の5つだけ見るって話?
$allDataの要素数が5未満になる可能性は考えなくていい?
いまいち何がしたいのか不明な部分が多いが
$zero = array();
foreach ($allData as $k => $v) {
if ($v['zeroOne'] === 0) {
$zero[] = $v['id'];
}
}
で'zeroOne'の値が0になってる'id'だけを収めた配列$zeroを作れば分かりやすいんじゃない?
>>406 PHPのバージョンは大丈夫です。
array_columnで抜き出してforeachで回したとして、
そこで連続してるかどうかの判定は同じような条件分岐が必要ですよね?
ちなみに上記のコードは配列全件($allData)をfor文で回してる中のコードなので結局同じのような気が…$iがそのfor文の変数です。
if文の数珠つなぎ以外で書ける方法がないか知りたいんですが、
わかりにくくてすいません。
>>407 1が出ても処理は継続します。
いまのとこ1が出てきたら適当な値を入れて全件最後まで回してます。
>>408 5とか7は要素の長さとかではなく、
「同じ値が何連続まで続いているか」の判定回数です。
要素は全件見ます、いままだ100件ほどですが。
要素は今後増えるので5未満は考えてません。
>>409 ありがとうございます、検証してみます。
とりあえず殴り書いてみた
$zeroCount = 0;
foreach($allData as &$data){
if($data['zeroOne'] === 1 ){
$zeroCount = 0;
$data['zeroCheck'] = 'reset';
}elseif($data['zeroOne'] === 0){
++$zeroCount;
$data['zeroCheck'] = $zeroCount===1 ? '1回目' : $zeroCount.'連続';
}
}
unset($data);
>>412 すいません、レス遅くなりました。
試してみます、ありがとうございます!
>>412 おぉ、まさに望んでいた処理ができました!
ありがとうございます!
質問失礼します。
WebSocket サーバーを php で作成したのですが、Linux のコマンドラインから実行するとフリーズします(当たり前ですが)
php hogehoge.php(エンター押したらフリーズ)
フリーズしないようにするにはどう書けば良いのでしょうか?
分かる方、よろしくお願いします。
最後に&付けてバックグラウンドにするとが、
デーモン化するとかじゃないの?
screenとかtmuxとか使える環境にした方がいいかもね
>>415 それフリーズちゃうw
そんなんでソケット通信やって大丈夫なの?
最後に&を付ける事で解決しました。
このやり方は知りませんでした。
ありがとうございます。
>>418 なんて呼んだら良いか分からないです。
正式名称はなんて言うのですか?
処理をバックグラウンドに回してるだけだから、
最後はちゃんとフォアグラウンドに戻して終了するとか、
PIDみてkillするとかしないとダメだからな
>>422 SIGHUPで自動的に終了する場合もあるけどね
フォアグラウンドで待受してる状態をフリーズと呼んでたのか成程
rcスクリプト書いて、
service hogehoged start
で起動するようにしました。
スクリプト内で
php hogehoge.php --pidfile=/var/run/hogehoge.pid &
という風に起動しています。
pidfile は hogehoge.php 内部で getmypid() を保存しています。
kill はそのrcスクリプト内で stop 命令の時にやっています。
案の定、起動直後に [ OK ] が表示されませんが、不都合は無さそうなのでとりあえずこれで良しとしています。
サーバーいじれる立場ならSupervisorとか使えば
PIDの管理とかいちいちしなくても簡単にできるよ
>>425 そのやり方だと、ターミナル閉じたら終わっちゃう環境もあるよ
>>426 ありがとうございます。
調べてみます。
>>427 マジですか。。。
ターミナル閉じて終わらないか確認しておきます。
幸いターミナルを起動するPCは1つだけなので、それで終わらなければ、、、
良い、、、ですよね、、、
>>428 tty 切り離し でぐくれば色々出てくるかと
落としたくないならちゃんとデーモン化しないとダメだね
Supervisorもそのためのものです
screenとか使って手抜きの方法もあるけど
>>429 ありがとうございます。
Supervisorでデーモン化を頑張ってみます。
私鯖管じゃないんですけどね。
(なぜココまでやる必要があるのだろうか。。。これPHPerの仕事ですかね?)
>>430 起動するコマンドラインを
nohup php hogehoge.php --pidfile=/var/run/hogehoge.pid &
とすれば大丈夫。
大抵のプロセスはHUPシグナルを受け取ると終了しちゃうんだけど、ターミナルを閉じるときに
バックグラウンドジョブにHUPシグナルを送るかどうかは、ログインシェルの設定による。
システムのデフォルトで送るか送らないかは決まってるけど、個々人で設定もできる。
詳しい話は、こことか参照。
「技術/UNIX/なぜnohupをバックグランドジョブとして起動するのが定番なのか?(擬似端末, Pseudo Terminal, SIGHUP他)」
https://www.glamenv-septzen.net/view/854 この言語なんなん?
explodeとか命名センスが意味不明
>>431 ありがとうございます。
調べてみます。
「implodeは配列を内部で破裂させてバラバラにする感じ」
↑わかる
「逆の処理も作ったし対義語のexplodeって名前にしたろ!」
↑アホなの?
他言語だとsplitで正規表現も使えるのが多いわな
PHPの場合
perlの動作と同じ正規表現対応のsplit()もあったけど、5の途中から非推奨で7で削除
正規表現を使うならpreg_split()で使わないならexplode()
他言語でexplodeというのは、少なくとも俺は聞いた事がない
他言語を使う人なら、ここら辺がPHPのイケてないところというか「何か気持ち悪い」というのは分からなくもない
>>436 splitはバイナリセーフじゃないしPOSIX拡張正規表現相当じゃなかった?
>>437 PHPのsplit()はそうだね(正規表現でいうとereg()系)
だから非推奨→削除となった
cakephpを入れました。
php -i grep intl ってやるとずらずら出てくるのですがこれってなんですか?
phpのバージョンは7.0です。
grep.phpを実行してるってことですか?
php -r 'phpinfo();'て書いた時とおんなじ文字が流れてきます。
intlってなんなんだ
どういうことかわかりました。
php -iでphpinfo()の中身が出るんですね。ほげー
お願いします。
以前、どこかのスレで、
「xamppを使ってPHPの開発してるなんて素人だけ。プロは使わない」
というレスを見ました。
xamppの何がいけないんでしょうか?
xamppでは開発できないことってあるんですか?
自分が使いやすいのを使えば良い
いちいち人の意見に流されるな
ただ、XAMPPの環境はかなり独自だから、使い方をを誤ると失敗することもある
ある程度の人数で共同開発する場合は、環境の差異をできるだけ少なくすることが大事で、
そういう意味ではXAMPPが向かないのも事実
Dockerとか使えて色々な環境に合わせられる人の方が重宝されると思う
どこのプロかは知らないけど普通にxampp+PhpStormで開発してるし
たぶんそこらのプロよりは今まで稼いできたと思う
「何で」作るかなんかどうでもいいんだよ
大事なのは「何を」作るか
そこんところ勘違いしてる自己満が多すぎるのがこの世界
素人でもプロでもXAMPPは使う価値は低いだろ。
PHP自体、単体動作するし、HTMLサーバーが必要なら実運用と同環境にすればいいし。
大抵のエディタなら、編集中のPHPファイルを保存して
PHPへコマンドライン渡すのをボタン一つに割り当てられるし、
初心者がわざわざ手間のかかる、複雑なXAMPPを導入する必要はないかと。
出力をテキスト出力したければteeとかいうlinuxコマンドつかえばいい。
xamppを使ってると、いつまでたってもプロビジョニングのスキルが付かないという問題はある
使うことを否定はしないけど, あえて使う理由は全くない, という認識だなぁ
初心者がXAMPP使うって言ったらPHPビルトインサーバじゃダメなの?って必ず聞く程度には
phpにdefineを書いて、そのphpをrequireで読み込むのと、
DBからselectして読み込むのと、どちらが早いのでしょうか?
環境はphp7.0です。
ちょとしたマスターはphpで配列で記述するな。いちいちデータベースにテーブル作るのが面倒臭いし
[NEET@]$ sudo pecl upgrade --force
pear.php.net is using a unsupported protocol - This should never happen.
PEAR Version: 1.10.1
PHP Version: 7.0.18-0ubuntu0.16.04.1
Zend Engine Version: 3.0.0
bosukete
(*´ω`*)敗北獣クヤシタン達が使う単語は「キチガイ」
(*´ω`*)むぅは基地外基地外連呼されている未来が見えるむぅ
(*´ω`*)語彙力に乏しいチンパン達むぅ
(*´ω`*)予想できてしまうむぅ
(*´ω`*)だだだだだだれもむぅの相手してねーし!俺は放置してたし!
(*´ω`*)これも簡単に予測できてしまうむぅ
(*´ω`*)悲しいまでにむぅの予測の範囲内の行動と言動むぅ
(*´ω`*)いつまでもむぅには勝てないむぅ
OPCache Control Panelで項目値を見ると、
Num Cached Scripts、Num Cached Keys、Misses
これらが全部1,000越えで同じ数値です。
これはMissesということは悪いことなんですよね?
これはどの項目を調整するのでしょうか?
Downloader.php kara error message otteru
bosukete;;
>>459 syoboiyo, masarusan
バージョン1個違うだけで変なエラー起きるとか怖すぎる
しかもグーグルにも載って中田
xmlの読み込みモジュールとchannel見比べてるとわかるお
まぁ困ってない奴にはどうでもいいエラーだし変にスレで騒いですまんかったお
rom
(*´ω`*)今月からお給料が上がって幸せむぅ
(*´ω`*)
>>1000なら母港拡張に書類一式を購入してを由良改二に渡して幸せにするむぅ
教えてください。
以下のような多次元配列で、
[result]-[name]のWIN値をカウントしたい
(もしくはこのKeyに入ってる値それぞれカウント)のですが、
いい方法ありますでしょうか。
array_count_valuesかなと思いましたが、
多次元だとKeyの指定がよくわからず詰まっています。
よろしくお願いします。
Array(
[0] => Array(
[time] => 1500819445
[num] => 148
[result] => Array(
[hoge] => PERFECT
[name] => WIN
)
)
[1] => Array(
…
)
>>467 いまいち何がしたいのかわからんけど、array[i]['result']['name']に'WIN'という文字列が入っている要素の個数を知りたいってこと?
>>468 そうですね、要は勝利(敗北)数と勝率を出したいです。
ERRORになった部分は除外したけど無効試合とするのもありやな
>>470 おお、勉強になります。
自分の方でも調べましたが、
array_count_values自体は指定したキーを
再帰的になめてカウントしてくれるような機能じゃないみたいですね…勘違いしてました。
やはり配列ループの中で条件判定が良さそうですね。
ご教授のコードは汎用性が高そうなので、
検証してベースにしてみます。
ありがとうございました!
質問です
jcode.phpを使っているRSSリーダーが突然読み込まなくなりました
まさかとは思いますが、配布元の
http://www.spencernetwork.org/が死んでると使えないのでしょうか?
質問です。
特定のアドレスに届いたメールを転送するさい、MLのように転送するスクリプトを書いています。
配信されるユーザのメアド: A
MLのメアド: B
実際に配信されるメールの中を
To: B
としたいのですが、テストをしてみると
To: A, B
となってしまいます。解決策はありますでしょうか?
以下、コードです。
$headers .= "To: " . $B . "\n";
$headers .= "Reply-To: " . $B . "\n";
mail($A, $subject, $body, $headers);
>>475 初心者の俺にソースコード全部見せてみな
SMTPレイヤでRCPT TOヘッダで宛先指定すればよい
が, そもそもmail関数, というかバックエンドのsendmailコマンドでSMTPレイヤの操作って出来るのか?
リレーが設定されてなければ単にメールヘッダのToをSMTPのRCPT TOヘッダにコピーしているだけじゃなかろうか
まぁfsocketとかでSMTPサーバと会話すればいけるんじゃなかろうか
>>475 $header に "To〜"を入れずに、
mail($B,〜ってやってみたら?
教えてください
入力フォーム→確認画面→完了画面、という流れがあったとき、
それぞれの画面をそれぞれ1ファイルで作るのは普通なんでしょうか。
たとえば、
input.php、chech.php、kanryo.php みたいな。
間に、修正画面 edit.phpが入ったりします。
自分のイメージだと、同一ファイル内(たとえばform.php)でPOSTとかsubmitされてきたフラグか何かで画面切り替えるように作るのがいいと思っているのですが、
ファイルを分ける方が一般的なのでしょうか。
フレームワーク使ってるならリクエストの振り分けはrouterの仕事
PHP側をREST APIとかにしてしまうならUI側はJavaScriptの管轄
全部スクラッチからやるなら好きにすればよい
何が普通かは色々だが、
一つのソースで全部こなしたいなら
フォームにhiddenで現在のステップを埋め込み
その値をみてphp側の表示や処理を切り替えれば
>>480-481 どっちも質問の答えになってないw
質問に答えず、自分のいいたいことばっか言ってる。
こういうのがマの悪いとこだね。
まずは好きに作ってみろ
答えなどないのだから
余裕ができたら他人のプログラム見るとかしてみればいい
>>483 だからそれは質問の答えじゃない。
てか、なんでそんなに上から目線なの?
>>483 じゃ、お前が答えろよ
一番偉そうにしてるのもお前だし
お前みたいな口だけ番長が一番たちが悪い
ネット弁慶多すぎw
なんですぐ「〜しろ」と偉そうな口調になるんだろう。
もういいや、俺が答えちゃおう。
はっきり言うと、どちらが一般的かはわからない。
すべての開発者にアンケート取って聞いたわけでもないし、
世界中に転がってる入力フォームのソース調べて集計とったわけでもないから。
でも、どちらがより合理的かといえば、1ファイルで完結させる方。
たぶん質問者はフレームワークを使わずオブジェクト指向で書いてもいないみたいなので、
1ファイル完結の方が手間は少ないはず。
画面部分にしてもロジック部分にしても同じようなこと何度もやることになる。
だから、単純なphpで書く場合、ファイルわけちゃうと面倒なんだよね。
でもまあ、こんなこと考えるくらいならフレームワーク使った方が早いよ。
無駄なこと考えなくてよくなる。
>>486 フレームワーク使う/使わないと、1ページで完結させる/させないは別問題
>>487 別問題だからこそ、余分なこと考えなくてよくなるんだよ。
>>488 > 別問題だからこそ、余分なこと考えなくてよくなるんだよ。
別問題だから、フレームワークを使う場合でも使わない場合でも、1ページで完結させるかどうかは
考えないといけないということ
>>489 ちゃうちゃうw
そもそもなぜこんな質問が出たのかといえば、controllerとviewが分離できていないからでしょ。
さらにいえば、controllerとbusiness logicが分離できていないから。
そのへんがちゃんと出来ていれば、1ページ(1controller、1class、1function・・・)完結でも
そうでなくてもたいした問題じゃなくてなる。
そういう分離はフレームワークの基本設計の範囲に含まれるから、
何も考えなくても自然とできるようになるよ。
てかさ、元々の質問は「一般的かどうか」でしょ。
なぜ俺以外答えてやらないんだよ。
わからないならわからないでもいいじゃん。
それなのに偉そうに講釈たれるのはホントみっともない。
社会的にプログラマーの地位が低いのはそういうとこに原因がある。
>>490 > そもそもなぜこんな質問が出たのかといえば、controllerとviewが分離できていないからでしょ。
controllerとviewが分離できているかどうかと、1ページで完結させるかどうかは別問題
> それなのに偉そうに講釈たれるのはホントみっともない。
関係ないこと垂れ流してるという自覚はないんですかね
まあどうしても一般的かどうかを知りたいということであれば、
> 入力フォーム→確認画面→完了画面、という流れがあったとき、
> それぞれの画面をそれぞれ1ファイルで作るのは普通なんでしょうか。
は、もはや一般的ではないでしょうね。
さらに言えば、確認画面を挟むというやり方も古いと思うよ。
ユーザーは確認画面で確認なんかめったにしない。邪魔に思う人が大半。
こんな感じでやればいいと思うよ。
・GET form.phpで入力ページ表示
・form.phpのsubmit先は自分自身
・入力内容をチェックしてエラーがあるなら、それも含めてまたform.phpを表示
・エラーがないなら、確認画面や完了画面にリダイレクト
こういう過剰反応もアレだよなw
こんなんじゃ実際の仕事でも苦労しそうだね。
>>480-481で十分なのに、自分の承認欲求を抑えられないお子様よりはましだと思うよ
479の質問
1ファイルで作るのは一般的か?
どう作ればいいか聞いてない
読解力の問題ですね
A. ケースバイケースです
とか
A. 設計に依ります
とか, そんな回答求められてないと思うんだけど, 最終的には質問者が判断することでしょ
内容に明らかな誤りがあるとかなら分かるけどわざわざ突っかかる必要あったかね
>>483が正しいかな
最近あちこちのスレで上から目線がどうのとか言ってる奴見かけるけど、同一人物か?
echoそのものにhtmlspecialcharsを仕込むことって可能ですか?
HTML側の出力を常に<?=$hoge?>にしたいです
今はエイリアスのh関数を作って<?=h($hoge)?>で出力しています
>>499 > echoそのものにhtmlspecialcharsを仕込むことって可能ですか?
できません
フレームワークとかテンプレートエンジンとか使わんのは理由あるのかな?
PHP7.1を使っています。
$_SERVER['REQUEST_TIME_FLOAT']をvar_dumpしてみたところ
float(1503359895.526)
のように表示されました。
PHPマニュアルにはマイクロ秒単位でタイムスタンプを取得できるように
書いてありますが、これってミリ秒単位ですよね?
どういうことでしょうか。
なんとなく自己解釈すると、マイクロ秒単位まで出せる可能性があるけど
環境によっては精度が落ちるってことなんですかね…。
そう納得することにしました。
>>504 自分も初心者なのでさっぱりんこだけど、paiza.ioとかcodechefのようなオンライン実行環境だと100マイクロ秒(小数点4位)までは出力されてるから、そういう事なんかなと
>>506 貴重な情報ありがとうございます。
microtime関数の場合だと、
microtime(false)で実行すると
"0.31535500 1503365783"のように小数部と整数部を分離した文字列が返るので
マイクロ秒の精度が得られますが
microtime(true)でfloat型の返り値を得ると
1503365783.3154のように精度が落ちますね
有効桁数の問題なんでしょうかね。このへんあやふやなんですが…。
floatというか倍精度での有効桁数は十進数で16桁未満ですしおすし
Unixタイムスタンプによる表現だと、整数部がでかくなればなるほど
つまり時代が進めば進むほど、小数部の精度が悪くなるってことですかね。
昔は精度高かったのかな。
そもそも100nsの桁ですら、正しいかどうかあやしいんでないの?
というか、1us以上の部分も正しいかどうか怪しいかもね
浮動小数を使うのがそもそもまともではない
で, 日本語版の訳が誤りであるというのが妥当で, 英語版では,
> If get_as_float is set to TRUE, then microtime() returns a float, which represents the current time in seconds since the Unix epoch accurate to the nearest microsecond.
とあるから, マイクロ秒単位で精度が出るとは書いてない, floatの精度内で現在のマイクロ秒時刻に最も近い値を返すと読める
ファイルアップロード時の上限チェックについて質問させてください
ページAでファイルをアップロードして、「次へ進む」ボタンでページBに遷移させています
このとき、アップロードしたファイルのサイズが5MB以上ならエラーメッセージを表示させ、ページBに進めないようにしたいです
今はページBに進んでから$_FILESを使い上限チェックし、超過していたらメッセージを表示しています
何かいい方法はありますか?
>>513 クライアントサイドでやればよい
勿論B側のチェック処理は省略出来ない
指定したサイトのサイトマップを取得したいのだが
何かいい方法はないだろうか?
単純にトップページURLの後に「/sitemap.xml」や「/sitemaps.xml」と付けるだけでは
拾えないサイトが多い
任意のサイトってこと?
だったら、サイトマップに厳格なルールなんかないし無理だろ
やっぱり無理か…
あと思いつくのは
リンク辿ってサイトマップをつくるかくらいか
>>517 まぁ
sitemap.xml
robots.txt
辺りは見てそこでサイトマップに関する記述があればそれを拾うというのは
「まず最低限やるべきこと」ではあるだろうな
この質問をする人がそもそもサイトマップの定義を理解しているのかという点は甚だ疑問ではあるけど
サイトマップの定義は全然知らない
サイトマップを取得と言うよりそこに書かれているURLが欲しかった
> サイトマップの定義は全然知らない
だろうね
特定ドメイン以下のファイルパスを全部取得したいって事じゃない?
であれば
サイトマップを使うのももちろん手ではあるけど
例えばGoogleでsite:URLで検索した結果を使うとか
他の賢い人が作った賢い機能をありがたく流用させてもらって
自分の作りたいものを作るという考え方「も」ある
リンクを辿ってURLを拾うのも
超簡単なものならPHPだと10数行ぐらいあれば書けるけど
再帰的な処理になるからサーバー側に与える負荷とかが
分かってないなら(というか分かってなさそうなので)自分ではやらない方がいい
>超簡単なものならPHPだと10数行ぐらいあれば書ける
横入り申し訳ない
再帰というのを丁度勉強してるところなのでどんな風に書けるのか教えてもらえないだろうか
function fetchUrlList($url)
{
static $urlList = array();
if (isset($urlList[$url])) { return $urlList; }
$html = file_get_contents($url);
$urlList[$url] = '';
if (preg_match_all('/=\s*[\'\"]\s*(https?\:\/\/' . parse_url($url, PHP_URL_HOST) . '[\w\-\.\!~\*\'\(\);\/\?\:@&\=\+\$,%]+\.html?)\s*[\'\"]/i', $html, $matchs)) {
foreach ($matchs[1] as $match) {
if (!isset($urlList[$match])) {
fetchUrlList($match);
}
}
}
return $urlList;
}
5分程で超適当に書いてほとんど検証してない糞ソースでも良ければ
再帰は12行目のところね
2chの仕様上仕方なくインデントを全角空白にしてるから注意(他へソースを載せるのすら面倒w)
一度取得したURLを再取得しない程度で負荷には全く配慮してないので自己責任で
処理の流れさえ分かれば良いと思ったから、正規表現(超適当だからこれも直してw)の部分見れば分かる通り
相対パスは無視して末尾.htmか.htmlしか取ってない
相対パスまで処理する時は正規表現書き換えて相対パスをURLに変換する処理を自分で書いて
ソースより↑の説明書く方が時間かかったかもw
ありがとうございます
ほえーこの短時間ですごい
10数行ぐらいって言って本当に18行で書けてるのってもうレスを書きながら頭の中でソースができてるのかな。。。
正規表現をまだ勉強してないのでそこも勉強します
>>523 > 10数行ぐらいって言って本当に18行で書けてるのってもうレスを書きながら頭の中でソースができてるのかな。。。
この程度の「流れだけ」なら脳内で一瞬でできるけど行数は感覚で超適当に書いただけ
実際、最初書いたソースは20行超えたのでちょっと無理やり18行にしただけw
自転車に乗るのと同じで慣れよ慣れ
たくさん書いてたら自然とできるようになる
繰り返すけど流れ「だけ」が分かればと適当に書いたものだから
悪しからず
ふむふむ、$urlListは引数で渡すよりstaticの方がいいのかな?
連想配列にしてるのはin_arrayよりissetの方がハッシュで早く判定出来るから?
再帰はstatic使うと楽と他言語の経験で脳死判断しただけで深くは考えてない
連想配列でisset()にしてるのはただそう書く方がタイプ数が少なくて楽だと思っただけ
すまん
ほんと何も深いことは考えてない
もう今日はたぶんこのスレみないのでおかしなところがあったら自由になおしておいて
cron使えない、サーバーに実行時間制限がある、アクセス毎の処理じゃダメって前提で定時処理する方法教えてくらはい
この三つを使えるなら余裕なんだけど…
>>527 cron使えるサーバからキックすればいいじゃん
webなら<img>や<iframe>で埋め込んでおいて
クライアントからの呼び出し時に
前回の実行から一定時間が空いてる時だけ実行とか
指定時間内に1回だけ実行みたいなやり方
(アクセスが無いならそもそも処理しなくていいだろうという考え方)
で擬似的にcronっぽい事はできなくもないが…
そう単純な話でもなさそうかな
>>528が普通だと思うよ
>>528 なるほど、じゃあ1サーバーでってのも条件になっちゃうな…無理か…仕様変えてもらうかサーバー変えるしかないか
>>529 その方式は簡単だし言ってることも尤もなんだけど一度の処理に5分は掛かるからアクセスより先に処理しておきたくて
もう少し考えてみる、ありがとう!
久しぶりにこの板来たけど
haskellのスレがpart30なのに、php質問スレがまだ8って
php勢いなさすぎ・・?
自分もPHPの質疑応答など、PHPの議論が活発な掲示板を
探してはいるけど見つからないね
2chでこれだもんなぁ
ペチパーは多いはずなんだけど…
もっともみんな顔だそうよ
PHPスレの歴史
* 2004/11/02 WebProg板に 【PHP】くだらねぇ質問はここに書き込みやがれ が立つ
* 2008/09/20 73スレ目でID表示派/非表示派で分裂
* 【PHP】下らねぇ質問はID出して書き込みやがれ 74 と 【PHP】ID出さなくても質問OKなスレ【初心者歓迎】 に分かれる
* 2009/01/29 ID無し質問スレが1スレで終了, くだすれPHP(超初心者用) 5 に合流する
* 2014/10/28 ID表示質問スレは138スレまで継続する
* 2014/12/22 強制ID表示を求めム板に移動
* この際スレタイとスレ番がリセットされ 【PHP】下らねぇ質問はここに書き込みやがれ になる
* 2016/04/22 ム板の 【PHP】下らねぇ質問はここに書き込みやがれ 4 から分岐し, WebProg板に PHP質問・雑談スレ4【初心者お断り(ROM歓迎)】 が立つ
* 2016/05/11 5スレ目が重複し後に立てられた方でワッチョイが導入される
* 2016/08/02 6スレ目が終了し上記の重複した5スレ目が再利用される
* 2016/11/09 7スレ目から現在に至るまでワッチョイが慣例化
WebProg板には無いここの良さって気楽なところ?
なんどarray_filterとarray_mapで引数の順番逆なのん?
>>532 「議論」ではないが「質疑応答」なら
アホー知恵遅れの方が2chなんかより余程活発
かなり前からね
>>533が詳しく書いてくれてるが
このスレには色々と過去があって
人の揚げ足取りたいだけの暇人も多いからなぁ
俺がもし初心者だったら知恵遅れの方で聞くわw
>>537 implode()みたいに
引数の順番はどっちでも良いよ
なんてものまであるw
PHPの組み込み関数の命名規則や引数の順番の統一性の無さは
PHPがダメだと言われる理由の1つだろうね
そんなもんだと諦めてくださいw
今はIDEの保管機能とかカンニング機能が進化してるからあんまり気にならないけどなぁ
>>540 流石にimplodeみたいなのはアレひとつきりじゃなかったっけ・・・?
まぁ関数の命名についてはいろいろな言語から引っ張ってきてるからな・・・
それがnullバイト攻撃みたいなのを引き起こしたりもしたわけだが
そろそろ無名関数にラムダ記法を使わせてくださいお願いします
毎回functionとreturn書くのしんどいです
>>543 記法がちょっと違ってて違和感半端ない方はrejectされてたなー
https://wiki.php.net/rfc/short_closures ES6に合わせた記法の方はとりあえず複数行不可なものが提案されてはいる
https://wiki.php.net/rfc/arrow_functions しかしPHPは => を別のsyntaxで採用してるからこれもrejectされそうな気がする
>>544 phpマニュアルにさコアハッカーの手引きってあるじゃん?
今C言語勉強しながらそこ読んでるんだけど実務で役にたつかな?
ローカルで作業してるのだけど
外付けのHDDに保存してある画像を表示させることってできないだろうか?
直接表示させる事はできなくてもfile_get_contentsで読み込んでならできるような気がするが
これ以上はよく分からない
できるなら教えてください
ブラウザに画像として表示させたいと思っている
file_get_contentsで文字化けした文字列みたいになるから
これを画像に戻せないかなと思った
> file_get_contentsで文字化けした文字列みたいになるから
の部分の意味が分からない(大抵の画像ファイルの中身とってきたらバイナリに決まってるだろ)が,
1. Base64エンコードしてHTML中に埋め込む
2. Content-typeヘッダを適切にセットしてfile_get_contentsでとってきたデータを単に出力
ローカルでやっているなら、シェル経由でブラウザ起動できるんじゃない?
>>551 ありがとうございます。
やってみます。
>>550 header('Content-type: image/jpeg');
readfile('D:/hoge/fuge/hage.jpg');
readfile()は
echo file_get_contents()としても別にいい
ブラウザに画像を表示させたいだけなら
そもそもPHPを使う必要すらないわけで
HTMLファイルに
<img src="D:/hoge/fuge/hage.jpg">
じゃダメなのか?とも思ったり
>>554訂正
×<img src="D:/hoge/fuge/hage.jpg">
○<img src="file:///D:/hoge/fuge/hage.jpg">
スレ汚しスマン
できました。
ありがとうございます。
<?php
$img = base64_encode(file_get_contents('H:/picture/001.jpg'));
?>
<img src="data:image/jpeg;base64,<?php echo $img; ?>">
なんでスキームがfileのときってfile:///みたいにスラッシュ3つなんだっけ?
>>560 そういう質問をする人は
素直に既存フレームワークを使うことをおすすめしとく
>>561 >>562 error_log関数がベターってこと?
自分でフレームワークを作るな。
車輪の再発明はダメ
自分で作ると、テストなどで時間も掛かるし、品質も最悪となる。
セキュリティ修正も出来ない
フレームワークを使うべし
ログといっても色々あるわけで
エラーログ、ログインログその他諸々etc
そのログのフォーマットにしたってテキスト or DBのどちらにするのかという根本的なところから
テキストならテキストでcsv、tsvその他諸々etc
目的も何も分からないのに
>>560の質問にまともに応えられる人なんていないから
>>562のような解答になる
真面目な解答がほしいなら相応の情報は出すこと
新人の教育係もやってるけど
慣れてくると質問の仕方だけでこの先やっていけるかどうか分かってくるね
だめな子は超能力者じゃないと答えられない聞き方をしてくる
できる子は下調べして自分はこう思うがどうですか?という聞き方をしてくる
逆の立場から物事を考えられないタイプは何やらしてもだめだなと思う今日この頃
>>566 その通りだとは思うけどここは「下らない質問」スレだし
別に質問は好きにすりゃいいよ
ただ、質問の仕方のレベルが低ければ
解答もそれ相応のものにしかならないよ
って事は分かって欲しい
答える方はそれこそ超能力者じゃないので
質問の仕方から手取り足取り教えてもらいたいなら
Yahoo知恵袋でもオススメしときますw
初心者なんですが、仮想サーバーをたてるのにlocalhostを使いたいのですが表示されません。どなたか詳しくおしえてもらえないでしょうか?
仮想サーバのIPを調べてhostsで対応させればいいのでは
意味が分からんなぁ…
>>567を読んでの質問だろうか?
あえて超能力で回答してみるけど、
仮想化したサーバーが立ってるとして、それはlocalhostじゃないんじゃないか?
仮想化ソフトのネットワーク設定次第だが、別のIPアドレス割り当てられてないか?
どうしてもlocalhostでアクセスしたいならポートフォワードの設定を入れろ
>>570 返信ありがとうございます、どこをどう言えば伝わるのかよく分かってなくて、本を買って勉強してるのですが、XamppをDLして、apacheを起動させて、localhostを検索したら表示されるって書いてあったんです
一応、プログラミングを教えてくれる先生に質問したのですが、ポートは関係ないんじゃといわれたのですが、見ないことにはどうにもと言われてしまいました
>>571 http://localhost/ にアクセスしてみたとかそういう話?
だとしたら完全に板違いなんだけど?
自分のPCでapache動かしているなら、それは仮想サーバーではないと思うが
>>571 まず、XAMPPのことを仮想サーバーと書かれると質問がまったく意味をなさないことになる
最初からXAMPPと書いてほしい
で、XAMPPでApache立ち上げたら基本はlocalhostでアクセスできるはず
まずはXAMPPのコントロールパネルできちんとApacheが立ち上ってるか?
たしか緑色のランプみたいのがついてる状態になるばず
立ち上がってるなら、ポートの指定がどうなってるか?
80番なら
http://localhost でアクセスできるが、
80番以外ならなら
http://localhost:12345 みたいにアクセスしないとダメ
あとは localhost を 127.0.0.1 に変えてみるとか
これでアクセスできるなら hosts の設定を確認して、書き換えれば localhost でもアクセスできるようになる
書き換え方はぐぐれ
>>573〜576返信ありがとうございます、いわれた通りやってみたいと思います。板違いとの指摘もあり、ご迷惑おかけしました。
XAMPPのスレってある事はあるが、
3年くらい誰も書いて無かったりだから
誘導も出来ないな
>>575 無事にできました。ありがとうございました。
XAMPPのMってひっそりMySQLからMariaDBになってるんだな
今後MariaDBが頭角を現すなんてことあるのかな
Googleもオラクルと喧嘩してMySQL切り捨ててMariaDB採用してるしな
そもそもRHELが大分前にMySQLからMariaDBに切り替えてるしOracleはほんまもう
そもそもMySQLの創始者はなんでMySQLをオラクルに渡しちまったんだ?
もともと、他の多くのオープンソースプロジェクトと異なり、スウェーデンの単一の営利企業である
「MySQL AB」によって維持されていた。2008年2月26日に MySQL AB がサン・マイクロシステムズ
に買収されたことをもって、サン・マイクロシステムズの所有となった。
その後、2010年1月27日、サン・マイクロシステムズがオラクルに買収されたことにより、商標権
ならびに著作権もオラクルに移管された。
https://ja.wikipedia.org/wiki/MySQL IP192.168.1.1/24を192.168.1.1-192.168.255.255?に直したいのです
正規表現とNet_IPv4を組み合わせて書けばできると思う
>>585 PHPには long2ip() と ip2long() という便利な組み込み関数があるので
それとビット演算子を使えば比較的簡単にできると思う
$cidr = '192.168.1.1/24';
list($ip, $prefix) = explode('/', $cidr);
var_dump($ip . '/' . long2ip(0xFFFFFFFF << (32 - $prefix)));
// 俺にはこの程度の処理にPEARを使う理由と正規表現をどこで使うかがよく分からない
>>580 というかそれまでMySQLでやってたような簡単な案件は
もう何年か前からとっくにMarinaに移行しちゃったけどなぁ
Oracleに買収された時点でこうなる事は予想してた人も多いと思う
PHPならPDO使ってれば何も修正するところなんて無いし
>>589 >>585の内容を
192.168.1.0/24 ⇒ 192.168.1.0/255.255.255.0
という話と読み間違えてしまい
>>587のコードを書いたのだけどこれで良かった?
192.168.1.0/24 ⇒ 192.168.1.0 - 192.168.1.255
とするなら
$cidr = '192.168.1.0/24';
list($ip, $prefix) = explode('/', $cidr);
$ipLongStart = ip2long($ip);
$ipLongEnd = $ipLongStart + pow(2, 32 - $prefix) - 1;
var_dump($ip . ' - ' . long2ip($ipLongEnd));
流れはこんな感じ
よく読んでなくて申し訳ない
// ディレクトリ階層以下のコピー
// 引数: コピー元ディレクトリ、コピー先ディレクトリ
// 戻り値: 結果
function dir_copy($dir_name, $new_dir)
{
if (!is_dir($new_dir)) {
mkdir($new_dir);
}
if (is_dir($dir_name)) {
if ($dh = opendir($dir_name)) {
while (($file = readdir($dh)) !== false) {
if ($file == "." || $file == "..") {
continue;
}
if (is_dir($dir_name . "/" . $file)) {
dir_copy($dir_name . "/" . $file, $new_dir . "/" . $file);}
else {
copy($dir_name . "/" . $file, $new_dir . "/" . $file);}
}
closedir($dh);
}
}
return true;
}
このコードの引数はどう指定したら動くのでしょうか?
$dir_name = '../x';
$new_dir = '../y';
↑こう指定したりFTPのフルパスを指定したりしましたが全く動く気配がありません、、
よろしくお願いいたします。
文字と数値を相互変換すれば、元に戻るはずなんですが、
これは一方がtrueにならないですが、原因わかりますか?
packの"v"は、16bit-Little-Endianの指示ですが、
元に戻るかはソースコードのエンコードも関係しますか? しないはずだとおもってます。
$moji = "亜";
$su = unpack("v", "亜"); $su = $su[1];
$moji2 = pack("v", $su);
$su2 = unpack("v", $moji2); $su2 = $su2[1];
echo "su==su2? "; var_dump($su==$su2);
echo "moji==moji2? "; var_dump($moji==$moji2);
上の修正しました
$moji = "亜";
$su = unpack("v",$moji); $su = $su[1];
$moji2 = pack("v", $su);
$su2 = unpack("v", $moji2); $su2 = $su2[1];
echo "su==su2? "; var_dump($su==$su2);
echo "moji==moji2? "; var_dump($moji==$moji2);
>>592 UTF-8なら日本語は3byteで符号化される
亜は\xE4\xBA\x9Cだからリトルエンディアンのunsigned shortでunpackすると先頭2byte分の0xBAE4 = 47844だけとれる(残りは1byteしかないからunsigned shortでない=>無視)
これをリトルエンディアンのunsigne shortとしてpackしようとすると0xBAE4しかないから\xE4\xBAになる
したがって符号化が偶数bytesなら戻ることが期待されるがそもそもunpackの用途が間違ってる
>>594 サンクス。理解しました。くわしくありがとうございます。
Seesaaブログでは、blogger,metaWeblog,mt 互換のXML-RPC APIをサポートしております。
http://faq.seesaa.net/article/376863567.html とあるんだけど、いいライブラリない?
packagistで調べてもどれがいいのかさっぱりわからん。
phpのrename関数ではなく、
system関数でwindowsのrenを使いたいのですがどう書けばよいのでしょうか?
phpをwindowsで自動化処理するのに使っていたんだが(使い慣れてるから)
node.jsでも出来るんじゃね?と思って書いてみたら出来た
イベント駆動型の設計思想が染み渡っているから書き心地がモダンで気持ちいい
phpもそろそろ寿命だよね?
自動化処理とかなんでもいいだろ
書き心地の問題じゃねえな
そのプラットフォームで最初から使えるかどうかの問題だ
windowsの場合どちらもあてはまらないわけで実にどうでもいい
JavaScriptはPHPにあるような気軽さもあるし
それでいて育ちの良さもある
気取ったところのない、優秀ないい子って感じ
PHPも頑張ってたけど、もともとが魔改造されたPerlだからねぇ
MySQLの時代の言語だったのだ
>phpもそろそろ寿命だよね?
WordPressが存在する限り、PHPが無くなるわけない。
質問です。
PHP5.3でpostgresql9.4のクエリを書いたのですが、
テーブル名, 列名が日本語なのですが、
pgAdminIII上では日本語部分を""で囲めば動作するのですが、
PHP上だとrelation "テーブル名" does not exist となってしまいます。
$sql = "SELECT * FROM テーブル名"; //ダメ
$sql =
書き掛けで送信してしまったので再送
質問です。
PHP5.3でpostgresql9.4のクエリを書いたのですが、
テーブル名, 列名が日本語なのですが、
pgAdminIII上では日本語部分を""で囲めば動作するのですが、
PHP上だとrelation "テーブル名" does not exist となってしまいます。
$sql = "SELECT * FROM テーブル名"; //ダメ
$sql = "SELECT * FROM \"テーブル名\""; //ダブルクォートで囲ってエスケープしてもダメ
どのように書けばいいのでしょうか?
よろしくお願いします。
文字列をシングルクォートで囲んでテーブル名をダブルクォートで囲んでもダメ?
pgAdminIIIじゃ、win環境からだよね。
文字コードが postgresqlコンパイル時や設定と一致してないんじゃ無いの?
すいません。自己解決しました。
データベースのEncodingがSQL_ASCII になっていたからでした。
EncodingをUTF-8にして作り直したら
クォーテーションで囲まなくても動作しました。
ありがとうございました。
PHPは寿命どころか7で速くなったしセキュリティも改善されてきてるし
いい感じでないの
まぁJavaScript界隈と較べれば流れが遅い感はあるがどちらかといえば向こうが速過ぎる
フロントエンドとバックエンドで両方使うことが多いから比較してしまうのは分かるが
$obj = new stdClass;
$obj->hello = function() {
return "Hello World\n";
};
echo $obj->hello();
こういう書き方出来ないですか?
>>612 ありがとうございます
stdClassじゃなくて無名クラス使うんですね
7はまだ導入できないので別の方法にしようと思います
>>611 javascriptかよ
できないだろ普通
$obj = new stdClass;
$obj->hello = function() { return "Hello World\n"; };
echo ($obj->hello)();
これは知らなかったな
https://ideone.com/TlenVi こうしてやると見かけがJavaScriptっぽくなるな
スレ違いでしたら申し訳ありません
現在ワードプレスでサイトを作っていて
カスタム投稿に対して
サーバーから日付を取得して、今月だったらこの記事、来月の日付だったらこの記事というように条件分岐させた表示をさせたいです
別の箇所にはループ処理でカスタム投稿自体を表示させています
カスタム投稿投稿のうち、Aというタクソノミーを持つ投稿のみを対象にして
サーバーから取得した月と投稿月が同じものをモジュールクリックで表示、そうでないものはまとめてループ処理で取得させたいです
またカスタム投稿自体もタクソノミーで分けています
モジュールをクリックをする
→もしAというタクソノミーを持つ記事があったら
→サーバーから日付を取得
→取得した月(今なら9月)に投稿されているタクソノミーAの記事を取得
という形にしたいのですが書き方が全く思い浮かびません
お知恵をお貸しください
Mysqlのカラムyearのレコードに $yearと入力しておきます
そして、PHP側で$year = xxxx;としておきます
これをPDOで値を呼び出した時に、レコードを変数に転換させる方法はないでしょうか?
普通に呼び出すと、ただの文字列としか認識してくれません。
なぜ、そんなことをしたいかというと、CSV出力の際のヘッダ部分をレコードとして
登録しておいたのですが、年数が可変なので、どうにかしたかったわけです。
無論、他の方法も考えてはいますが、もし、やり方次第で可能なら教えて欲しいです。
なお、ググってみたのですが、そんな阿呆なこと考える奴はいないのか、答えは出てきませんでした
確かにアホっぽい
セキュリティホールにもなりかねないし
そのアホな思いつきのままだと evalになっちまう
たんに置換かけりゃいいだろ
>>623 ちょっと何言ってるかわかんない
insertする前に年数を整形すりゃいいだけっしょ
なんでそんな意味不明で面倒なことするかな
>>626 実際、そうしました
>>627 出力が必要な帳票のヘッダが不定数だったからです
Winサーバに.NETのアプリ置いて、それを外部の端末からブラウザ経由で操作したいんだけど出来るかな?
或いはPHPからAjaxとか使ってる動的ページもそのままブラウザでアクセスしたみたいにエミュレートしたい。
PhantomJSとかあるけど安価なレンタルサーバにインストールできない可能性もあるので前者を考えてるんだけど。
何言ってるのか全然分からねぇ
その文脈で何でPhantomJS出てくるんだ?
>>631 .net使えばブラウザコントロールとかあるので簡単にAjaxとか使ってるページでも動作させれるので
間接的に動かせないかなと思ってて。
それが無理なら直接PHPでJavaScript動かさないといけないからPhantomJSとかになるのかなと。
こういうこと
* クライアント(ブラウザ) -[ネットワーク]-> サーバ(IIS etc.) -> .NETアプリケーション
をしたいと読めるわけだが, .NETからブラウザ操作する話がどうして出てくるのかとかPHPからJavaScript動かす話がどこに入るのか説明してくれ
> クライアント(ブラウザ) -[ネットワーク]-> サーバ(IIS etc.)
だとAjax使ってるページのエミュレートが面倒なので
.net使ってAjaxページも問題なく動作するプログラムをサーバに置いて
それをクライアントがアクセスした時に上手く動かせる仕組みを作れないかなと。
直接サーバサイドのPHPでAjaxページが簡単に動作させられるならそれに越した事はないけど。
もうさ, [Winサーバ], [.NETアプリ], [外部端末のブラウザ], [PHP], [Ajaxとか使ってる動的ページ]使って何がしたいのか図示してくれよ
Docker Hub で、公式イメージでも探せ
それか、VirtualBox, Vagrant, Chef など
じゃ質問をシンプルにするよ。
PHPでアクセスしてAjax使ってる動的ページを正しく動かす方法で
一番シンプルなものってなにかな?
色々調べてPhantomJSがあるのは分かったけど
レンタルサーバによってはインストールできない可能性があるのでその問題がありそう。
ちょっと調べて見たければphp製のjavascriptエンジンはないので無理ではないかなぁ
ちょっと調べて見たければ→ちょっと調べてみたけれど
>>638 そうか。しょうがないので自分のPCにPhantomJSをインストールして使う事にしてみたんだけど
今度はどうやってもステータスが0で困ってる。。
file_get_contents()だと表示されるのでPhantomJSの部分で問題が起こってるんだと思うけど。
ここの通りしたんだけど。$response->getStatus()で確認すると常にゼロで。
https://pg.kdtk.net/1405 PHPは5.6、Apacheは2.4、両方64bit
PhantomJSはcomposerで2.1.1をインストール
Headless Chromeもあるし
どうしてもPHPでやりたいってんならv8拡張がある
この場合ブラウザ側API全部再実装が必要だが
>>642 PhantomJS試してるんだけどformをsubmitする処理とかだとなんか面倒そうなので
やっぱり他のでやった方がいいのかもしれない。
Headless Chrome?それも後で試してみるよ。ありがとう。
>>643 casperjsはphantomjsより扱いやすいよ
>>628 最後の1行読んだ感じでは
DBの正規化という言葉すら理解できてなさそうな臭いがするので
DBの設計から勉強し直してみてはどうだろうか?
根本的なところからおかしいので誰もまともに答えられないかと
フレームワーク、例えばcakePHPを習得するまでに
みんなどのくらいの期間かかった?
フレームワーク初体験で
新しい言語や技術は書籍で入門するのが当たり前という人にとっては
フレームワークはどれもたいへんだよ。
意欲の問題では
フレームワークは別になくてもいいわけで
なくてもいいものをわざわざ覚えるのかなんて思いながらやってると
なかなか身につかない
仕事でどうしても必要だとかそういう状況なら2週間で覚えるよ
>>646 初めてのフレームワークでCakePHPなんか触った時点で迷宮に迷い込んで成長止まる。
PHPって将来あるの?5年もしたらもうオワコンじゃないの?
言語を意識するような時代が終わりはじめてるのでは
一定のユーザがいる状態であれば安泰だよ
>>650 そう思うならNode.jsでも使っとけばいいんじゃね?
PHPが終わるとは思わん
ただタイプヒンティング強化してるからジェネリクスが欲しい
RFCにはあるけど誰も実装書かないんだろうなー
世界中にある動的Webサイトの過半数がPHPで動いてるんでしょ?
WordPressも含めて
>>649 んじゃ、初めてのフレームワークでおすすめって何よ?w
>>654 むしろWordPressだけで過半数以上
これらのユーザーがPHPを意識してるとは思えないが
世界中で稼働しているWEB言語のシェアとしてはPHPは圧倒的
逆にWordPressの代替となるアプリが流行すればPHPは一気に消え失せる可能性はある
とはいえWordPressのようなパッケージアプリを除いた純粋にPHPを開発言語として利用しているシェアも
けっこう高いはずなので急にRubyやPythonやその他の新興言語に入れ替わるもんじゃないとは思う
その他の言語がなぜ入り込んでこないかというと、Perlの頑張りがあるからじゃないかと密かに思ってる
派遣を即席で育てて現場に投入できるっていう利点もあるから少なくとも日本だと衰退しないんじゃないかな
Laravelって誰も触れんな
日本では流行ってないか?
めちゃくちゃ使いやすいと思うけど
>>658 代替となるアプリもPHPで作られるにきまってんじゃんw
PHPはフレームワークを作るための言語だよ?
なお、オレは最近は静的型付き言語ばかり書いている。とにかく、楽。
おわったっていいじゃん
一生を捧げる言語を一つ選ぶような話じゃないでしょ。
今日の昼はA定食にしようかB定食にしようかって話で、B定食が今後なくなってもA定食食べればいい。
それより食堂がなくなる心配したほうがいい
ec-cubeのソースを見ていたら
require_once が書かれてなくて、useだけ書かれているファイルが沢山ありました。
なんで、エラーにならないの?
>>662 composer.jsonのautoloadセクションにオートローディングの設定書いてりゃrequire_onceが必要なのはエントリポイントだけ
ソース見ないとわからんけど、__autoload とか使ってるんじゃ無い?
コード貼ると書き込めないようで・・・
https://ideone.com/UMVJrY いずれも問題なく動作するのですが
mb系の関数ってどういうところで使うんでしょう?
cakeのヘンなURLはみんな一々普通の書式に書き換えてるの?
/index/limit:3/page:2 ←キモい
index/?page=2 ←普通こんな感じだよね
フレームワークってたいへんだね
>>669 むしろ下のURLの方が汚らしいんじゃね
>>669 反吐が出そうなスタイルから一般的なスタイルにしたきゃ
paramType を querystring にすりゃいい
静的Pathにするのって、Google対策だっけ?
>>659 世界ではLaravel主流になろうとしてるけど、ちょこちょこバージョン上げすぎなんじゃ
日本語翻訳された頃には次のバージョン出てたらかなわん
Symfonyはどうなの?
合計10億ダウンロードを達成したようだが
https://symfony.com/stats/downloads Symfonyは文字数が多くなる気がして
個人的にはイマイチ子
phpのプレイグラウンドサイトでいいところがあれば教えて下さい
https://www.tehplayground.com とりあえず検索して見つかったここを使ってますが
もっといいところありますか?
>>678 すごいスピードで増えてますね
日本の借金のようです
Mac Sierra + XAMPPでCakePHP3のインストールが出来ないのだけど、
みんなどうやってインスコしてるの?
composerはインスコできたけど、intlが入らない
バージョン2はコピペで済んだから楽だったのにな〜・・・
>>667 ここ良さそうですね
php以外にも大量に書けますし
git for windowsを入れたら
gitbashの中でphpも実行できるので便利ですね?
コマンドラインと大差ないといえばないですが
gitbashは任意のフォルダから始められるところがいいです
sourcetreeでいいよ
どうしてもコマンド打ちたいなら別だけど
atlassianってtrello買収のニュースで聞いたことがありましたが
こういうものを作っていたんですね
とりあえずインストールしてみました
正規表現では一重引用符、二重引用符ともに
エスケープする必要がないと知りました
エスケープをしても問題が出ないので今まで気づきませんでした
preg_match('/\"/','"',$matches);
var_dump($matches);
preg_match('/"/','"',$matches);
var_dump($matches);
どちらの結果も同じになります
何故エスケープする必要のない引用符をエスケープしても
問題が出ないのでしょうか?
よく考えてみると、引用符をエスケープしなければいけないのは、
それが文字列と外界との境界を形成する特殊な文字だからで、
正規表現では文字列の境界をデリミタが形成するので、
引用符は普通の文字と全く変わりがない、
だから他の「普通の文字」をエスケープしても同じことではないか、
と思ってqで試してみたらやはり同じ動作になりました
preg_match('/\q/','q',$matches);
var_dump($matches);
正規表現エンジンは、
意味のないエスケープ文字
を単に無視するように出来ているのでしょうか?
エスケープされた文字列を解釈するのはPHPのエンジンであり、解釈された文字列は、PHPの文字列になる。
正規表現エンジンは、当然PHPの文字列を、正規表現を表す文字列として解釈する。
最初の解釈で、無意味なエスケープはバックスラッシュが無視されるのだから、何も悪いことは起きない。
たしかにPHPの場合正規表現もまず最初に普通の文字列に入れられるので
>>688の言い方は適当ではなかったです
やはり正規表現エンジンは無意味なエスケープをただ無視するように作られているのですね
ありがとうございました
PHP初心者です。
PHPの実行モデルがイマイチ分からないのですが、
これはイベントモデルではなくただのテンプレートエンジンで、
前回の結果(または鯖上でのコンテキスト)を引き継ぐことなく、
毎回毎回ゼロから構築する必要があるって認識で合っていますか?
具体的には、Webページ全体で使われるクラスやdefine()している場合、
それらを毎回includeする必要があるのでしょうか?(今のところそう見えます)
クライアントJavaScriptの場合はページ遷移がない限り一度構築した物は使えます。
Nodeは使ったことがないですが、多分同じです。
(これらはイベントモデルだからですが)
毎回毎回全構築となると、余分な構築を省かないと実行速度が気になります。
ドメイン全体で単一アプリを提供する場合は
PHPではなくNode等の方が向いているということなのでしょうか?
例えば、dbアクセス用にクラスを作った場合、
それぞれのWebページからはその全メソッドを使うことは通常あり得ません。
だからプログラム的に美しく一つのクラスに纏めるより、
フィールドを継承し、今使うメソッドだけの子クラスに無駄に分割した方が速いのか?とも思えます。
あるいはspl_autoload_register()した場合に、
名前参照だけではなくコンパイル済み状態で格納されるから速度上の問題はない、とかありますか?
>>691 サーバサイドアプリケーションは大体そんなもんだと思うが
HTTPでセッションを跨いだクライアントの同一性保証なんて不可能だし
コードのパースとかの時間が気になるという意味ならopcacheのようなキャッシュ機構はある
とりあえずサーバサイドアプリケーションについて真面目に勉強するならLaravelとかSymfonyのチュートリアルくらいは触ってみたら
クライアントサイドとは全く違うから
>>692 了解です。ありがとうございます。
何らかの機構を備えていると勝手に信じていたので、軽く衝撃でした。
(ちなみにGoとかも同じですかね?ご存知であれば)
ただこれならPHPは各ページ毎に様々なことをするのには向いていますが、
(とはいえこれが通常のHP用途の90%以上を占めますが)
掲示板サイト等、ドメインで単一アプリを提供する際には本質的に遅いことになります。
別サイトで「こんなのどうよ?」と提案したところ、
「PHPでは無理だから止めろ、どうせNodeを使うことになるぞ」と避難轟々だったのも分かります。
この状況でフレームワークを使っていること自体が結構信じがたいです。
とはいえ今回は共用鯖等超軽量環境向けの為、NodeやGoは選択出来ず、PHPしかないのですが。
(参考)
http://postd.cc/websocket-shootout/ 別件ですが、CSRF脆弱性対策について、
これは単発のリンクを踏んだ(表示した)時用の対策であって、
ガチでのクライアントスクリプト等による攻撃向けではない、という事で合っていますか?
例えば、あるページを表示し、そこのJavaScriptが実行されるなら、
ajaxでhtmlを取得し、CSRFトークンを取得して、
掲示板にその人が書き込んだように見せかけることは簡単に出来ますが。
>>693 お前さんが何をしたいのか分からんし衝撃受けるのも勝手だが, クライアントサイドの常識をサーバサイドに持ち込むな
PHPに限らずRubyだろうがPythonだろうが何も変わらん
NodeやGoや更に言えばC/C++でサーバ作るというのは考えられるがメンテコストが膨らむしデプロイも面倒
その必要が本当にあるのかよく考えろ
> CSRF
Same Origin Policy
>>694 > PHPに限らずRubyだろうがPythonだろうが何も変わらん
いや多分PHP特有ですよ。RubyやPythonは自前で鯖起動しますので。
Railsチラ見しましたがそんな感じです。
https://railsguides.jp/getting_started.html ただ現実的にRubyやPythonは超軽量環境でも使えるのでRailsは選択肢になりますね。
とはいえPHPでもopcacheでほぼ問題ないはずですが。
まあとにかく今は味見中です。
作ろうとしているのは掲示板アプリで、GoやNodeの高性能版はOSSで既にあります。
もちろんPHP版も既にあるのですが、こちらも大体高性能化を目指しているので、
超軽量環境向けの廉価版を作ってみようかと。
AGPLv3で公開する予定ですので、興味があればどうぞ。
https://meguca.org/g/2724701 >>695 Webrickのこと言ってんのか?
テストはともかく実用環境でWebrickなんか使わねぇよ
実環境ならUnicorn, PumaとかPassengerがアプリケーションサーバだよ
遅い早いって2ch読み書きするのをストレスに感じないのであれば杞憂でしょう
ボトルネックになる部分はPHPの機構なんかよりもネットワーク間の問題のほうが大きいわけで
自分もリクエストのたびにこの巨大なフレームワークを読むのか?
とひるんだ時がありましたが
そこは実行コードをキャッシュする仕組みでカバーできるんですね
というか今の人はスタートがnode.jsとかなんだなーという驚きがあります
別にサクラはすごくないだろ
この手の方法はわりとどのレンサバでもできる
>>698 メモリを犠牲にして専用のアプリケーションサーバとそれ専用のフレームワークを作るのは
非常に面倒だけど別に難しいことじゃないのでPHPで作ってもいいのよ
質問です。PHPとSQLite3共に初心者です。
PHP+SQLite3でatomic counterが欲しいのですが、変更前の値が上手く取れません。
(unique保証が必要です)
散々ググって試行錯誤もしたのですが、上手くいきません。もしかして綺麗には無理ですか?
$sql = "BEGIN;";
$sql .= "SELECT count FROM counters WHERE id = 'post';";
$sql .= "UPDATE counters SET count = count+1 WHERE id = 'post';";
$sql .= "COMMIT;";
// $result = $db->exec($sql); // インクリメントされるが肝心の値が取れない
$result = $db->querySingle($sql); // なぜかNULLが入っており、インクリメントされない
// $result = $db->query($sql); // その後で fetchArray(): Unable to execute statement: cannot start a transaction within a transaction と出てインクリメントされない
var_dump($result);
なお奇特な方のためのDB設定用コードは以下です。
$db->query('CREATE TABLE counters (id TEXT PRIMARY KEY, count INTEGER)');
$db->query('INSERT INTO counters VALUES ("post", 0)');
atomic自体はUPDATEだけで保証されているのですが、変更前の値をuniqueに掴みたいのです。
用途は例えば掲示板で、自分の投稿が何番か知りたい、とかです。
BEGIN/COMMITでくくらず別々にした場合はunique保証が出来ないのでNGです。
>>705 1回のクエリで実行しようとしたらそらそうなるでしょ
あと一意性を保証したいならトランザクション分離レベルをRepeatable Read相当(SQLiteではIMMEDIATEだったっけ)にする必要がある
>>695みたいなPHPのコストについての話が出る度に思うが
こういう人って今までどの程度の規模のサービスを扱った事があるんだろ?
10年ぐらい前に俺が個人の趣味の延長で開発してaspとして金取ってたサービス
800万PV前後/日程度だったが
当時のPHP4系・MySQL3系・Apach1系の組み合わせのサーバー1台(DBすら分けてない)で運用できてた
レンタル費用をケチろうと思ったんだろう
貸出先が業者にまんまUIパクったようなものを数百万で作らせたら
全然PV裁けなくなって業者に文句言ったら
捌けるようになるまでサーバーを増やせと言われたという笑い話
800万PVなんてここのプロ様に比べたらレベルが低すぎるだろうから
最低1億PV/日ぐらいは想定してるんだろうなきっと
>>709 UIまんまパクったものを業者に作らせてると知った時に
そっちへサービス切り替えた瞬間に全部停止する事にしたから当然今はやってない
当時は他でネタ扱いされる程に儲けてたし
ちなみに何故それを知ったかというとその業者の開発者の内の1名から
技術的な質問をされたから
当然教えるわけないというか「コイツ頭おかしいんじゃね?」と思った思い出
>>708 今はそうだろうね
当時のこの話の場合、結局パクったシステムのサーバー運用コストの方が高くなったという笑い話
PHPでHTMLをパースして、
JavaScriptのquerySelectorみたいなもので要素を選択したいのですが
そういうライブラリみたいなものありますか?
>>712 自分でしこしこ書いてたんですが、もうあったんですね
この数日の努力とはなんだったのか・・。
でもありがとうございます
>>680の件ですが
http://phpfiddle.org/ を見つけました
関数の補完があるのが良さそうです
JavaScriptのプレイグラウンドはcdnからライブラリを読み込めますが
PHPのプレイグラウンドでライブラリを読めるものはないのでしょうか?
というかプレイグラウンドなのにライブラリ読み込めないって
全然遊べないですよね・・
>>706 少し紛らわしかったので補足します。
705のコードはSQLite3では意図したようには動きません。
ただしMySQL等他DBなら動くようです。(FOR UPDATEはSQLite3ではエラー)
https://dba.stackexchange.com/questions/61603/how-to-query-and-increase-a-value-counter-in-a-thread-safe-way-avoid-race-co 或いは以下の書き方も出来るようです。
$sql .= "UPDATE counters SET count = (@cur_value := count)+1 WHERE id = 'post';";
$sql .= "SELECT @cur_value;";
http://www.sqlines.com/mysql/how-to/select-update-single-statement-race-condition 問題はSQLite3ではこれらが出来ないことです。
ググル限り、UPDATEとINSERTの戻り値はAndroidでは取れており、
http://naichilab.blogspot.jp/2013/06/sqliteinsertautoincrement.html http://android.roof-balcony.com/shori/strage/insert/ これらはPHPでは SQLite3::changes SQLite3::lastInsertRowID であり、
rowID===INTEGER PRIMARY KEY なので、INSERTして取る方法でとりあえず回避しました。
https://www.dbonline.jp/sqlite/table/index8.html http://www.sqlite.org/autoinc.html 以下コードになります。
$sql .= "BEGIN EXCLUSIVE;";
$sql .= "INSERT INTO logs VALUES ((SELECT count FROM counters WHERE id = 'post'), date('now'), '$data');";
$sql .= "UPDATE counters SET count = count+1 WHERE id = 'post';";
$sql .= "COMMIT;";
$result = $db->exec($sql);
var_dump($db->lastInsertRowID());
カウンタに対して2回クエリしているのが無駄なんですが、何とかなりませんかね?
(とはいえこちらは我慢できる範囲ですが)
なおスレ毎にtableを分ける予定ですのでAUTOINCREMENTには出来ません。
次の質問です。
PHPの出力の終了を宣言することは出来ますか?
(そこで一旦通信を終了させ、その後は(ユーザから見て)バックグラウンド的に処理する)
ob_end_clean()はバッファのオフであって終了宣言ではないように見えます。
register_shutdown_function でリクエストの一部にはならない版が欲しいのです。
具体的には、PVの話が出てきて、それもいいなと思ってRead側にもカウンタをつけたものの、
Read/Writeで100倍くらい違うのでこの処理を分けたいのです。
・マルチスレッド(pThread) ← インストール必要
・非同期 ← フレームワーク必須
のため、
・</html>送信後はユーザー側には見えなくなるのでここでやらせる
という作戦を考えましたが、見た目それようの関数がなさそうです。
詳細は後述しますが、これが出来ればユーザ側レスポンスが0.2秒ほど早くなります。
或いはReadに関してはApacheのログをcron等で処理させる方がいいのでしょうか?
ちなみに速度ですが、もう既に遅いです。
XAMPPのローカル環境ですが、純粋にReadだけなら100pv/s程度で、
PVカウンタをDBに持たせるとそこに書き込みが行われ、2pv/s程度まで落ちます。
投稿ならこの倍遅く、1pv/sec程度になります。
まだ味見程度で、全部で100行くらいしか実行してないんですけどね。DBもスカスカですし。
8Mpv/day=100pv/sというのは、ちょっと言い過ぎでは?
或いは304にするかCloudFlare等活用しないと厳しいと思われます。
8ch.netはvichan(PHP+MariaDB)で40kposts/day=0.46posts/sを処理できませんでしたし、
桁はこれで合っていると思います。
だからってGoやNodeがどれほど速いのかは知りません。
(なお上記はスループットではなくレイテンシからの算出なので、実際はこれより早いはずですが)
なお実はBBx規制されており、代行してもらってます。
あまり面倒をかけるのも悪いので、以下に来てくれれば歓迎します。
https://meguca.org/g/2746787 >>713の件ですが
動作を確かめていますが、
phpquery、jqueryのセレクタが全部動いて素晴らしいですね
>>718 どんなマシン使ってるか知らんし、どれくらい書き込んでるし分からんが、いくら何でも遅すぎる
根本的になにかが間違ってると思うよ
8Mpv/day=100pv/sが言い過ぎってさ…
実際に10年前に今より貧弱な環境で稼働させて
aspとして金を稼いでたサービスなんだけど(MAXで1000万/日超えた日もあった)
PHP4だったというのもあるけどさ
オブジェクト指向なんて全く理解してなかったしフレームワークも使ってない
クラス1個も使わずにfunctionとヒアドキュメントの組み合わせ
名前空間なんてものも当然なかった
DBへのアクセスが極力発生しないようにはしてたけど俺のレベルは糞低いぞ
サーバーのログはテキストでも壊れない…って事は全部テキストキャッシュにしてそれを読めばいい!と何でもテキストにしてたw
頭の悪い俺なりの発想
昔こんな人と仕事をした事がある
色んな言語やデザインパターンを熟知してて
PHPも「これぞオブジェクト指向だ」と唸る程に素晴らしいコードを書ける
めちゃくちゃ頭が良いのが少し話すだけで分かるような人だった(後から知ったが東大卒だった)
でもその人が作ったサービスは激重で運用できなかった
俺は技術もないし頭が悪いからその人の何が悪いかは分からなかったけどw
お前らすごいね
実行レベル?イベントモデル?
pThreadだのGoだのNode.jsだのCloudFlareだの
俺には全然分からんわw
それでどんなサービスができるの?何人ぐらいに使ってもらってどれくらい捌けるの?
って事にしか興味がない
だってさ、使う人にとっては何の言語で書いてるとか関係ないじゃん
これだからPHPerは…って言われるんだろうけどこれでも金はそこそこ自慢できるぐらいは稼いできたからなぁ…
PHPもwebrickやnode.jsみたいに
それ自体でサーバになればテストに便利なのに
と思って検索したら標準でビルトインウェブサーバーっていうのがあったんですね
君は知らなかったかもしれないがそれ標準で組み込まれてもう5年半なんだ
長い間情報収集を怠っていたので
世の中想像以上に便利になっててびっくりします
>>721 こちらは桁が分かってないので助かります。
マシンは2007年製のポンコツで、書き込みは数文字だけですね。
レイテンシからスループットへの換算はやはり無理があるとして、
レイテンシだけにしても遅いので、問題もあるのだとは思います。(外部サイトの方が速い)
http://www.techempower.com/benchmarks/#section=data-r4&hw=ph&test=db
>>722-723 opcacheの無い状態だと、コードを美しく整えれば整えるほど遅くなるから、
それを最初に確認したのです。
>>691 君が書いたコードは細切れのバラバラで、
結果的に使う部分だけ走行するから速かったのでしょう。
それの方がよければそうすればいいだけです。
> 全部テキストキャッシュ
結果的に静的ファイルでキャッシュが効いたということでしょう。
今も同じ問題がCloudFlareにもあります。
> って事にしか興味がない
結果指向なのは正しいと思いますよ。
プログラミングはあくまで手段であり、目的ではないので。
特にネット上だと本末転倒になっている人も散見されます。
全く考えないのも問題ですが、考えすぎて手が止まっているのも問題です。
なおPHPerは最も馬鹿にされているらしいですが、JavaScripterよりマシな気はしますよ。
そしてデザインパターン/言語コレクターは使い物にならないと個人的には思います。
次の質問です。
以下環境でtidewaysが動作している人は居ますか?
A. PHP7.1, Win32, x86
B. PHP7.1, Win32, x64
C. PHP7.1, Linux on VM (つかPHPerの標準環境ってこれ?)
または
D. tidewaysのWindows用ビルドに成功した人、または挑戦する気がある人
こちらはA環境で入れてはみたものの、上手く動きません。
(ライセンス無し、XHPROFの代用での使用)
反応はしており、walltimeが 0, -2,147,483,648, -4,294,967,296 なので、31bitずれています。
おそらくHPETの問題で、以下の
https://github.com/tideways/php-profiler-extension/blob/master/tideways.c#L3308-L3336 のところを修正すれば動く可能性があります。
ただこれはマシンにもよるし、ビルドは嵌る可能性が高い為、
VM等含めて動いている人が居るのであれば動くマシンを探し、駄目なら諦めかと。
誰かビルドに挑戦するのであれば協力はします。
なおビルドオプションは以下が参考になります。
https://ci.appveyor.com/project/tideways/php-profiler-extension/build/4.0.4.215/job/kmxa1he0cjomvjpr 或いは他プロファイラーでいいのがありますか?
> プログラミングはあくまで手段であり、目的ではないので。
> 特にネット上だと本末転倒になっている人も散見されます。
> 全く考えないのも問題ですが、考えすぎて手が止まっているのも問題です。
自己紹介乙
Windows CLIアプリで、EMAILなんかのJIS(ISO-2022-JP)文字コードのファイルを、
読み込んで変換して表示することは出来るのですが、
PHP自体をJISにして、そのPHPに書かれている日本語をechoすると、
undifined variable $Bのようなnoticeが出ます。
もちろんちゃんとコードページにあった文字コード(cp932)に変換はしているのですが、
変換以前に日本語が変数と認識されてしまうようで、うまくいきません。
PHPをJISで保存するなんてことは普通しませんが、
JISでPHPを保存した場合でも、Windows CLIでうまく動作させる方法はありますか?
http://tsuttayo.jpn.org/bbs/read.php?FID=2&TID=519 このような記事を見つけて、書かれてる設定を加えてみたのですが、エラーは消えませんでした。
PHPをJISで実行しなければいけない理由は何ですか?
>>732 もし数行で対処出来るようなら取り入れようという感じのもので、
出来ないなら出来ないで構わないのですが、
JISで上書きしなおされるというイレギュラーに対処するためです。
PHPで作った自作のフォームに書き込みがなされると
メールで通知してくれるようにしている。
鯖の移転を考えてるんだけど(具体的にはByetという海外無料鯖)
あいにく候補の移転先はsendmailに非対応だったりする
(スパムメール対策だとか)
こういうときってどうやったらフォームへの書き込みを自分宛に
通知させることができるかな?
>>733 PHPCSに掛けよう
大抵のルールセットはソースがUTF-8以外で書かれていればエラー扱いにしてくれる
internal_encodingの問題じゃないかとは思うが, 不正な文字コードで保存された場合にはリポジトリにpushされる時点でエラー通知が飛ぶようにするべきだな
PHPとGoって何が違うの?LIGが自社サービス開発にGo言語を採用したお話
https://liginc.co.jp/284306 >Go言語がPHP 7の30倍、PHP 5.6と比べるとなんと82倍にも及ぶスピード
こんな記事を見つけました
OPcacheなどを使った場合と比べてどうなのでしょうか?
自分の考えるPHPの魅力は、
Javaからパクったオブジェクト指向、
標準の関数でウェブやデータベースアクセスが色々できて面倒くさくない、
といったものがありますが、
Goのようなモダン言語ならそのあたりもクリアしてるんじゃないかと思います
どうなのでしょうか?
>>734 このbyetってところいいですね
cronも使えるし
>>738 うん、いいところだな、と思ったら肝心のsendmailが動いて無くてな・・・
フォームに書き込みがあるとリアルタイムでメールで通知してくれるプログラムを
PHPで組んでいたんだが、さてどうしたものか・・・
例えばプロバイダ等のメールサーバを使えばいいんじゃないか?
もしくはAWSのSEDとかも少量なら無料。
>>740 PHP(しかも管理人でも無い末端のユーザーに)からGmailのSMTPサーバー利用できるの?
byetでRSSの出力をしようとしていたのですが、どうもうまくいかないので
調べていたのですが
byetに置かれたファイルを他のサーバから読むと、
This site requires Javascript to work, please enable Javascript in your browser
or use a browser with Javascript support
みたいなページに変わることに気づきました
ブラウザ以外のユーザエージェントから読まれることを禁じているようですね
やはり無料のサーバは何かしらあるのですね
ブラウザからPHPも編集できて、これこそプレイグラウンドやんと思ったのですが・・
>>741 出来ない理由がないでしょ?
sendmailにこだわるんだったら話は別だけど
>>744 今までmail()を使ってメールを送信していたんだけど
この関数使ってsendmail以外を選ぶことって可能?
>>735 面白そうなものを紹介していただき、どうもありがとうございます。
早速導入して検証してみようと思います。
環境で詰まったというわけでなくプログラミングを勉強してる時に気になったことがあるのでテンプレ無しですがよろしくお願いします
インターフェースがクラスの設計書っていうのは説明読んでて理解出来たんだけど、例えば問い合わせインターフェースから最終的に問い合わせA,B,C,Dのクラスを作る前提で各クラスにはインターフェースで定義したメソッド1,2,3があるとします
メソッド2,3はクラスによって処理は違うけどメソッド1は処理が同じという場合はどう設計するのが良いのでしょうか?
共通の処理がなければ各クラス共にインターフェースを継承して作ればいいと思ったのですが、共通の処理がある場合まず問い合わせのベースとなるクラスを作ってそれを継承して各クラスを作るのが正解?
>>748 もう少し本読み進めてから質問すればよかった・・・
ありがとうございます!
phpDocumentorの書き方ですが
クラスや関数や変数宣言ではない部分に書くコメントの場合でも
/**
*/
という記法で書くのでしょうか?
それを元にドキュメントを作るのがphpDocumentorの目的ですが
インターフェイスと関わらない部分のコメントはドキュメントに載らないので、
この記法で書く必要はない気もしますが
コメントの記法を揃えないと、それはそれで気持ち悪いです
>>745 mailだったら何もしなくてもメールサーバー設定すりゃいいだろ
PHPのマニュアルにそのままgmailの送信サンプルあるのに何が不満なんだ?
あまり無料鯖は使わないほうだが規制にひっかかったことないぞ
素直にswiftmailerとか使うのが賢いと思うの
PHPのバッチプログラムをcronで実行させた時に
期待した通りに動きませんでした
調べたらcron時はカレントディレクトリが
スクリプトのあるディレクトリではなく実行ユーザのホームディレクトリになるので
ファイルが思わぬ場所に作成されていたのでした
ファイルアクセスは基本的に絶対パスでやるべきなのですね
ですが、include_onceは相対パスで書いていたのに正常に動作していました
絶対パスで書く方が安心できるとは思いますが、
includeの場合は気にしなくていいのでしょうか?
>>755 データ展開を考えると、相対パスの方が便利だ。絶対パスがコロコロ変化する一方で、他方で相対パスが変化しないなら、相対パスの方がデプロイコストが低くなる。
絶対パスを要求する場所では絶対パスを使う。相対パスを使ってもパスのリンケージが壊れない場所では相対パスを使う。
>>754 > 素直にswiftmailerとか使うのが賢いと思うの
swifmailer調べてみた、インストール作業が必要なのね
レンタルサーバーだからインストール作業はちょっと・・・
代わりにPhpmailerってのが使えるみたい。これはファイル置くだけでいいっぽいから。
>>753 > PHPのマニュアルにそのままgmailの送信サンプルあるのに何が不満なんだ?
これのことかな?
Byetってレンサバだからsendmail.iniやphp.iniの改変は不可能なんだわ(´・ω・`)
http://php.net/manual/ja/function.mail.php Changes required in sendmail.ini
smtp_server=smtp.gmail.com
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log
[email protected] auth_password=your-gmail-password
[email protected] Changes required in php.ini
SMTP=smtp.gmail.com
smtp_port=587
sendmail_from =
[email protected] sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
;sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"
絶対パスと言ってもベタ書きではなく__DIR__を使って
そのファイル基準の絶対パスを実行のたびに作るやり方なら
ファイルの場所が変わっても問題は起きにくいのでは?
でもたしかに絶対に絶対パスを使った方がいい、というわけでもありませんね
ありがとうございました
>>761 __DIR__ あたりで絶対パス取って
chdir()でカレントディレクトリはここだと決めて
それから後は全部相対パスを使うようにすればいい
そうすれば
>>755で書いてるようなミスは絶対に起こらないし
テスト環境と本番環境の差異も簡単に吸収できる
あとライブラリの読み込みはなるべくオートローダーを使った方がいい
>>759 根本的に勘違いしてるっぽいし
あなたにレス付けてる人にも色々と問題があるので
今まで付いたレスは全部忘れた方がいい
まず、メールを送る方法は大雑把に2種類ある
1.自分のサーバーのMTAから送る方法
2.外部のSMTPサーバーを使って送る方法
あなたは今まで1の方法で送っていたが、
移転先では1の方法は使えないので2で送ると良い
例えば何らかのメールソフトを送ってメールを送ってると思うが、
それは2の方法なわけ(SMTPサーバーを設定するところがあるよね?)
だからPHPでも同じように2の方法で送れば良いだけ
お手軽なのはあなたも書いてるPHPMailer
WordPressなんかでも実績のあるライブラリで
メールソフトにSMTPサーバーを設定するのと同じ感覚で初心者にも簡単に使える
稀に脆弱性も見つかってるが、あなたの用途にはピッタリの筈
蛇足だが今時sendmailを使ってるところなんてまずない
PostfixあたりのMTAがsendmailと互換性があるように動いてるだけ
×何らかのメールソフトを送ってメールを送ってると思う
○何らかのメールソフトを「使って」メールを送ってると思う
訂正のついでに、ややトリッキーな手段としては、
A.MTAが使えるサーバーにおいた send.php
B.MTAが使えないサーバーおいた put.php
put.phpからsend.phpへ何らかの手段で送信メールの内容を送って(練習なら別にHTTP POSTとかでいい)、
send.phpを使ってメールを送るという手段なんかもある
APIみたいな使い方やね
レンサバのlocal mtaが使えないような環境のことで質問されてるのに
php.ini編集してmail()関数で送れといってみたり(つか今時mail()関数でメール送るやつなんかいねーよw)
composer使えといってみたり(composerと書きたかっただけだろw)
別の質問で相対パスか絶対パスかとかさ(てかnamespaceとオートローダー使えw)
色々酷すぎるとおもってレスしようとしたらほとんど全部書かれていたでござる
使えないSEや仕事の遅いPGとかに多い
たったそれだけの事に何故わざわざそんな事をやるわけ?と問いただすと
結局は知識や経験不足で特定の方法しか知らないのが理由
色んな方法を知った上で相手に合わせた方法を提案するのがまともな人
SMTP使ってメールを送れば良いだけの話なのに
いやいや流石にそれは待てと長文も書きたくなるw
ITベンダは複数の選択肢なんて用意しないよ
社内に事例がないことはやらない
>>762 カレントディレクトリを早い時点で設定していても
その後ライブラリの中で再設定されない保証もないのでは?
もちろん、そんなことするのはライブラリとして駄目ですが、
可能性としてないわけではありません
>>763 丁寧なレスありがとうm(_ _)m
おかげさまで安心してPHPMailer使えそう
ただ一点、SMTPサーバーのパスワードを平文で保存しないといけないのが気になるけど
ファイルのアクセス制御をしっかりかければ第三者から見られるわけでも無いし
レンタルサーバーの管理人からは見られちゃうけどそこは管理人を信用することにしますノシ
そりゃ手でも入れられるけどPHPMailerにせよSwiftMailerにせよcomposerの方が楽じゃん
グローバルに入ってなくてもphpコマンドさえ叩ければ使えるし最悪ローカルで操作してvendorごとアップロードもまぁ出来るしな
やっぱり共有フォルダにデータ書き込むのは無理?
phpを対話ログイン可能なユーザーで実行するしかない?
>>770 そんな事はたぶんみんな分かってるよw
ITベンダ()とかいい出しちゃってる人までいるしもういいよw
>>768 ただのヘリクツだな
それを言い出すとオートローダーにしたって
元の定義を上書きするような挙動を後付で定義して
めちゃくちゃにすることだってできる場合もあるわけでして
それよりPHPerはもうちょい鯖の知識を付けた方がいい
そもそもPHPが何のユーザーでどういう権限で動いてるのか分かってたら
cronでミスなんかしないんだよね
>>768 あと元のレスの
> include_onceは相対パスで書いていたのに正常に動作
に誰も答えてないみだから書くけど
phpinfo()でいいからinclude_path確認してみ
たぶんそっちから読んでたんでしょ
includeのPHPマニュアル読むといいかもね
なのでinclude_pathを変えるなんて方法もないわけじゃないけど
普通はやらない
>>769 > SMTPサーバーのパスワードを平文で保存しないといけないのが気になる
色々方法はあるけど
1.SMTPサーバーの設定を配列とかにしとく
2.1にserialize()かけて文字列にする
3.2に可逆式の暗号化をかける
4.どこか適当な場所に保存
設定を読み込む時は4⇒1の順に逆の事をすればいいだけ
これだと数行で書けそうだし楽かも
さらに言えばgmailなんて無料でいくらでもアカウント作れるので
新しく捨てアカ作ってそのID/PASSを使えばいいw
>>775 dd
ちゃんと暗号化のやり方ってあるのね
ありがとうノシ
なんか自宅にテスト用のCentOSマシン欲しくならね?
item(0)->length; //itemは配列としてitem[0]のstrlen
item->length; //itemは配列としてcount(item)のような感じ
プロパティの部分はメソッドでもいいですが
こういうのってどうやって実装するんですか?
$thisを返すとメソッドチェーンが出来るのはわかるのですが
$this配列にしないと返せないしそうするとitem(0)[0]みたいな参照になってしまって
カッコ悪いしそんな表記は見たこともないので
>>777 一人でやるならDocker使ってCentOSイメージ使ってコンテナ立てるのが一番楽で早くて手軽だ
VirtualBoxとかVagrantの時代は過ぎた
curlにオブジェクト指向のインターフェイスはないのだろうと思って調べていて
CURLFileというのを見つけたのですが、何か思っていたのと違います
普通curlへのアクセス自体をオブジェクト指向化しますよね?
http://php.net/manual/ja/curlfile.construct.php を見ると、
オブジェクトを使って手続き型の処理をしていてびびりました
どうなっているのでしょうか?
無名関数のuseに配列の要素を渡したいんですがuse($hoge['piyo'])と書くとエラーになります
一旦別の変数に代入するか配列ごと渡さないとダメですかね?
CURLOPT_RETURNTRANSFER
をtrueにしたら結果が文字列で返ってくる→分かる
falseにしたら結果が標準出力に出力される→は?
curl実行の際の出力を抑制するためにはtrueにするのが必須になりますが
結果取得のためのtrueなのか出力抑制のためのtrueなのかがはっきりせず、
イケてないと言わざるを得ません
「標準関数なのだから相当の試行錯誤の結果作られているのだろう」
という予想がPHPの場合は通用しませんね?
>>783 そのまま$hogeで渡して中で展開するか、別の変数に入れるか
>>784 通用しない
>>786 特に意味がない名前を付けたものだ。名前の意味は気にしないでいい。ただ名前は他と区別するためにある。
>>791 警告とエラーの違いはわかるか? テストでは警告はすべて出力させる。
PHP7ではassertが使えるので、活用するように。
ちなみにPHPのIDEはPhpStormがオススメだ。
C/C++などでも一般に言えることだが、IDEのデバッグ機能はユーザーによって実行を制御したり、変数の中身を確認できる。例えば、指定した行で実行を止めたり、少しずつ実行させたりできる。
file_get_contentsを何回かやるので、関数化しました。
header部分も欲しいので、$http_response_headerも一緒にreturnするようにしたのですが、
関数化前と違うものが返ってくるようになりました。
キャッシュか何か残ってるのでしょうか?何が原因でしょう?
Set-Cookieヘッダを使うので、返ってくるものが違って挙動がうまくいかなくなって困ってます。
ベタ書きすればうまく動作するのですが、コードがどうしても長くなって読みづらくて。
補足です。関数内で何回かfile_get_contentsをやってるわけではありません。
関数内では1回しか使っていません。
前後に共通のコードが書かれてたり、file_get_contentsのリクエストヘッダを少し変えてます。
ソースをアップするのが確実だけど、公開できないの?
>>797 配列です。
return [ $http_response_header, $body ];
おかしいのは、どうもSet-CookieのセッションIDが変わってしまってるのが原因のようです。
'http' => [
'header' => "Cookie: " . $this->getCookie($url) . "\r\n"
]
毎回このようなクッキー送るコンテキストは指定して、
file_get_contentsしてから、新規のクッキーは、
$this->setCookie($url, $http_response_header);
という具合にしてからreturnしています。
ベタ書きだとちゃんと動作します。
>>798
private function request($url, $context = null) {
$http_request_header = null;
if (!$context) {
$cookie = $this->getCookie($url);
$context = [
'http' => [
'method' => 'GET',
'protcol_version' => 1.1,
'ignore_errors' => true,
'header' => 'Host: ' . parse_url($url)['host'] . "\r\n",
'Cookie: ' . $cookie . "\r\n",
"Connection: close\r\n"
]
];
$body = file_get_contents($url, false, stream_context_create($context));
$this->setCookie($url, $http_response_header);
return [$http_response_header, $body];
}
こんな感じです。 インデント調整ミスってif文の閉じ消してしまいました。
private function request($url, $context = null) {
$http_request_header = null;
if (!$context) {
$cookie = $this->getCookie($url);
$context = [
'http' => [
'method' => 'GET',
'protcol_version' => 1.1,
'ignore_errors' => true,
'header' => 'Host: ' . parse_url($url)['host'] . "\r\n",
'Cookie: ' . $cookie . "\r\n",
"Connection: close\r\n"
]
];
}
$body = file_get_contents($url, false, stream_context_create($context));
$this->setCookie($url, $http_response_header);
return [$http_response_header, $body];
}
じゃなかった。カンマとピリオドを間違えている。文字列をつなげるのはピリオド。
>>802 レスありがとうございます。
そこはドット演算子で連結しているのでそれで問題ありません。
って・・・ドットじゃなくてカンマになってる。
お恥ずかしい。エラーにもならないので気づきませんでした。
どうもありがとうございます。無事動くようになりました。
IDEとxdebug使ってのデバッグがイマイチ使いこなせないわ
毎回設定してはめんどくさくてやめる
フレームワークとか作る仕事ならまだしも、
フレームワーク使ってつくるもんだと変数トレースしたいとか
ブレイクポイント使いたいとかあまりない気がしてて
複雑怪奇なシステムとか作るなら必要なんだろうが
iOSアプリとかのSwiftとかだとないと厳しいけどさ
モダンブラウザなら、ブラウザからでもデバッグできるし、色んな機能があるよ。
有料のPHPStormじゃなくて
無料のnetbeans使ってバグ全部取ったのに
ブラウザが真っ白のまま
もう何がなんだか・・・
>>809 netbeansでもxdebug使えるからトレースすりゃいいんじゃないの?
バグじゃなくてエラーを全部なくしただけでしょ?
本当のデバッグはそこがスタートだよ
どうせエラー表示したら500エラーが出てるよ
>>806 作り方がうまいからじゃねーの
まぁ、新規で使うことは少ないけど、改修や保守開発だと必須じゃね
>>809 あ、PHPってちゃんとログにエラー残してるからログも見ろよ
>>809 PHPのログ、フレームワークのログをみて
さらに自分でログ出力もしっかりしてな
>>806 フレームワークの時点でバグが潰されてるから
FW使う一方ならそんな
深いデバッグ要らないってのはあるな
>>812 保守だとプログラムを理解しづらいからね
Google Apps Scriptで
http://www.pre-practice.net/2017/10/line-bot_22.html?spref=tw
ここを参考にLINEBOTを作っていて、
文章中の特定の文字列に反応して返答するようにしたのですが、
(1)
else if (strpos(input_text, "寒い") !== false ) {
reply_text = "もう冬だね";
}
これを挿入しても反応してくれません。
その上、その下部に配置した
(2)
else {
reply_text = "答えられません";
}
が反応しなくなります。
(1)を削除すると、(2)は動きます。
(1)のstrposを正常に稼働させるには
何がいけないのでしょうか教えてください。
お願い致します。 >>817 訂正
(2)だからというわけではなく、
(1)があるとその下部のelseがすべて無効になります
削除すると、すべてのelseが反応するようになります。
データベースに記事のデータを無数に登録しておき、それをPHPで読み出して
ブログサイトのように表示するみたいなプログラムを作りたいのですが
そういうのってWebサイトではありがちな気がするのですが、何か簡単に実現できる
フレームワークやツール的なものってあるのでしょうか
>>817 Google Apps Scriptってよく知らんけどJavaScript互換じゃないの?
javaScriptがわからないのですが、
上記の>>817のソースをそっくりそのままコピペすると、正常に動くんです
else if (strpos(input_text, "寒い") !== false ) {
reply_text = "もう冬だね";
}
ほかは何もいじらずこれだけを挿入するのですが、「寒い」のメッセージに無反応なんです。 >>817質問変えます
http://www.pre-practice.net/2017/10/line-bot_22.html?spref=tw 上記URLのソースコードを使用して、
文章中に「寒い」が含まれるメッセージが来たら
「冬ですね」と返答する事ができるようにするにはどうしたらいいかお願いですから教えてください。
////////////////////////////
var input_text = e.message.text;
var reply_text = "";
if (input_text == "こんにちは") {
reply_text = "元気?";
}
/////////////////////////
現状は「こんにちは」のテキストに完全一致でしか「元気?」と出力しない状態です。
これを文章中に「こんにちは」が含まれる部分一致の場合に「元気?」と出力する方法教えてください。
連投すんません、このくだらない問題に2日無駄にしてつらいです。
>>822 strpos このメソッドって存在しますか?
文章中に"寒い"があるかどうかを判定するだけなら
input_text.match(/寒い/)
で判定出来るんじゃないかな?
>>823 えっと、間違ってたらごめんだけど、見た感じ
>>817はJavaScriptのコードで、strposはphpの関数だから、存在しない関数を使ってるせいでエラーになってるんじゃないかな
containsやindexOfみたいなJavaScriptの関数で判定してみたらどうでしょうか
>>824 >>825 ありがとうありがとうありがとうありがとう
ヒントくださって本当にありがとう
行き詰まって調べたくても何もなかったからどうにもできなかった
その二つ調べて頑張ります本当にありがとう
>>824
>>825
)、._人_人__,.イ.、._人_人_人
<´ indexOf使ったら動いたよ!! >
⌒ v'⌒ヽr -、_ ,r v'⌒ヽr ' ⌒
// // ///:: < _,ノ`' 、ヽ、_ ノ ;;;ヽ //
///// /:::: (y○')`ヽ) ( ´(y○') ;;| /
// //,|::: ( ( / ヽ) )+ あ ;| /
/ // |::: + ) )|~ ̄ ̄~.|( ( り ;;;|// ////
/// :|:: ( (||||! i: |||! !| |) ) が ;;;|// ///
////|:::: + U | |||| !! !!||| :U と ;;; ;;;| ///
////|::::: | |!!||l ll|| !! !!| | う ;;;;;;| ////
// / ヽ::::: | ! || | ||!!| ;;;;;;/// //
// // ゝ:::::::: : | `ー----−' |__//// >>828 良かったけど、そもそもなぜここで聞いたんだw
がんばってください
>>806 初心者がいきなりフレームワークという最近の傾向には俺も疑問
フレームワークを知らなかったからこそ、
初めてチーム組んでフレームワークを使った開発をした時に
その必要性や有難味を理解できるもんだ
酷いのになるとフレームワークの使い方しか知らなくて
全く潰しの効かない人とかいるしね
最近のruby界隈は結構酷いのがいる(もちろんPHPよりはましだがw)
>>782,784
どうなってる?と言われても知らんがなw
そう思うなら自分で作ればいいじゃない
curlの関数群にOOPなインターフェースを与えるのなんて簡単な事だろ
CURLFileがいけてない?
PHPのcurlなんて単なるlibcurlのうっすーいラッパーに過ぎないが
PHPのcurlは「@」の扱いからして全然いけてないよw
他人が設計したクラスに文句垂れるだけでろくにラッパークラスも作れない人なの?
違うでしょ?
他のレス見ても君はPHPには明らかに向いてない
君の性格にはPhthonがおすすめ
PHPなんてクソ言語はさっさと捨てて
ついでにこんな糞スレにも二度と戻って来ない方がいい
>>831 まあ、言いたいことは分かるよ
でも、たとえばAPCキャッシュがどういう理屈で速い機械語書き出してるか?
とかそういうことまで把握してるペチパーなんてほんの一握りだろう
それでもみんなAPCキャッシュ使ってるからな
どういう層までやりこんで覚えるかは時代の流れもあるんじゃないかなぁ
慢性的な技術者不足だし、この傾向はどんどん進んでいくと思うけどね
>>827 やはりワードプレスってそういうものなんですか
どうもです
>>835 ああOPcacheだっけか、今は
歳とって記憶がもうやばい
てか、APCにしろOPcacheにしろ、中間コードをキャッシュしてるだけで、そっこから実行コードにするのは別のとこでしょ?
初心者はフレームワークを使わないほうがいいんですか?
目的次第か
ただサイト作りたいだけなら使うべきだろうし、
PHPを極めたいとかプログラミングを楽しみたいとかなら
使わずに一から作る方がいいかもしんない
phpはテンプレート言語だからフレームワークなんて必要ないしね
車輪の再発明うんぬん言うのは、手っ取り早く目先の仕事を片付けたいなら
フレームワークのような既存コード使えって話であって、プログラマーとして
スキルを高めたいって話なら、例え誰かが既に実装してる機能であっても
自分で試行錯誤して作る経験をつむことに意味があるからね
この点については「プログラマが知るべき97のこと」にもあるね
ubuntuでphp7をpurgeしたんだけどphp -vでみたら
バージョンが7.0になったままなんだけど
php7がpurgeできてないってことですか?
97を8つくらいに絞ったら
個々のページが増えるだろ
つまり8章立ての本になる
20ページとかの本じゃ売れないからな
PHPはコメントに#も使えますが
シバンは<?phpより前に書かれるので、
これはシェルスクリプトやPerlのように「コメントだから無視されている」
というわけではないですよね?
何故PHPでもシバンが無視されるのでしょうか?
「一行目が#!から始まっていたら無視をする」
という処理を行っているのでしょうか
たしかにふるまいを見るとそうしているように見えますが、
ドキュメントのどこに書いていますか?
ファイル単体が純粋にPHPのコードで書かれていても
PHPはテンプレート言語でもあるのでHTMLとの境界を定めるために<?php開始タグが必要
これはCGIとして動作させるためにシバンを書く時も例外ではないので
PHPで標準出力を一時的にファイルに変えることは出来ますか?
スレ立てる時にワッチョイの指定で出来るけど、
そこまでやる必要があるのかな?
https://qiita.com/shinkuFencer/items/d7546c8cbf3bbe86dab8 file_get_contentsのタイムアウトを設定しても
何故か設定値の2倍の時間がタイムアウトまでの時間になる
という情報がネットにあります
これはstream_context_createで作成したストリームコンテキストを
fopenに渡した場合でも同じなのでしょうか?
サーバーサイドで、PHPがNode.jsより得意なことってなんでしょう?
サーバーサイド・クライアントサイドで共通の言語を使うという夢を捨てきれずも
とりあえずPHPに甘んじているところです
>>856 単に「試して終わり」の問題じゃないですから。
タイムアウトが2倍になるのがそもそも意味不明です
その意味不明の現象は今でも存在するのかとか
原因は分かったのか、そういう周辺の情報も知りたいので質問しました
>>857 デフォルトの関数が揃っていることでしょうか
PHPは十徳ナイフみたいなものです
つっこんだ使い方しようと思うといまいち使えないところも笑
>>858 タイムアウトが2倍になる理由を調べたいなら--enable-debug付けてコンパイルしたphpでgdbで調べるしかないんじゃないの?
>これはstream_context_createで作成したストリームコンテキストを
>fopenに渡した場合でも同じなのでしょうか?
file_get_contentsと同根の現象かは自分で試せば分かるよね
丸投げしないで試した上で質問してよ
file_get_contentsだとタイムアウトが2倍になるので
stream_context_createで作成したストリームコンテキストを
fopenに渡したどうなるか試してみたら2倍に(なりました|なりませんでした)
これはどうしてでしょうか?
なら答えたくなるのにな〜
>>860 既にやってる人がいるなら聞く方が早いですよね?
なんで車輪の再発明を強いるんですか?
>>859 なるほど、やはりPHPはWebに特化した言語だけに、汚らしいけど話が早い言語って
感じなんですかね、他と比べると
自分にとってはそれはけっこう魅力的かもしれません
サーバーサイドに労力使ってる場合じゃないって考えなので
しばらくはPHPで良い気がしてきました、どうもです
>>861 あなたの答えたい|答えたくないなんてどうでもいいんですよ
有能な人はしょうもない出し惜しみはしません
>>857 node.jsってwindowsで動かないじゃないか
元々MVCやWebフレームワークなんかの概念が薄かった時代に開発された
C言語用のWebフレームワークの前身みたいなもんで元々プログラム言語として開発されたものじゃない
他に飲まれるの嫌って発展優先させて作りなおすこともしなかったから
エイリアス作ったりJavaに似せたり文法的に扱いやすいものになったけど汚いもんになってしまった
省略可能な引数に後々問題が出てやっぱ省略だめ!って言いたくなるのは仕方ないとしても
歴史的理由を言い訳にしてるものはさっさと廃止すればいいのに
>>857 PHPは使うハードルが低いのがメリット
現にあなたが甘んじてるのが動かぬ証拠
Nodeはクラサバを共通化できても
導入のハードルが高い
そもそもJavaScriptが扱いにくい
ぶっちゃけJSの仕様も汚い
同じ汚いなら使いやすい方が良い
車輪の再発明をするな=「手を抜くこと」と勘違いしてるアホっているよな
Wikipediaにすら
> プログラマもしばしばその技術を深く理解して自身の技術を向上させるために敢えて「車輪の再発明」をすることもある
と書かれているのになぁ…
これじゃPHPer()と揶揄されるのも仕方ないわw
>>863 PHPは短時間で「とりあえず動きゃいい」って感じで書くのには良い言語だが
「正しく」書こうとすると、他言語の経験がないとかなり難易度が高い
例えばGETリクエストの値の取り方
例えばPDOでのDB接続
例えば正規表現
挙げればきりがないが、まともなコード載せてるページなんかほとんどないよ
知識がないと、うんこの海から金塊を探し出すぐらい難しい
ちなみに正規表現界隈では、PHP使いはもう正規表現をblogに書くな
なんて何年も前に言われてたし
今でもPHP使いが載せてる正規表現はレベルが低すぎて話にならない
とよく言われる
まぁでも「正しく」書く必要がないケースなら
結果を最短で出せる事もよくあるから書けたら便利よ
例えば手元でちゃちゃっとスクレイピング処理したい時とかね
下手すりゃ他言語の重いIDE起動してる時間でPHPなら結果まで出せる
>>868 いやJavaScriptの方がPHPよりだいぶマシ。
ここ3週間ほどPHPをいじってみたが、変な癖が付くかも、というのは分かる。
正規表現のスクリプトは基本コピペしかしたことないわ
エラー出たらまんま知恵袋に乗っけてベストアンサーをまた再コピペ
これで一度も困ったことない
今後もずっとこれで行くつもり
>>例えばPDOでのDB接続
確かによくわからんエラーばかり出る
>ここ3週間ほどPHPをいじってみたが、変な癖が付くかも、というのは分かる。
どういう変な癖?
結論としてはサーバーサイドはRubyとかJava使えってことなの?
>>864 有能な人でもこの書き込み見たあとに書き込むことはない
>>864 は、せめて自分が有能になってから発言すべきだったな。
>>876 小規模ならJavaよりPHPの方が手軽で使いやすい
スマホアプリから始めてる最近の連中には1つの言語でいいから楽かもしれないけど
Javaは時間的な開発コストがかかりすぎ
PHPがいいかといったらPythonとかと比べちゃうと良くないけども
サーバーサイドなら今のところGo言語が一番使い心地いい
でも最近Elixirが気になる
ワールドワイドウェブ←PHP。
業務システム←Java。
こういう使い分け。
作られた目的で使うのが楽。
PHPを勉強しちまった
Javaは勉強したくない・・・
Javaはガチガチすぎて自由度がないからな
コードは長ったらしいものが出来上がるし出来れば触れたくない
自由度高すぎでなんでも配列になりがちなPHPはコード汚くなりがちだけど個人の力量次第
簡単に始められるけど素人向けにみえて全然素人向けじゃないのがPHP
PythonはPHPerが次に学ぶには最適
オブジェクトと手続きが混在した同じようなパラダイムだからとっつきやすいだろう
Goは知らね 一度やろうとして入れたらアンチウイルスソフトが反応したから諦めた
同じことが出来るなら好き嫌いで選ぶのも良いのだが、JavaとPHPは明らかに対象が違う。
対象による分類でいえばPythonはJavaと同じグループに属するのではないか。
対象なんてPHPと比較してんだからWebアプリに決まってる
>>875 汚いコードを書く癖、だな。
というか仕様が汚いから、綺麗なコードを(上級者でも)書きにくい。
だからPHPには本質的に綺麗なコードがない。(はず。或いは他言語と比べて圧倒的に少ない)
この結果、PHPのみのPHPerは綺麗なコードを見たことがなく、何が綺麗なのか理解出来ない。
たぶんこれがPHPerが強烈に馬鹿にされる理由ではないかな。
JavaScriptの問題は局所的なので上級者なら回避出来るし、ちゃんと書けばかなり速く動く。
(実際は糞コードが蔓延しているが)
PHPの場合は上級者でも「これでどうしろと?」になってしまう。腕があっても発揮しようもない。
これが上級者が強烈にPHPを敵視する理由だろう。
逆に言えば、腕が悪くても(上級者に)置き去りにされないし、
仕様の洗練具合も「ちょっと調子に乗り始めた」中級者に成り立ての頃と合致しているから、
その辺の人達にとっては非常に心地いいはず。これが多数から支持されてる理由だろう。
人数でいえば必ず上級者<<<中級者<<<初心者だし。
例えば、Cの関数ポインタの型宣言とか、洗練されてはいるが洗練されすぎてて意味不明だ。
そこはGoでは反省して仕様としての統一性より可読性を取ったと公式に言われてる。
https://blog.golang.org/gos-declaration-syntax 従来はほぼ全ての言語が「上級者用」に出来てた。
ただ今はもう全員がプログラミングする時代だから、変わりつつあるって事だろう。
PHPはある意味「馬鹿に丁度いい頃合い」の仕様だから、人数だけで言えば支持されることになる。
とはいえ、綺麗なコードを書くことも、後からのメンテと実行性能を上げる手段でしかないから、
使い捨て主体で早くリリースすることが重要なWebの世界では必ずしも必要ではない。
それがいまだにPHPが盛んな理由だろう。
3位と4位の間に超えられない壁がある4位
https://japan.zdnet.com/article/35109803/ タイトルは嫌われてるって書いてるけど使いたくない言語が正しい
変態言語は上位になる
シンプルなPythonに比べて複雑なRubyが上位なのも納得
PHPはコミュニティベースの多数決意思決定がとてもダメに見える
良くも悪くも特にオープンソース開発では優しい独裁者は必要なんやなって
>>892 開発を早急に進めるには独裁的な方法は良いと思うけど
PHPの場合は、未だに5系を使ってるのが多いようで
あまり急ぐ必要性もないのかなとも思う。
>>891 上位の言語は
仕事で使わざるを得ない状況になって
嫌いになったんじゃないの
Clojureとか仕事で使わないだろ
5.x 系はもうセキュリティfixのみ。5.6以外は既にセキュリティ保守もされていない。
7.0も来月には保守に移行、とっとと、7..1系に移るべし。
http://php.net/supported-versions.php >>891 Haskellの嫌われぶりも相当だな
前後のC/C++やJavaに比べたら
使用者人口が圧倒的に少ないだろうに
>>891 いまいち見方がわからん
横の長さは何を表してるの?
webプログラマーの俺が思う、PHPの気に入らない点
関数の引数に法則性がない、せめてhaystackとneedleの順序ぐらいは統一してくれ
変数にグローバルスコープがない(いちいちオブジェクト化しないといけないのが鬱陶しい)
サーバーサイドだとPythonが今好まれてるってことなのか?
でもWebに特化してないし、作りやすいのかね
Pythonは機械学習で流行に乗ったけど
Webアプリは作りやすくない
PHPのようにサクっとはじめれないけど
用意するもの用意したらPHPより早く完成品出来上がるよ
まあぶっちゃけサーバサイドなんてなんでもいいんだけどね
Ruby on Railsに精通してるやつのWebアプリデプロイするまでの尋常じゃないスピードにビビる
RubyはぶっちゃけいかにRailsを使いこなせるかの言語だからな
>>852 IPがいる理由が謎
セキュリティ的に害悪でしかない
固定IPでアクセスしている奴がいるのか?
そちらの方がセキュリティ感覚がないんじゃ
IP表示なんてしたらスレ乱立するのは目に見えてるからなあ
ID出す出さないで長年揉めてたぐらいだし
IDがないと自演し放題で荒れるからな
レンサバとWebProgとかIDないけど
荒し簡単にNGできなくてイラつく
>>902 Pythonはプログラミングを初めてやる人にはいい言語
Web向けのフレームワークもいくつかある
PHPみたいに1つの事をやるのに複数のやり方がある言語は
とっつきやすいが学習にとってはデメリットも多い
言語なんか手段に過ぎないからな
近所のコンビニへ買い物いくのにF1カーに乗るアホはおらんだろ
特定の言語にケチ付ける人ってたぶん仕事やらせたら手が遅いんだろうなって思う
>>900 グローバルスコープはあるが使うわけがない
もしその理由が分からないなら相当ヤバいと思う
グローバルスコープ汚染しまくる言語って大昔のperlや
アホの書いたJavaScriptのイメージが強いが
どの言語出身?
久しぶりに紀伊國屋に行ったら
PHPとPythonの本棚におけるシェアが増えて、Rubyが減っていました
PHPの場所は一時はかなり減っていましたが、大分盛り返した様子です
Pythonの流行はあきらかに機械学習の興隆と連動しています
ウェブではまだまだPHPが存在感を発揮していくのでしょうか?
Pythonもしていますが、定数がなかったり、
オブジェクトのメソッドの第一引数がオブジェクト自身だったりと
いまいちモダンじゃないですよね
PHPは節操なく流行りを取り入れる姿勢なので、
モダン性が保たれているところはありますね
いやPythonの方がキレイな言語だろ
たしかにselfだらけなのは冗長だと思うが
プラグマティック
[形動]実利的。実際的。実用主義的。実利主義的。
Pythonもなんちゃってオブジェクト指向だからPHPといいお友達だよ
webプログラミングやるなら
一度はPHPを勉強して損はないと思う
JAVA、C#で徹底的に冗長性排除したのに
再び冗長性のあるプログラミング言語が興隆してくるあたり
人間の堕落さが垣間見れる
「太子。人間、孤独であるよりは悪とともにあったほうがよいとみえるな」
PHP以外の言語は、ある機能を使いたかった時に
この関数が含まれているパッケージは〜とか、
いちいち調べなきゃいけないのが面倒くさいと思っていましたが
パッケージをクラス、関数をメソッドくらいの感覚で考えたら
そんなに面倒くさくないと気づきました
PHPは自分さえしっかりしてれば(スキルがあれば)エレガントに安全に書ける言語だと思うよ
だから個人でWebやる場合、そういう自信があるなら有力な選択肢だと思う
ただ仕事などチームでやる場合、糞コード生産しそうな奴がまじってるとPHPは
選択したくないかも(必ずいる)
PHPは書くと楽な言語であって、読むのは最悪。他人が絡むから。
だから差が出ないようにコーディング規約とかあるんやで
年収500万でPHPのソースレビュー要員募集してるところもあるくらい
規約は徹底したほうがいい
規模でかいなら尚更
>>736の件ですが
なんとGoはオブジェクト指向言語じゃないと分かりました
あくまでモダンCであってモダン言語と呼ぶには苦しい感じがします
どっちゃもいけるC++やPHPみたいな言語が、適材適所で使えて超便利。
AWS Lambdaでネイティブサポートする言語に
PHPが入っていないのって何故でしょうか?
GoとRubyは次にサポートする言語の投票対象になってましたが
PHPは入ってませんでした
オブジェクト指向と関数型を両方できるのが今のモダン言語でしょう
関数型言語を学んだことないんだけど
学ぶとどんないいことがある?
・むやみやたらに変数に再代入しなくなる
・参照透過性や副作用に気をつけるようになる
・小さな汎用関数を組み合わせて目的の処理を作り上げるのが楽しい
・汎用とまでは言わなくとも関数内で無名関数作って処理分離させるのが楽しい
・楽しいだけじゃなくそれぞれが細かく独立してるので保守しやすい
・宣言的に書けるため見通しがスッキリする
・大抵の場合で関数呼び出しのオーバーヘッドを気にする必要がないことに気づく
・いまいち使い道のわからなかったarray_map, array_filter, array_reduceあたりを息を吐くように使うようになる
・ただし大量の配列をmapしてfilterしてってやるのは遅延評価じゃないPHPではオススメしない
手続き型より関数型に寄ってる言語は触った程度しか経験ないけど, 関数型のメリットは型システムとの関わりが強いことだと思ってる
この辺は上の宣言的に書けるとかその辺か
型無しラムダ?知らんな
あとPHPは型システムが極めて貧弱貧弱ゥなのがアレ
業務中に少し行き詰ったので質問。サーバーPCの環境はwin32でPHP5.6、XAMPP上で動いてる
これを同一ネットワーク内の別PCでアクセスして、サーバーPC上のファイルをデスクトップ上に受け取りたい
単純にcopy関数を使っただけだと、access deniedで怒られたので、サーバーPC上のディレクトリに権限を
与えてみたが、これも駄目
php.iniのallow_file_uploadedなんかはすべてonにしてるだけど、どうやったらアクセス制限で弾かれずに
複写できる?
>>942 コンテンツタイプを指定してストリームで受けとったら?
そのファイルはxlsファイルで何十もある。ただ、ダウンロードするだけならheader関数で制御すればいいんだけど、
エクセルマクロをダウンロードしてから、それを一通り走査して値を代入する(図表も入ってるからPHPExcelは使えない)
流れとしては
サーバーPC上で元ファイルを複製
↓
複製したファイルをローカル環境上に配置(Desktop/固定フォルダ/タイムスタンプ/hogehoge1.xls)
↓
必要数を配置したら、xlsmファイルをダウンロード
↓
xlsmファイル上のVBAマクロが動き、配置したxlsファイルに値を出力(図表が混じってるので、PHP_Excelが使えない)
こういう動きをさせたいので
>>943 ありがとう、ストリームについて調べてみる
サーバ側のアプリケーションを作りたいのかクライアント側のアプリケーションを作りたいのか両方なのか
更にクライアント側でVBAを動かす処理系はどうするのか(Excel起動するの?)とか
>>936 PHPは他言語の機能を積極的にパクってきましたが
PHPが他言語にパクられた機能というのは、特に思い当たりません
そういうところで軽視されがちなのは、
そんなPHPのオリジナリティのなさが原因ではないかと思います
当初ローカル環境だけで作ってたから、いざサーバーに載せ替えたときに、クライアント側で
ファイルの複製ができなくなったって所。ローカルだけだとPHPもVBAもちゃんと動いてたんだけど
Excelはクライアント側で起動させる
サーバサイドのコードもクライアントサイドのコードも書いて, どっちもローカルの環境では動いたけど
サーバサイドのコードを実環境にデプロイしたらサーバサイドのコードは正しく動くけどクライアントサイドのコードは正しく動かなかったってこと?
ローカルの環境の中に、仮想OSをインストールして、スコープやパーミッションの相違を見落とすのを防いでおくのが吉
うちの会社でもDockerやらAWSのサービス使って
Blue-Greenデプロイとかしたいけど
まだ手が出せてない
なんか難しそうだし
ローカルのPHP開発環境としてならDockerは使ってるんだが
去年秋にリリースしたサービスはDocker使ってるけどノントラブルだな
それほどアクセスないからってのもあるだろうが
質問です。
最新版のSQLiteを試してみたいのですが、やり方を知っている人は居ますか?
環境はPHP7.1.8+SQLite3.15.1(今年9月時点でのxampp最新版)で、
試しにSQLite3.21.0のDLLを公式からDLして差し替えてみましたが動作しませんでした。
他詳細を知りたければ以下で。
http://mevius.2ch.net/test/read.cgi/db/1345121656/646 XAMPPでのがしんどいよなぁ…
まさか開発用ってわけじゃなく勉強用だよね?
検証してくれる優しい人出るまで待つしかなさそう
>>957 いや、出来ない前提。というかしたくない。
自分でしないと駄目なのか?ググッたらそのまま使えるみたいな人も居たんだが。
https://www.dbonline.jp/sqliteinstall/install/index3.html なおSystem32に置いても駄目でした。
ちなみにxampp on Windowsね。(すまんこれを言い忘れていた、重要だったかも?)
ビルドするにしてもどうせVCだし、同じバイナリが出来るはずだから意味無いと思っている。
>>958 勉強用だけどAGPLv3でリリースするよ。それなりに動く物を作るつもり。
プログラミング初心者ではないから。
xamppってまずい?一番簡単だったからこれにしたが、
(というか最初はこれくらい簡単でないと無理)
今ならvirtualBoxとかに鞍替えできるけど、そっちの方がいい?
まあそもそもSQLiteのATTACHが異常に遅いのが問題で、
それが無ければ旧版で(つまりxamppで)問題なかったんだけどね。
XAMPP使わないからよく分からんのだけど, 同梱のphp_sqlite3.dllとかphp_pdo_sqlite3.dllのサイズを見る限りSQLite3は静的リンクされてるんじゃないのか?
ちゃんとDLLの中身見れば静的リンクされてるか動的リンクされてるかは分かるけど, 静的リンクされてるなら自分でリビルドが必要だよ
>>959 そのサイトで「使える」と言っているのは、PHPでSQLiteの利用が出来るというだけで、
実際にSQL書いていく時はファイルオープン、ファイルクローズなどやらないと行けないはず
その辺は必要箇所を見つけて自分で直さないと行けないのではないかな?
PHPでSQLを利用するサンプルを一度移植してみると分かると思う。
>>960 Goみたいなキチガイじゃなければ、静的リンクなんてありえないと思うが。
また、静的リンクだったら差し替えても反応するはずが無く、そのまま3.15.1がリンクされっぱなしになるはずだが、
phpinfoで見ると消えてしまう。だから反応はしている。つまり動的リンクのはず。
サイズはほぼ同じ。
3.15.1(859,648Bytes)
3.21.0(852,754Bytes)
なお俺が使っているのは32bit版。
>>961 既に言ったが俺はプログラミング初心者ではないからその辺は分かっているし、
もう既に動かしている。
なおそのサイトは結構いいと思うよ。SQLはそこで基礎を確認した。
静的ビルドじゃねぇな, リンクでもないし静的に組み込まれてる
>>964 違うぞ。てかお前動的リンクと静的リンクの違い分かってないだろ。
ソースがそこにある=パッケージ内でビルドされている、であって、動的/静的は関係ない。
自分でDLLを作るとき、プロジェクト内にソースは当然あるだろ。
こっちも調べた。DLLを直接確認したらget_module関数が無い。それでググったら以下が出た。
http://www.php-cpp.com/documentation/loading-extensions 要するに通常のDLLでは無く、Zendのラッパ(ではないが)が必要で、そこからアドオンとして組み込んでる。
だからphp.iniを見て動的に組み込む。
FireFoxとかのプラグインと同じ構造(のはず)
Zendからヘッダを入手してビルドするのは面倒なので、
誰か既にビルド済みなのを探しているのだが(これがwindowsの利点だし)、今のところない。
誰か発見したらよろしく。
なおReleaseNoteを見る限り、ATTACH自体はまだ枯れてないので可能性がある。
> 2. Allow ATTACH and DETACH commands to work inside of a transaction.
>
http://www.sqlite.org/releaselog/3_21_0.html ただまあそれ以前に、ATTACHの仕方によっては遅くならないようなので、それも確認中。
ちなみにバイナリはあった。
http://windows.php.net/qa/ そしてPHP7.1.12RC1のdllと差し替えたら反応はするのだがSQLite自体は3.15.1のまま。
おそらくPHP7.1系はSQLite3.15.1なのだろう。
ならばとPHP7.2.0RC6も試したが、
こちらはVC15のランタイムをインストールした際「再起動が必要」と出たが無視しているので結果は未定。
再起動無しの状態では使えない。(読みに行くがリンクできない関数があって落ちる)
理解してないのはお前だよ
php_sqlite3.dllやphp_pdo_sqlite.dllは実行時にPHPにロードされるいわゆるモジュールだが, こいつらとsqlite3.dllは同一じゃない
sqlite3.cのソースコードを使ってSQLiteはこれらのモジュールに「静的に」組み込まれている
sqlite3.dllならPHPから独立だろうがphp_sqlite3.dllはphp7ts.dllに依存しているからその辺で読めないんじゃないの
ちゃんとエラーログ見ればモジュール読めないってPHP Startup Error出てるだろうよ
>>967 > 実行時にPHPにロードされる
> 「静的に」
馬鹿乙。つかマジでもうちょっとちゃんと勉強しろ。
PHPerは馬鹿だとは聞いたが、なるほどこれでは馬鹿にされるだろうさ。
どっちにせよ、こんなことで時間潰れるの勿体ない
最初からVirtualBoxとかでやった方がいいと思うな
>>969 いや、virtualBoxの方がいいのか?
Unixにポーティングしたらそこで問題がー、って人も居るみたいだけど。
http://torhamzedd.halteria.com/2010/02/xamppwebvmplayer.html まあ言っていることはごもっともなんだが。xamppで実運用する可能性は皆無だし。
なおいろいろ試した結果、ATTACHの問題というよりは特性であり、
こちらのプログラムで改善/回避できそうな雰囲気なので、環境が悪いわけではなさそうだ。
まだ詳細を詰め切れていないが。
なおATTACHについては自己解決した。詳細は以下参照。
http://mevius.2ch.net/test/read.cgi/db/1345121656/647 これだと最新版で改善されている可能性もあり、試すべきだが、
再起動するのはかなり面倒なのでとりあえず放置する。(後日結果を報告するかも)
対応してくれた人はありがとう。
用途をみるに、sqliteを最新にする必要があるのか謎。
>>968 痛々しいわ
SQLite関数を使う上での依存関係は
PHPコア -> php_sqlite3モジュール -> SQLite3ライブラリ
なんだから,
PHPコア -> php_sqlite3モジュール : 実行時にphp.iniの設定を見てロード
php_sqlite3モジュール -> SQLite3ライブラリ : php_sqlite3モジュールのビルド時に静的に組み込み
で何も矛盾してない
最初から最後までSQLite3ライブラリの最新版を使いたいなら「php_sqlite3モジュールを新しいSQLite3ライブラリを使って再ビルドしろ」が結論
>>973 3.21.0で追加された、transaction内でのATTACH/DETACHがあれば、
http://mevius.2ch.net/test/read.cgi/db/1345121656/663 に書いたtempの手法が使えるようになる。
ただ、今は、それ以前に、file_put_contentsでarchive用のjsonファイルを静的に作成する方法を試している。
速度は10倍ほど出ている。(DBに書くと40-60msかかるが、ファイルなら3-4ms)
今は本当にこれでいけるか、こちらに一本化すべきかを考えているところ。
(archiveは動的側面が全くないはずなのでいけるはずだが、運用上問題がないか?)
>>974 > 痛々しいわ
お前がな。最近この手の馬鹿は増えたが。
まあ永久に無知なままでいろ。
>>975 誤解してるわけでもなさそうだしまぁいいや
実際ビルドし直さずに最新版使えるならそれがベストではあるしな
是非成功させて勉強させてくれ
php pdo mysql について質問です。
ローカルのxampp環境でinsert時にexceptionを吐いているのですが、サーバーのlinux環境ではexceptionを吐きません。
接続直後に
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
としているのですが、環境によってexceptionをthrowしない場合ってあるのでしょうか?
この問題は非常に質が悪く、$stmt->errorCode();で取得できませんし、$stmt->rowCount();で1が返ってきてしまいます。
エラーログには出力されているようです。
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'hogehoge' in ...
どうやったらexceptionをthrowしてくれるようにできるのでしょうか?
また、throwは諦める場合、エラーを検出したいのですがどうやったら良いでしょうか?
なんか分かった気がします。
prepare? execute? がエラーを throw していたのですが、
それらをコールしている関数の外で try catch していたので、そこまで到達していなかったようです。
php.ini の設定なんですかね?
とりあえず自己解決しました。
ありがとうございました。
解決したからいいけど、XAMPP環境での開発はお勧めできん
WindowsでもMacでもDocker使うなり仮想つかうなりで、
本番環境とほぼ同じ状態で開発しないと
PHPのバージョンや組み込まれてるライブラリ、php.iniもすべて合わせれば
そんなエラーで時間潰すこともまずなかろう
phpのフレームワークにララベル使おうかと思ってるんだけど、なんか他に良いフレームワークってあるの?
個人的にはLaravelが一番いいと思うよ
FuelPHPとかPhalconとか最近はあまり聞かなくなったな
>>979 XAMPP全く関係ないじゃん。ヴァカなの?
WindowsのファイルシステムのエンコードはUTF-16 らしいですが
scandirで取得したファイル名はUTF-8になっています
これはPHPが内部で変換してるのでしょうか?
Win10のコマンドラインからPHPを実行してUTF-8の文字列を表示すると
文字化けせずに表示されました
Win7以前はSJISに変換してから表示しないと化けたはずです
Win10のコマンドラインのエンコードはUTF-8になったのでしょうか?
だとすれば、コマンドライン=SJIS、を前提にして書かれたコードは
問題が出てきますよね
現に出ているから調べ始めたのですが・・
バッチファイルからUTF-8文字列を出力するとやはり化けたので
WindowsではなくPHP側の問題かと思って検索したらありました
Windows版 PHP 7.1 で日本語パス(パス文字列のエンコーディング)が
対応されることによる影響
https://qiita.com/algo13/items/2810aacef69d6fb8fd0f windows10が今手元にないからうまく答えれないけど、
コマンドラインでchcpってうってみて文字コード確認してみればいいんじゃない?
ありがとうございます
しっかり932って表示されました
>>982 はあ? あるじゃん
本番環境と開発環境の構成がずれててエラー起きてるんだから
自分もXAMPPを使っているのですが
MySQLのデフォルトがInnoDBになっていたのでそのまま使っていたのですが、
データベースが壊れました
innodb_force_recoveryオプションを使って修復してもまたすぐ壊れます
MyISAMの時はmyisamchkにかければそれで直っていたのに。
InnoDBは同時アクセス対策の機能が豊富ですが
同時アクセスがさほど想定されない場合は
シンプルで堅牢なMyISAMを使うべきなのでしょうか?
>さほど想定されない
dbの形式以前に、ロックをしない構文構造に問題があるのでは?
ロックですか
していませんでした
MyISAMの時と同じ書き方をしていました
InnoDBではそういうのがいるんですね
ありがとうございます
InnoDBが壊れるってそうそう起きないだろ
ロック云々の人為的ミスで壊れるなんて今はまずないと思うけど
そのXAMPPのMySQLのバージョンいくつか知らんが、
5.1とか使ってるなら5.7に上げるのがいいと思うが
MyISAMにするってのはかなりズレてると思うよ
-curl
lud20241207144717caこのスレへの固定リンク: http://5chb.net/r/tech/1489506082/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。
TOPへ TOPへ
全掲示板一覧 この掲示板へ 人気スレ |
Youtube 動画
>50
>100
>200
>300
>500
>1000枚
新着画像
↓「【PHP】下らねぇ質問はここに書き込みやがれ 8 [無断転載禁止]©2ch.net ->画像>4枚 」を見た人も見ています:
・くだらねえ質問はここに書き込め! Part 233
・くだらねえ質問はここに書き込め! Part 215
・くだらねえ質問はここに書き込め! Part 217
・くだらねえ質問はここに書き込め! Part244(ワ有)
・生物学専門家への質問はここに書き込めPart43
・〒くだらねぇ質問はここでしろ【質問スレ】 159
・〒くだらねぇ質問はここでしろ【お客さま専用】162
・スレ立てるまでもない質問はここに書け
・どうしてもマルチしたい質問はここに書け○チ
・■ちょっとした物理の質問はここに書いてね257■
・■ちょっとした物理の質問はここに書いてね275■
・■ちょっとした物理の質問はここに書いてね254■
・■ちょっとした物理の質問はここに書いてね250■
・■ちょっとした物理の質問はここに書いてね258■
・毎日ここに0:19に書き込みする基地外(・∀・)
・〒くだらね〜質問はここでしろ【お客様専用】157
・〒くだらね〜質問はここでしろ【お客さま専用】153
・ビートルズに関するくだらねぇ質問はビートルズに聞け3
・ZEPに関するくだらねぇ質問はココで聞け! Vol.1
・|;;; l ゚ ー゚ノ|<くだらない質問はここに Part351
・ピョンチャンのほうから書き込みしてるけど何か質問ある?
・|;;; l ゚ ー゚ノ|<くだらない質問はここに Part338 [無断転載禁止]
・どんなくだらねぇ質問にもマジレスするスレ★1
・嬉しかったことはここに書き込むことにした 2喜目
・ここに書き込んでる時点でお前らも陰キャだよ
・ここに書き込んだら何が何でも原稿へ向かうスレ6
・|;;; l ゚ ー゚ノ|<くだらない質問はここに Part330
・|;;; l ゚ ー゚ノ|<くだらない質問はここに Part362
・|;;; l ゚ ー゚ノ|<くだらない質問はここに Part347
・今瞬間的に何か思ったらここに書き込んでみて!3066
・★★ 新長野県高校野球したらばをここに書き込め! ★★
・|;;; l ゚ ー゚ノ|<くだらない質問はここに Part337 [無断転載禁止]
・くだらない質問はここで聞け!ボクシング板 4
・宇宙の質問が書き込まれたら誰かが即答するスレ58
・くだらない質問はここで聞け!@プロ野球板 第125回
・英文法・語法に関する質問はここでしろ! Part 12
・糞スレ多過ぎ最終書き込みから一時間で落ちる様にしやがれですぅ011 [無断転載禁止]
・ひき逃げ犯、2chに書き込みをする
・【速報】あの荒らしが速報に書き込みIPを晒す
・どんなくだらねぇ質問にもマジレスするスレ★180
・どんなくだらねぇ質問にもマジレスするスレ★178
・ひきこもり、ネットに書き込みほとんど行わない?
・どんなくだらねぇ質問にもマジレスするスレ Part171
・超超くだらねぇ質問に物凄いスピードで答えるスレ★113
・どんなくだらねぇ質問にもマジギレするスレ★1 ©bbspink.com
・どんなくだらねぇ質問にもマジレスするスレ★186©bbspink.com
・どんなくだらねぇ質問にもマジレスするスレ★195 ©bbspink.com
・どんなくだらねぇ質問にもマジレスするスレ★188 ©bbspink.com
・「こんな時間に書き込みしてるお前はニートなwww」←お前は?
・【コインチェック】 被害の訴え ネットに書き込み相次ぐ
・【コインチェック】 被害の訴え ネットに書き込み相次ぐ ★3
・雑談 コナンスレに書き込みをすると幸せゲージが溜まっていくらしい
・雑談 コナンスレに書き込みをすると幸せゲージが溜まっていくらしい
・どんなくだらねぇ質問にもマジレスするスレ★200 [無断転載禁止]©bbspink.com
・どんなくだらねぇ質問にもマジレスするスレ★199 [無断転載禁止]©bbspink.com
・怒らないでマジレスして欲しいんだけど、なんでこんな時間に書き込みできるわけ?
・どんなくだらねぇ質問にもマジレスするスレ★193 [無断転載禁止]©bbspink.com
・【速報】岡君懲りずに名無しで5ちゃんに書き込みを続けていた!元気でよかった(^-^)
・昨夜から朝まで一晩中狼でくだらねえ書き込みをして無意味な時間を過ごした人達って今どんな気分?
・WINDOWSのPCでSDカードに書き込み中78%のところでフリーズしてしまったんだがどうしたらいい?
・昨夜から狼にダラダラとくだらねえ書き込みを続けたりアイドルとか見て現実逃避してる孤独な在宅ニートの人達っさあ
・【8ちゃん】テキサス州エル・パソ銃乱射事件の犯人、悪質な掲示板”8chan”に書き込みをしていた
・ネットに「原稿叩き落とす」「爆発物もって突っ込む」昨秋に書き込み集中、京アニ火災関連捜査
・インターネットの掲示板サイトに書き込み「海老名駅で大量殺人」 県警100人態勢で警戒、異変なし
13:21:46 up 3 days, 23:45, 0 users, load average: 7.09, 8.65, 8.73
in 0.09044885635376 sec
@0.09044885635376@0b7 on 121603
|