1 名前:デフォルトの名無しさん mailto:sage [2016/03/12(土) 23:25:33.88 ID:j4grSBgs.net] PHPに関する下らない質問用避難スレです。 まず読むこと【PHPマニュアル】 www.php.net/manual/ja/ 前スレ 【PHP】下らねぇ質問はここに書き込みやがれ 3 echo.2ch.net/test/read.cgi/tech/1447495088/ 次スレは>>980 が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
237 名前:デフォルトの名無しさん mailto:sage [2016/04/04(月) 09:44:25
] [ここ壊れてます]
238 名前:.62 ID:s52B3h8o.net mailto: いやいや金を使わず原価コストを下げて使おうってのがまたプロってもんだ [] [ここ壊れてます]
239 名前:デフォルトの名無しさん mailto:sage [2016/04/04(月) 09:45:21.88 ID:s52B3h8o.net] 会社でいうと人件費(固定費)に金をかける社長は基本的に社長失格。向いてない
240 名前:デフォルトの名無しさん mailto:sage [2016/04/04(月) 09:45:53.36 ID:s52B3h8o.net] それと同じ
241 名前:デフォルトの名無しさん mailto:sage [2016/04/04(月) 11:27:01.25 .net] 家賃と人件費は毎月掛かる費用だから、 100倍の金銭感覚で考えた方がええで、って ばっちゃが言ってた
242 名前:デフォルトの名無しさん mailto:sage [2016/04/04(月) 12:50:07.11 ID:tWTMiefV.net] ttp://alfalfalfa.com/ このサイトみたいに記事の2chレスに対してのコメントを近くに表示するのってどうやるん?
243 名前:デフォルトの名無しさん mailto:sage [2016/04/04(月) 12:55:59.98 ID:LrWEI3Rn.net] JavaScriptでDOM操作するの
244 名前:デフォルトの名無しさん mailto:sage [2016/04/04(月) 14:26:43.44 ID:+Zn59SDD.net] PHPかんけーねーし、 ブラウザのソースみりゃわかんだろ
245 名前:デフォルトの名無しさん mailto:sage [2016/04/04(月) 22:08:09.50 ID:1LILMCI+.net] >>236 ほえーjavascript使うんっすね ありがとう! >>237 すまんすまん初心者なりに考えた結果PHP使うのかと思ってw ソースも覗いてみるよ〜
246 名前:デフォルトの名無しさん mailto:sage [2016/04/04(月) 22:12:34.35 ID:XmiF8pQ4.net] まあサーバサイドとかクライアントサイドとか 基本のキすら学んでない人にとっては、間隔がつかみにくいんだろうな
247 名前:デフォルトの名無しさん mailto:sage [2016/04/04(月) 22:35:56.66 ID:0+RtGrV4.net] millkeyweb.com/if-mobile/ にある、 <?php if ($is_chrome) : ?> // Chrome用コンテンツ <?php else: ?> // その他用コンテンツ <?php endif; ?> をWordPressで試しているのですが、Chromeで実行しても $is_chrome が 空のようで「その他のコンテンツ」のほうが表示されます。 なぜですか?
248 名前:デフォルトの名無しさん mailto:sage [2016/04/04(月) 22:50:30.56 ID:LrWEI3Rn.net] WPなんてしらんけど $is_chromeっていうグローバル変数はちゃんとそのファイル内で使えるようになってんの?
249 名前:デフォルトの名無しさん mailto:sage [2016/04/04(月) 22:54:41.79 ID:9uPoM1fV.net] やってることを理解していない典型例 教えてもらったうえで何が理解出来るというのか
250 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 00:22:50.90 ID:PBrOQNL5.net] WPで試してるんだから使えるんじゃないの https://codex.wordpress.org/Global_Variables UAに何送信してるか調べてみたら?
251 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 00:37:57.65 ID:aIjRskG1.net] if文をコロン/セミコロン/endifで書けることを今知った いやたぶん使わんけど
252 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 06:26:24.09 ID:w1a858Dh.net] PHPだけに限ったことじゃないんだが、プログラミングやってると文字列ばかり見てめまいがする。 みんなは頭が基地外になってこない?オレは文字列の羅列を見るだけでめまいがする。
253 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 06:35:27.28 ID:hR4UL7wD.net] >>244 PHP自体がテンプレートエンジンだから軽量な実装する場合にviewで割りとよく使われるぞ
254 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 10:35:42.12 ID:ppnKHRiK.net] >>241 どうやればいいの?
255 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 11:13:51.20 ID:oEPANDny.net] グローバル宣言してますか?
256 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 11:17:29.11 ID:ppnKHRiK.net] >>248 特に何もしていません
257 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 11:21:27.14 ID:oEPANDny.net] >>249 使う前に global $is_chrome; とおまじないを唱える
258 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 11:24:37.57 ID:ppnKHRiK.net] >>250 出来ました。ありがとうございました。 グローバル変数を使う場合にわざわざ再宣言しなくちゃいけないのはなぜ? phpって面倒臭い言語ですね
259 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 11:36:24.48 ID:hR4UL7wD.net] PHPが悪いんじゃなくてWPの設計が悪いだけだろ
260 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 11:42:29.01 ID:oEPANDny.net] >>251 PHPにおける変数のスコープを理解することは重要 >グローバル変数が自動的に関数で使用可能で ある C 言語と少々 >異なっていると気がつかれるかもしれません。C言語のような場合、 >グローバル変数を不注意で変更してしまうという問題を生じる可能性 >があります。PHP では、グローバル変数は、関数の内部で使用する >場合、関数の内部でグローバルとして宣言する必要があります。 php.net/manual/ja/language.variables.scope.php
261 名前:デフォルトの名無しさん [2016/04/05(火) 12:08:31.00 ID:5k7a1AT7.net] 【OS名】MacのMAMP 【PHPのバージョン】5.6.10 【連携ソフトウェア】なし 【質問内容】 こちらのページの、ページ数がいくつあるかをスクレイピングで取得したいです。 www.amazon.com/gp/offer-listing/0996275460/?condition=new このページの場合だと、4という数字を取得したいです。 <!DOCTYPE html> <html lang = "ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>テストプログラム</title> </head> <body> <?php $dom = new DOMDocument; @$dom->loadHTMLFile('www.amazon.com/gp/offer-listing/0996275460/?condition=new '); $xpath = new DOMXPath($dom); $num_pages = $xpath->query('//ul[@class="a-pagination"]/li[last()-1]/a'); var_dump($num_pages); echo $num_pages; ?> </body> </html>
262 名前:デフォルトの名無しさん [2016/04/05(火) 12:11:59.63 ID:5k7a1AT7.net] 続きになります。 PHPの入門書を何回か読んで、ネットの情報を読んで手探りで実践しているところです。 実行した所、このような結果が帰ってきます。 object(DOMNodeList)#3 (1) { ["length"]=> int(0) } $num_pagesのlengthのintが0ということは、 どこかでミスがあり$num_pagesに何も格納されていないと思い、 いろいろ試してミスを探してみましたがわかりませんでした。 $num_pages = $xpath->query('//ul[@class="a-pagination"]/li[last()-1]/a'); の所にミスが有ると思い、いろいろなパターンで試してみました。 $num_pages = $xpath->query('/body//div[@class="a-text-center a-spacing-large"]/ul/li[last()-1]/a'); などと、 XPathの正規表現を確認しながら、 [@class=""]やlast()などを削除して余計なものをつけずに なんでもいいから値を取得しようとしても取得できず、 いろいろなパターンを試してみましたが、 結果は object(DOMNodeList)#3 (1) { ["length"]=> int(0) } ばかりで変わりませんでした。 勉強不足で非常につまらない所で間違えているとは思うのですが、 今の私にはどこが間違っているかわかりませんので、 お知恵を貸しいただけませんでしょうか。 ご指摘いただけますと非常に嬉しく思います。
263 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 12:49:13.36 ID:PBrOQNL5.net] >>254 まずは取得したHTMLの内容を見ること。 そしてそこに書かれている内容を読むこと。
264 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 13:01:19.31 ID:w0vmBuKb.net] file_get_contents して正規表現で抜き出せばいい php.net/manual/ja/function.file-get-contents.php
265 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 13:02:56.33 ID:hR4UL7wD.net] >@$dom->loadHTMLFile('www.amazon.com/gp/offer-listing/0996275460/?condition=new '); @なんてつけてエラー制御してるから肝心なことがわからないんやで 503返ってきてるしBOTと見なされて拒否られてるってところだろう ストリームコンテキスト作成してみるとかcURL使ってみるとか
266 名前: [] [ここ壊れてます]
267 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 14:11:45.62 ID:ruInOaYl.net] カウントして、ファイルに書き込んでリダイレクトすると、カウントが1つ増えるんだけど、なにが原因でしょうか…
268 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 14:27:24.69 ID:F6iG++QK.net] >>254 $dom = new DOMDocument; @$dom->loadHTMLFile('www.amazon.com/gp/offer-listing/0996275460/?condition=new '); $xpath = new DOMXPath($dom); $num_pages = $xpath->query('//ul[@class="a-pagination"]/li[last()-1]/a'); $num_pages がおかしいなら、その前の、$xpath もチェックする。 それもおかしいなら、その前の、$dom もチェックする こういうように、周辺の変数の内容を、すべて見るのが早い。 それか、1行ずつデバッグして、変数の内容を見ていく
269 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 14:48:14.91 ID:hR4UL7wD.net] >>259 コードも出さなきゃ答えようがない
270 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 16:31:14.94 ID:yO8yjDkc.net] 例えばなんだけど DBに接続するためのユーザー名とパスワードを記述したphpファイルがあるとして /web/lib/userdb.php(600) みたいな形にしてwebからアクセスできないようにすればたとえそのメインphpファイルがサーバーのミスやなんかしらの際に流出してもdbのIDとパスワードは守れる?
271 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 16:37:11.54 ID:Urfcnp8R.net] >>262 dbのIDとパスワードが漏れても外部からアクセスできないようにしとけよ
272 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 16:41:19.57 ID:+K5F7tY8.net] Webに公開されていないパスに置けば大丈夫では
273 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 19:24:34.83 ID:izAp1z4+.net] >たとえそのメインphpファイルがサーバーのミスやなんかしらの際に流出しても ファイル自体が流出したらパーミッション関係ないがな。
274 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 20:35:59.23 ID:H8S937SL.net] WordPressなんかは、ユーザー名とパスワードを記述したファイルも公開領域だけどね。
275 名前:デフォルトの名無しさん [2016/04/05(火) 22:24:24.93 ID:cf9M5ih9.net] MySQLの部分一致 %ae% とかやると abcdeのレコードが一致してしまうんですがどうすればいいんでしょうか つまり何が言いたいかというと 続いてない文字列が一致してしまう 先頭と端が一致してるのも取り出してしまう
276 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 22:34:15.27 ID:1mo6kAvy.net] それはおかしい。 SQLとその付近のコードはどうなってんの?
277 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 22:34:20.37 ID:UC4UBEI8.net] MySQLのほうのログ漁って 想定通りのクエリが飛んでるか調べるとか?
278 名前:デフォルトの名無しさん [2016/04/05(火) 22:38:27.01 ID:cf9M5ih9.net] ああ、まじですか やっぱりおかしいみたいですね コードを見直してみます。 ありがとうございました
279 名前:デフォルトの名無しさん [2016/04/05(火) 22:42:55.17 ID:cf9M5ih9.net] >>269 なるほど。。
280 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 23:00:19.33 ID:gOJOQ9cJ.net] 未だに開発環境でも常にApache+PHPでやってた骨董品なんだけど, PHPのビルトインWebサーバめっちゃ便利やな, 軽んじてたわ
281 名前:デフォルトの名無しさん mailto:sage [2016/04/06(水) 06:32:29.83 ID:cc6aqB73.net] 全レススマソ >>263 それだわ 有難う >>264 一応そうしてるけどそれでもなんか怖くて・・・ >>265 エッ
282 名前:デフォルトの名無しさん mailto:sage [2016/04/06(水) 06:58:14.77 ID:chXvhDzz.net] メインの文字読み落としただけだから気にしないでくんろ
283 名前:デフォルトの名無しさん [2016/04/06(水) 11:48:54.09 ID:CSfgqPLP.net] >>267 ですが一日中考えた結果 前方一致と後方一致の両方が一致しているので取り出してしまっている という結論に至りました あいまい検索って本当にあいまいなんですね
284 名前:デフォルトの名無しさん mailto:sage [2016/04/06(水) 11:58:30.75 ID:MS+65iNt.net] >>273 えっ いや違和感あるんだが メインのphpが流出する⇒db接続に使う資格情報が書いてあるっぽいファイルのパス・名前が流出する、ってことで で、このdb用ファイルの内容をどのように取得する? db用ファイルがwebからアクセスできる場所にある場合でも、生txtであったりあるいは設定ミス等によって webから直アクセスして実行結果ではなくファイル内容そのものが読める場合でない限りは資格情報は盗まれない <?php $id='user'; $pass='password'; ?> と書かれたファイルを.phpとして実行しても何も返されないわけで 逆に生txtか生txt同然であったならば、chmod 600してても何も防止できない 好きに.php等をアップロード&実行されてしまう状況ならばどこに置いても一緒 mod_phpやfpmからアクセス可能じゃなかったらそもそも使えない あとはサーバに侵入される、あるいは雑居ビル状態の共用サーバ使ってる場合等 前者はroot権限かdb用ファイルの所有権がないならchmod 600も一応意味があるが侵入されてるなら時間の問題 後者は利用者ごとに実行ユーザを厳しく切り替えてるなら意味を見出せなくもないけど DocumentRoot外にファイルを配置できる時点でなさげ だいたいdb接続情報のパスが漏れたらその時点でやばいっつーならmediawikiとか使えなくね
285 名前:デフォルトの名無しさん mailto:sage [2016/04/06(水) 12:43:28.61 ID:cc6aqB73.net] サーバーのミスって.htaccessの設定ミスとかそう言う話だよ! 後は何らかの原因でユーザーログイン出来てしまった時にrootのパスワードがわからない状態でソースが覗けなければいいかな程度 そっから先は俺らの考える事じゃないし・・・
286 名前:デフォルトの名無しさん mailto:sage [2016/04/06(水) 13:26:05.81 ID:K9SGMphy.net] >>275 いやその結論はおかしい。mysqlスレいこ
287 名前:デフォルトの名無しさん mailto:sage [2016/04/06(水) 14:09:25.41 ID:ZQg6xGn/.net] >>275 んなわけないだろ where句全部書いてみろよ つかSQL作ってるコードを貼ってみろよ
288 名前:デフォルトの名無しさん mailto:sage [2016/04/06(水) 14:58:23.75 ID:MS+65iNt.net] >>277 領分で想定範囲に線引き入れるならばshellに入られる事態がすでにお手上げ状態だと言っても良いと思うが それはそれとして、webから覗ける範囲に所有者以外が書き込み可能なファイル/ディレクトリが1つもないことの確認を推奨 メインの.phpにセキュリティホールがあればやはり全部無駄になるからこれも(ありがちなのがアップローダ機能) ところで.htaccessでどんな設定書いてんの
289 名前:デフォルトの名無しさん mailto:sage [2016/04/06(水) 15:28:04.17 ID:gq7o88bt.net] ドット始まりのファイル名にしとけばよほどのことをしてもWeb経由では見られないんじゃね
290 名前:デフォルトの名無しさん mailto:sage [2016/04/06(水) 16:07:22.70 ID:b8EzfBRn.net] Laravelなら安心!
291 名前:デフォルトの名無しさん mailto:sage [2016/04/06(水) 16:22:16.52 ID:zh0XMq5l.net] >>281 これは隠しファイル扱いですよという一種の約束事なので、 知っていれば自由に読み書きできてしまう
292 名前:デフォルトの名無しさん mailto:sage [2016/04/06(水) 18:58:39.31 ID:Y+jXv/sp.net] 超初歩的な質問で申し訳ないのですがXSS対策のエスケープで事前に function h($s) { return htmlspecialchars($s, ENT_QUOTES, 'UTF-8'); } を作っておくことを学んだのですが $sはそのphpでは上記部分以外では見つからないのですがどういう意味を持つ引数なのでしょうか? また事前に$sの宣言を行わなくても良いのはなぜでしょうか?
293 名前:デフォルトの名無しさん mailto:sage [2016/04/06(水) 19:22:28.16 ID:xAgh0Pyq.net] 引数って言葉使ってるけど、関数が何か理解してますか?
294 名前:デフォルトの名無しさん mailto:sage [2016/04/06(水) 19:23:39.55 ID:b8EzfBRn.net] Manual見よう
295 名前:デフォルトの名無しさん mailto:sage [2016/04/06(水) 19:45:33.76 ID:ZQg6xGn/.net] >>283 httpdのデフォルトの設定でドット始まりは見せないようになってるでしょ .htaccess の設定ミス程度ではこの動作は変わらないから、余程のことをしない限りは安全でしょ
296 名前:デフォルトの名無しさん mailto:sage [2016/04/06(水) 19:50:32.95 ID:xAgh0Pyq.net] Apache限定の話だけどネ
297 名前:デフォルトの名無しさん mailto:sage [2016/04/06(水) 22:06:02.77 ID:chXvhDzz.net] PHPでは$_POSTなどのスーパーグローバルは直接操作するなと言われているけど、 書き換えることが出来てしまうということが、 バリデーターのテストコードを書く上で、物凄く便利であるということに気付いた春。
298 名前:デフォルトの名無しさん mailto:sage [2016/04/06(水) 23:11:26.49 ID:q1HrDxSz.net] javascriptやってて最近php始めたんですが、文字列や正規表現などの記述でphpはイライラします。phpは何でjavascriptみたいな柔軟な記述が出来ないのでしょうか?phpなんて作った奴は誰ですか?
299 名前:デフォルトの名無しさん mailto:sage [2016/04/06(水) 23:20:26.16 ID:HSAkNgFK.net] >>284 function h($s) { return htmlspecialchars($s, ENT_QUOTES, 'UTF-8'); } echo h($s); function h($s) { の $s は、仮引数(parameter)であって、 関数のための受け渡し用の仮の変数だから宣言はいらず$vとか好きにしていい。 echo h($s);の $s は、実引数(argument)であって、 実際に流れの中で利用されている変数で、宣言や代入され値が入っている。
300 名前:デフォルトの名無しさん [2016/04/07(木) 00:34:49.43 ID:838jiYpM.net] まずjsは柔軟じゃない。ガバガバなのだ
301 名前:デフォルトの名無しさん mailto:sage [2016/04/07(木) 03:41:23.49 ID:861uWPB3.net] Apacheともう一個なんだっけ最近上がってきてたやつ あれの評判どうなんだろうね
302 名前:デフォルトの名無しさん mailto:sage [2016/04/07(木) 04:18:50.70 ID:PO5E9BnC.net] スレチ 独り言 質問しっぱなしが最近大杉 こっちに引っ越してきてから過疎スレそのものだったのに 春休みで同じやつがやってるんだろ
303 名前:デフォルトの名無しさん [2016/04/07(木) 13:08:16.18 ID:O69mbgIK.net] php-cs-fixerをインストールしたらPHPのバージョンが勝手に7に上がってました。OS標準(Mac)のバージョンに戻すことは可能ですか? 上書きされてしまったのでしょうか
304 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 13:57:00.23 ID:pJYoLHo6.net] read.php ← conf.txt write.php → conf.txt こんな感じて特定の設定を保存しておきたいんだけど、おすすめの方法ないですか 自前で全部作らないとダメ?
305 名前:デフォルトの名無しさん [2016/04/11(月) 14:24:35.69 ID:2HwASHVN.net] すみません、ページごとの閲覧数を表示できるPHPってありますか? ワードプレスの「WP-PostViews」プラグインは知っていますが、ワードプレスではないサイトなので・・・
306 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 14:28:52.63 ID:cX0ZVNHx.net] >>296 おれは設定を array にした PHPコードにしてファイルに書いちゃう手をよく使う。 書く処理は作らなくちゃいけないが、読む処理は include するだけでいい。
307 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 14:34:17.61 ID:pHIRjOY+.net] >>297 tamae.2ch.net/test/read.cgi/php/1330980652/
308 名前:デフォルトの名無しさん [2016/04/11(月) 14:42:15.76 ID:2HwASHVN.net] >>299 ありがとうございます。 質問してみました。
309 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 14:58:26.31 ID:zPYXS2gG.net] >>298 書く処理を作るくらいならばいっそserialize()してしまったほうが良くないか 以前試したときは速度的には配列だけの.php読み込みもcsv読み込みもunserializeもほぼ変わらない ただ、設定ファイルをそれなりに頻繁に手で書き換えるなら配列.phpやcsvのほうが確かに便利
310 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 15:28:56.19 ID:cX0ZVNHx.net] >>296 設定ファイルの可読性を全く問わないなら serialize/unserialize を使うって手もあるね。 JSON形式で保存することにして json_encode/json_decode を使うって手もありそう。
311 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 15:34:31.20 ID:cX0ZVNHx.net] おお、かぶったw >>301 おれも計ったけど、unserialize は結構遅かったような。 設定ファイルじゃなくキャッシュだが、それで serialize 使ってたのを array を使うようにした。 と言っても設定ならどのみち一瞬で読めるから出来合いでやれる方がいいかな。
312 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 15:41:47.48 ID:cX0ZVNHx.net] 連投すまん array でやるなら var_export が使えるのを思い出した。 おれは余計なスペースや改行だらけになるのを嫌って自前で書いたが、設定ファイルならむしろこっちの方がいいだろう。
313 名前:デフォルトの名無しさん [2016/04/11(月) 15:45:31.94 ID:YMrMfC9q.net] ディブ アライン アライン なんですかこれ
314 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 16:34:07.85 ID:PHHPdBbi.net] JSのTypeScriptみたいな、PHPを別言語から変換して使う言語はないのでしょうか? 静的型付け言語出身なので、動的言語に慣れなくて・・・ 本当はjava鯖がいいのですが、共用鯖だと使えないところが多いので
315 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 16:46:29.06 ID:zPYXS2gG.net] >>303 実際やってることがほぼ変わらないからか、php5.6系ではいずれもほぼ同じだった 確認は定番のmicrotime(true)@cli、読み込むデータのサイズをバカみたいに大きくしても同様 真面目に考えるならopcacheとの兼ね合いを第一に考えるべき …というかunserializeと他とで速度差が露骨に出るって.phpコード読み込みにopcache効いてましたってオチじゃなかろうな var_exportは設定読み書きに使うにはちょっと読む処理を書かなきゃいけないような
316 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 16:50:34.64 ID:jGs+gPDI.net] そんな1回あたり1ms未満の戦いしても意味ないんじゃないの 1万req/sec超とかなら話は別だが
317 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 17:45:50.42 ID:cX0ZVNHx.net] >>307 ごめん、PHP5.1.6 で試したら serialize 結果をそのままファイルに吐いたのを userialize するのが一番速かった。 計った時のいろんな事情や条件がおぼろげで曖昧になってたよ。 速度比としてはこんな感じ。 A. serialize結果がファイル化されたものを、unserialize(file_get_contents('conf.txt)); する B. serialize結果のデコードをPHPコード化(<?php $conf=unserialize([serialize結果の文字列化]); )したファイルを include する C. var_export結果を PHPコード化(<?php $conf=[var_export結果]; )したファイルを include する D. Cと似てるけど、余計な空白や改行を含まないファイルを include する A 5.4 B. 14.7 C. 19.5 D. 12.6 サンプルデータは、適当なディレクトリツリーを array化したのにしてみた(A のデータファイルで 7KB規模)。 読み込みを include 一発で済ませられるようにするなら D、極簡単な読み込みコードを書くなら A だね。 データファイルの可読性や編集しやすさを取るなら C/D、読み取りパフォーマンス重視なら D、書き込みコードを簡単にするなら C だ。 JSON も試したかったけど今手元にあった環境では使えなかった。 >>308 それはその通り、ほ
318 名前:とんど影響の無い時間を稼ぐのに無駄に苦労するのはただのアホだわな。 おれの場合は処理済みデータのキャッシュ化に使ったから読み取りパフォーマンスを重視したけど。 [] [ここ壊れてます]
319 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 18:38:16.01 ID:jGs+gPDI.net] YAMLにしろよ
320 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 01:59:13.91 ID:vDLzdyvt.net] PHPの勉強にweb巡回ツールを作成中なのですが 現在はfire_get_contentsでHTMLを取得し、DOMDocumentからLoadHTMLでDOMドキュメントに変換し、それをsimplexml_import_domでxmlに変換し、xpathで要素を指定するといった方法を取っています。 しかし変換したxmlの中身のデータに元のソースコードの食い違いなど不審な点があったので、中身の要素を全て表示してみたところ、htmlソースの「::before」「::after」で指定されている部分のソースコードが取得出来ていないという事が判明しました。 調べてみたところこのタグはCSSでいじる段階になってからHTMLコードを追加するといったタグのようで、fire_get_contentsで取得したhtmlには含まれていないようです こういった表示段階になって始めて表示される要素まで含めた完全なHTMLソースを取得したいのですが、何か良い方法は無いでしょうか。 よろしくお願い致します。
321 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 02:12:44.98 ID:NLppiuAm.net] >>311 PHPとは関係無い話になっちゃうけど、chrome かなんかのレンダラを使う方法があったような。 早い話、ブラウザのインスタンスを作ってそれを制御する感じ(もちろん物理的な画面は必要無い)。 スクリーンショットの取得なんかもできたと思うし、多分JSなんかで加工された後のDOMも取得できると思う。 やり方わかったら教えて。
322 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 02:20:26.21 ID:20poyVM6.net] cssの擬似要素だけが問題なら自分で展開すりゃいいんでないの っていうかjavascriptでUA判定して内容切り替えとかしてたらどうすんの
323 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 02:38:41.31 ID:vDLzdyvt.net] >>312 やっぱり一旦ブラウザに読み込んでからhtmlを取得した方が確実みたいですね 設定作業が難しそうなので避けていましたが、セレニウムってのでそんな感じの事が出来ると思うのでもう少しやり方を調べてみようと思います >>313 UAならリクエスト送る段階で偽装出来ると思うのですが、なるべく対応したいです やっぱりページ更新のチェック位置が取得出来ない部分にあったら巡回不可能なサイトが出来てしまう訳ですし・・・ HTMLやCSSにはあまり詳しくないのですが、擬似要素での可変部分は内部的な記述で隠蔽しているという訳ではないんですね 自分で展開できそうならそちらも視野に入れて調べてみます、ありがとうございます
324 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 03:01:29.60 ID:20poyVM6.net] >>314 スクレイパなどではなくてほんとに汎用web巡回更新チェックか。cssの擬似要素は単純っちゃかなり単純なのですぐわかると思う ところで素朴な疑問なんだけど rssを使うとかならともかく生htmlを使って巡回・更新チェックを行う場合、同じく生htmlに吐かれたアクセスカウンターとかどうすんの? さらに生htmlに実データが無くデータ取得から整形までクライアントに負わせ同時に確実な広告表示を実現してるサイト等の場合も 更新に関わらず内容が変化しうる、これはjsエンジン等を突っ込んだー、だけじゃ解決できない気がするんだけどこの辺どうなんだろう?
325 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 03:29:34.82 ID:vDLzdyvt.net] >>315 あまり詳しくはないのですが要素の位置に変化が無ければ値が変化しても特に問題は無いと思います htmlが取ってこれればそれをdomに突っ込んでxmlに変換してxpath通せば特定要素だけを取ってくる事は出来るので それでhtml上の更新時に必ず変化が起きる要素を一定時間ごとにチェックして変化が確認できたらログを保存してチェックデータを更新といった具合で実装しようと思っています
326 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 03:32:39.65 ID:w4romtCS.net] 思い込みで話すとだめという例
327 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 05:46:53.79 ID:vDLzdyvt.net] しかしどうしても不思議なんだけど外部サーバから動かす時ってブラウザはどうやって用意するんだろ・・・ seleniumにブラウザのドライバがあってそれ使ってコマンド飛ばせばブラウザを動かせるってのは分かるんだ そしてwindowsやらmacならフツーにfirefoxなりchromeなりインストールしたら使えるってのも分かる しかし外部サーバにphpファイルをアップロードして使うって話になると肝心のwebブラウザはどうやって読みこませればいいんだろう 元からインストールされてるとも思えないしレンタルサーバにwebブラウザがインストール出来るのか、それともwebブラウザのexeファイルだけ置けば普通に使えるのか そもそもレンタルサーバがGUI環境じゃなかった場合webブラウザってのはマトモに動くのか php web driverってのがある以上何らかの手段はあるんだろうけど、レンタルサーバ上でセレニウムを動かすに当たって何をアップロードすればいいのかっていう必要なものが見えてこない・・・うーむ・・・
328 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 09:22:36.97 .net] >>318 めんどくさいので、 (1)node.jsが使えるレンタル鯖を借りて (2)JS+Node.jsによるWebクローラー/ネットエージェント と言う本を買いなさい
329 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 09:30:30.18 ID:K20+5BP2.net] >レンタルサーバ上でセレニウムを動かすに当たって何をアップロードすればいいのか いやいや、普通はルートでやるんですよ VPSが最低要件 それとそこそこのメモリが必要になるでしょうね そもそもクローラーをレンタルサーバでやる意味がわからないのだけれど・・・ 自分のPCでいいじゃない
330 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 10:42:50.72 ID:PLXRZMCg.net] レンタルサーバーでそれやられたら負荷が高くて同居人に迷惑だな
331 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 10:55:55.85 ID:NLppiuAm.net] >>320 マナーの問題は置いておいて、こんな処理で root が必要? パッケージマネージャみたいので入れるなら root を要求されるだろうけど、ディレクトリ一式上げれば動くんじゃないの?
332 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 11:55:03.31 ID:gTjFdqWa.net] PhantomJSとかその派生は使わんの?
333 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 11:59:06.19 ID:uMcJYrhA.net] >>322 FirefoxとXvfbが必要 結局JavaScriptで操作した分の対応ってだけで DOMでない擬似クラスの:afterや:beforeはどうしようもないけど
334 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 14:46:55.51 ID:pjxLuk2S.net] ログファイルを利用してwebサービス的なものを考えてはいたんですがseleniumは負荷が激増しそうなのでやめておこうと思いますお騒がせしました むしろ読み込んだhtmlデータを確実に破棄出来てるか、メモリリーク起きてないかが気になってきました 今までは使った変数とか適当に放置してましたがunsetで確実に破棄して行こうと思います
335 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 16:06:33.46 ID:xc/VnKsQ.net] レベルが高くで全然わからん やっと$変数名っての覚えた
336 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 17:46:29.87 ID:ZuNPcNPl.net] PHPやろうと思ったら仮想サーバーとかSQL?とかいろいろ設定しないといけなくて手が出せない なんていうか全部パッケージされてて解凍かインストールするだけでPHP初められる開発ソフトって何かないか?
337 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 17:54:12.53 ID:xc/VnKsQ.net] >>327 xampp