X



PHP質問・雑談スレ6【初心者お断り(ROM歓迎)】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
垢版 |
2019/05/12(日) 18:21:04.82ID:Bj6LHkP3
PHPに関する質問や雑談をするスレです。
初心者お断り(ROM歓迎)と書いてますが、初心者用のスレが用意されているからで、
難しい質問や話題をしなければいけないわけではありません。
PHPマニュアルの読み方を概ね理解していて、関数リファレンスが正しく読める方用のスレです。

PHP未導入の方や、手取り足取りが必要な初心者の方はム板のくだスレへどうぞ。
https://mevius.5ch.net/tech/ (【PHP】で板内を検索)

前スレ
https://medaka.5ch.net/test/read.cgi/php/1538639036/

その他リンク
・PHPマニュアル
 https://secure.php.net/manual/ja/index.php
・コードテスト・貼り付け用
 https://ideone.com/
・プログラミングのお題スレ (求PHPer参戦)
 https://mevius.5ch.net/tech/ (お題スレで板内を検索)

このスレで扱う話題
・PHPのコード,設定や設定値に関する質問
・常識的範囲内でのコードレビュー依頼・改良相談
・PECL,PEARに関する質問
・PHP新機能やPHP関連トレンドの話題
 (FWや非公式ライブラリの話題や特徴比較は良いが使い方から先の話題は専スレへ)
・PHPのバグ発見報告・公式に報告する前の検証依頼

このスレで扱わない話題
・直接関係ない○○特有の質問(専スレへ)
 (HH,エディタ,IDE,サーバ,OS,DB,SQL,FW,テンプレート,非公式ライブラリ・アプリケーション等)
・PHPの改造
0021nobodyさん
垢版 |
2019/05/21(火) 07:05:36.99ID:???
htmlspcialcharsでエスケープした後の文字列を、別の文字エンコーディングで解釈すれば
htmlspecialcharsの効果なんてないんだよ

htmlspecialcharsでの対策と、Content-Typeにおける文字エンコーディング指定は
それぞれ別の攻撃に対する対応なんだよ

徳丸本くらいは読んだ方がいい
0022nobodyさん
垢版 |
2019/05/21(火) 07:41:00.77ID:???
サーバーに対するセキュリティというより、
サーバーを使うユーザーに対するセキュリティだな
0023nobodyさん
垢版 |
2019/05/29(水) 09:38:20.62ID:2dLx3j4D
PostgreSQLってPHPでまともに動くの?
接続処理にプロセスのフォークが使われてて
スレッドを使うMySQLより重いと聞いた

コネクションプールはリクエストの度に毎回環境を捨てるphpでは使えないし
0024nobodyさん
垢版 |
2019/05/29(水) 13:44:43.89ID:???
情報古すぎじゃない?
0025nobodyさん
垢版 |
2019/05/29(水) 14:12:18.42ID:???
10〜15年前ぐらいにタイムスリップしたのかと思ったわ
0026nobodyさん
垢版 |
2019/05/29(水) 22:32:19.90ID:???
マルチプロセスなのは変わってなくない?MySQLよりも重たいのは確かにある。コネクションプールもPHPじゃダメだよね。
使い物にならないってことは100%ありえないけど。なんならPostgreSQLのほうが得意な分野もあるし。
0027nobodyさん
垢版 |
2019/05/29(水) 22:57:59.47ID:???
PostgreSQLのほうが早くね?
0028nobodyさん
垢版 |
2019/05/30(木) 00:11:53.33ID:???
全部間違っているからどのサイトか晒してけ
0030nobodyさん
垢版 |
2019/05/30(木) 03:07:49.50ID:???
イベントモデル普及前の話題だな
今では考えられない世界だ
0031nobodyさん
垢版 |
2019/05/30(木) 08:05:11.02ID:???
イベントモデルなんて一部の分野でしか使われてないやん…
0032nobodyさん
垢版 |
2019/05/30(木) 08:12:36.38ID:???
両方選べるDBもあるけど、普通のサーバインスタンスならマルチプロセスのほうがいいよ
pgのコネクションプーラは各種あるので好きなものを使えばいいと思うけど、WEBアプリでプーラが必要になるケースの知識はあるの?
リクエストまたいでコネクションを使いまわしてオーバーヘッドを減らす、みたいなイメージしてないかい?
PHPは環境を捨てるというけど、HTTPがステートレスであることと混同してないかい?それにアプリ層にはセッションがあるのだけれど
0034nobodyさん
垢版 |
2019/05/30(木) 08:23:13.31ID:DjbEwjFg
Connection Handling

MySQL implements concurrent connections by spawning a thread-per-connection. This is relatively low overhead;
each thread has some memory overhead for stack space, plus some memory allocated on the heap for connection-specific buffers.
It’s not uncommon to scale MySQL to 10,000 or so concurrent connections, and in fact we are close to this connection count on some of our MySQL instances today.

Postgres, however, use a process-per-connection design.
This is significantly more expensive than a thread-per-connection design for a number of reasons.
Forking a new process occupies more memory than spawning a new thread. Additionally, IPC is much more expensive between processes than between threads.
Postgres 9.2 uses System V IPC primitives for IPC instead of lightweight futexes when using threads.
Futexes are faster than System V IPC because in the common case where the futex is uncontended,
there’s no need to make a context switch.
0035nobodyさん
垢版 |
2019/05/30(木) 08:23:50.00ID:DjbEwjFg
Beside the memory and IPC overhead associated with Postgres’s design,
Postgres seems to simply have poor support for handling large connection counts,
even when there is sufficient memory available.
We’ve had significant problems scaling Postgres past a few hundred active connections.
While the documentation is not very specific about why,
it does strongly recommend employing an out-of-process connection pooling mechanism
to scale to large connection counts with Postgres.
Accordingly, using pgbouncer to do connection pooling with Postgres has been generally successful for us. However, we have had occasional application bugs in our backend services
that caused them to open more active connections (usually “idle in transaction” connections)
than the services ought to be using,
and these bugs have caused extended downtimes for us.
0036nobodyさん
垢版 |
2019/05/30(木) 09:04:51.84ID:???
phpじゃコネクションプールだめってどういうこと?
コネクションプールってそれをマネージメントするミドルウェア的なやつを
バックグラウンドで動かしてユーザーに開いてるリソース割り振ればいいんじゃないのけ
それとも例えばセッションにいれてみたいな1:1で使い回せないってこと?
0037nobodyさん
垢版 |
2019/05/30(木) 09:19:06.91ID:jzvxS29C
pgbouncerか
Uberの記事では接続数が増え過ぎるバグがあってサーバーが落ちたってあるけど
今は大丈夫?
0038nobodyさん
垢版 |
2019/05/30(木) 09:21:45.29ID:jzvxS29C
pgbouncerはプロキシのように動作するので
仕組み的にはphpでも特にコードを変更せず
コネクションを再利用出来る
0039nobodyさん
垢版 |
2019/05/31(金) 20:52:30.68ID:???
imagewebpで合計5000ファイル計230MB程の画像ファイル群を変換しようと思ってるんだが、
imagewebpって重い?一気に変換して平気かな?
鯖に負荷が掛かるようならローカルでやってうpなんだが、一気に変換しても大した負荷で無いなら鯖でやろうと思ってる
0040nobodyさん
垢版 |
2019/05/31(金) 21:38:19.23ID:350dGCnf
鯖のスペックによる
0041nobodyさん
垢版 |
2019/05/31(金) 21:51:51.47ID:???
最近のサーバーは数GBのメモリは当たり前だから平気だと思う
0042nobodyさん
垢版 |
2019/05/31(金) 22:30:17.13ID:???
ちゃんと変換おわったファイルは毎回メモリ解放して適宜sleep挟んで
負荷がかからないようゆっくりやればいい
0043nobodyさん
垢版 |
2019/05/31(金) 22:47:07.92ID:???
>>40-42
スペックは高いと思うが、レン鯖なので・・・
時間掛かるとプロセス止められそうで・・・
レン鯖で実行するのは無謀かな・・・
0044nobodyさん
垢版 |
2019/06/01(土) 07:47:50.39ID:???
どうしてもレン鯖でやりたいのならリクエスト分けてやれ
1リクエスト5枚ぐらいにして1時間500枚ぐらいのペースになるよう調整して
10時間ブラウザ開いて放置しとけば終わってるみたいな
ただそんな面倒なことするぐらいならおとなしくローカルにPHP入れて
コマンドラインからスクリプト叩いて変換すればすぐ終わるし確実
0045nobodyさん
垢版 |
2019/06/01(土) 09:09:33.24ID:???
>>44
ローカルでやると、サーバから下ろして、また上げての作業がめんどうでは?
0046nobodyさん
垢版 |
2019/06/01(土) 09:15:37.32ID:???
FTPで対象フォルダを選択してダウンロード押すのと
わざわざ専用のスクリプト(PHP,JavaScript)書くの
どっちが面倒なのか一目瞭然だろ
0047nobodyさん
垢版 |
2019/06/01(土) 09:38:22.40ID:kaKNIqp8
レン鯖ってルールが曖昧で忖度を求められる物なの?
0048nobodyさん
垢版 |
2019/06/01(土) 09:41:45.57ID:???
ローカルPHPにFTP関数がある
0049nobodyさん
垢版 |
2019/06/01(土) 11:41:15.79ID:???
最悪BANになってもいいならチャレンジしてもいいのでは?
日常的に画像変換を目的にしてならともかく
ブログとかのコンテンツの整理だろうし問題視されないはず
自分は10年以上前にアップローダー運営してたら高負荷で利用停止になって
対策してくれって怒られたことがある
サーバ管理者は数字みればすぐ誰が原因かわかるから
まとめて一気にやるととんがった山みたいなグラフかくから
数回ぐらいじゃ目つけられないだろうけど気になるならある程度は配慮したほうがいい
0050nobodyさん
垢版 |
2019/06/02(日) 18:49:08.76ID:???
そもそも今日び何でレン鯖?
もはや安くもないし一番簡単なわけでもないし制限は多いし
0051nobodyさん
垢版 |
2019/06/02(日) 21:24:06.24ID:???
では今日日何を選べばいいの?
0053nobodyさん
垢版 |
2019/06/02(日) 22:43:34.71ID:???
100円台から借りれるし安いだろう
比較的まともなのだと500円ぐらいは必要だけど
自分は2Gの定額VPSだけど
従量制のクラウドは怖いわあ
0054nobodyさん
垢版 |
2019/06/02(日) 23:35:32.95ID:???
0円レン鯖の俺って一体
0055nobodyさん
垢版 |
2019/06/03(月) 00:23:38.74ID:???
ちゃんと使えば何も怖くないけどな、AWS
まあ、個人のお遊びならVPSで十分
0057nobodyさん
垢版 |
2019/06/03(月) 00:50:59.10ID:???
awsならlightsailでLAMPスタック選ぶのが簡単。月5ドルもかかる割高だけど(awsの他の手段で用意するのと比べて)
0059nobodyさん
垢版 |
2019/06/03(月) 11:27:32.52ID:???
lightsailはwordpressのイメージ選べば3.5ドルに下がる不思議
0060nobodyさん
垢版 |
2019/06/03(月) 15:12:38.74ID:???
一般的なそのへんのメモリ2G SSD30GBのVPSのスペック
PVは1日1000 月間30000 転送量は月30GB
ルールよく知らないけどこれをAWSでやると2000円じゃ収まらないでしょ?
0061nobodyさん
垢版 |
2019/06/03(月) 15:56:08.01ID:eo00ojdB
Lightsailは最も安いプランでも1TBまでの転送が無料になる
2GB RAMのサーバーは月10USD、3TBまでの転送が無料
0062nobodyさん
垢版 |
2019/06/03(月) 15:59:05.99ID:???
マルチサイトでもなきゃ2GBいらんて。
0063nobodyさん
垢版 |
2019/06/03(月) 22:36:16.48ID:???
DB使おうとするとさらに金かかるのか?謎
0064nobodyさん
垢版 |
2019/06/03(月) 22:44:55.39ID:???
ていうかOS乗せるとEC2じゃないとって感じみたいだし
ffmpeg使って動画変換とかもするから
やっぱ高くつくよな…
0065nobodyさん
垢版 |
2019/06/03(月) 23:33:26.25ID:???
VPSなんだからMySQL入れれば追加費用なしだよ。OSはAmazon linuxだよね?
0066nobodyさん
垢版 |
2019/06/04(火) 00:56:30.65ID:???
>>65
そうなのかーありがとう
OSはAmazon Linuxとか聞いたことないからCentかUbuntuがいいけども
まあそれしか安くする選択肢がないということならどうにかする
通常のVPSと同じ使い方でバッチ処理とかも全然おkで
2GBなら3TBまでの転送量だけに気をつければいいってことかな?
現在の転送量がわかるなら2.9TBぐらいになった時点で503出すようにすることもできそうだし
ちょいいじってみようかなあ
0067nobodyさん
垢版 |
2019/06/04(火) 01:07:02.17ID:???
lightsailは最安でVPSが導入出来るってだけで性能は糞
実測でストレージはかなり遅いし
RAM2GBのも1コアだし過度な期待はしないほうがいい
0068nobodyさん
垢版 |
2019/06/04(火) 09:39:02.50ID:???
>>66
アマゾンLinuxはCentOSと99パーセント同じ
0069nobodyさん
垢版 |
2019/06/04(火) 09:45:21.96ID:PBKSUDTu
>>66
Amazon LinuxはCentOSベースだからyum等が使える

BitnamiのBlueprintを使う場合はUbuntuベースらしい
0070nobodyさん
垢版 |
2019/06/04(火) 10:02:44.83ID:???
certbot の正式サポートがないのがなぁ。。。
0071nobodyさん
垢版 |
2019/06/04(火) 14:14:00.01ID:rH3aLVue
転送量での課金があるのってサーバーからインターネットへの送信だけでしょ

そんな大人気のサイトでも無い限り1TBも転送しなくね?
CloudFlareでも使っとけば更に転送量を抑えられる
0072nobodyさん
垢版 |
2019/06/04(火) 20:30:01.39ID:???
cloudflareってなにで儲けてんだ
ほとんどの人が無料プランで済んじゃわないか
0074nobodyさん
垢版 |
2019/06/06(木) 18:03:40.95ID:???
>>73
ありがとう!
裏に何かあるかもしれないけど、CEOが答えてるなんてこれ以上のソースないわ。
0076nobodyさん
垢版 |
2019/06/20(木) 17:57:11.83ID:???
コンストラクタは静的メソッドなのかなあ。
コンストラクタを継承するときに
parent::__construct();
というふうに->でなく::を使うので。
0077nobodyさん
垢版 |
2019/06/21(金) 13:32:37.25ID:???
>>76
だってオブジェクトないじゃん
0078nobodyさん
垢版 |
2019/06/22(土) 17:03:18.55ID:???
でも $this->でメンバにアクセスできるじゃん
0079nobodyさん
垢版 |
2019/06/22(土) 22:50:24.16ID:???
>>76
ただの記法なのであんま深く考えなくていいぞ。コンパイラか言語仕様上そうなってるだけやろ。
0081nobodyさん
垢版 |
2019/06/25(火) 10:46:11.68ID:???
変数名の$の次に数字はふつう使えないけど、
<?php
${1} = 1;
echo ${1},PHP_EOL;
というふうにすると問題なく動くね。
0082nobodyさん
垢版 |
2019/06/25(火) 15:44:25.21ID:???
PHP_EOL って初めて知った
0083nobodyさん
垢版 |
2019/06/25(火) 23:32:18.67ID:???
出来るできない以前にそんな変数名つけてたら張り倒されるわ
0084nobodyさん
垢版 |
2019/07/02(火) 09:09:43.06ID:???
ビルトインウェブサーバいじってて自分でPHPで作ってみたくなったんですけど
静的コンテンツの配信は簡単なのですが
PHPを動かせるサーバってどういうふうに書くんですか?

if ($file['extension'] == 'php')
{
$document = passthru("php -f {$file['name']}");
}

こんな感じでいいんですかね?
0086nobodyさん
垢版 |
2019/07/02(火) 15:18:33.21ID:???
>>85
ありがとうございます
requireしたのとかはまだ実験してないけど
とりあえず単純なものなら動きそうですね
0087nobodyさん
垢版 |
2019/07/14(日) 09:45:16.22ID:x6XB8Dua
Swooleとmysqliの非同期APIを使えば
PHPでも最速目指せる?
0088nobodyさん
垢版 |
2019/07/15(月) 13:09:42.44ID:???
Googleドライブにアップした動画をHTML5のvideoタグを使って自サイトに貼り付け
再生させたいと思っています。以下の様にリンクを作成すれば動画を無劣化で
貼り付けることができるのは分かっています。

<video controls>
<source src="https://drive.google.com/uc?export=download&;id={Google動画のID}" type="video/webm">
</video>

ただこの方法が通用するのは動画の容量が数十MBまで。
それ以上の容量の動画は上記の方法では埋め込み再生できません。
完全には把握できてはいませんがGoogleは巨大ファイルのダウンロードに際して
ワンクッションページを挟む仕様のようです。
たとえば800MB超のファイルをダウンロードしようとすると、
https://drive.google.com/uc?export=download&;id=1wyXHX_xDh4EntuIG7y6jpHiPZT99OBn26A
上記のようなページに誘導され、そのページ中のダウンロードボタン;
https://drive.google.com/uc?export=download&;confirm=-8rW&id=1wyXHX_xDh4EntuIG7y6jpHiPZT99OBn26A
をクリックすると動画のダウンロードが始まります。
ダウンロードボタンのリンクには新たに"confirm=-8rW"というキーワードが追加され、
末尾の4文字"-8rW"はダウンロードページをリロードするごとに変更されます。

またダウンロードボタンのリンクをコピーして違うブラウザを開いてURLを入力して
みましたがダウンロードは始まらず、例のワンクッションページに誘導され新たな
"confirm=****"キーワードが生成されたことを考えるとcookieも使ってるような気がします。

そこでPHPの力を使ってGoogleドライブにアップした巨大動画ファイル埋め込み再生に
チャレンジしてみました。
0089nobodyさん
垢版 |
2019/07/15(月) 13:10:14.73ID:???
// ワンクッションページのURL
$cookie='https://drive.google.com/uc?export=download&;id=1wyXHX_xDh4EntuIG7y6jpHiPZT99OBn26A';

//クッキー取得のためのアクセス
$ch=curl_init();//初期化
curl_setopt($ch,CURLOPT_URL,$cookie);//cookieを取りに行く
curl_setopt($ch,CURLOPT_HEADER,FALSE);//httpヘッダ情報は表示しない
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);//データをそのまま出力
curl_setopt($ch,CURLOPT_COOKIEJAR,'cookie.txt');//$cookieから取得した情報を保存するファイル名
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,TRUE);//Locationヘッダの内容をたどっていく
$html = curl_exec($ch);
curl_close($ch);//いったん終了

// confirm=**** のうち末尾4文字を$match["name"]に抽出
preg_match('/.*confirm\=(?P<name>\w+)\&amp.*/', $html, $match);

// 得られた"confirm=****"を使いダウンロードリンクを生成
$url='https://drive.google.com/uc?export=download&;confirm=' . $match["name"] . '&id=1wyXHX_xDh4EntuIG7y6jpHiPZT99OBn26A';

// HTML5のvideoタグを生成して動画の埋め込み再生
echo '<html><body><video controls><source src="';
echo $url;
echo '" type="video/webm"/></video></body></html>';

'cookie.txt'にcookie情報が取得できたのは確認できたのですが
残念ながらこの方法では動画の再生にはいたりませんでした。
方針が間違ってたのでしょうか?
0090nobodyさん
垢版 |
2019/07/15(月) 13:17:23.50ID:???
斜め読みしかしてないけど、閲覧側が google ドメインに対して cookie のセットができないんで、その方向性に解はないと思うよ。
0091nobodyさん
垢版 |
2019/07/15(月) 17:39:04.38ID:???
ドライブ自体がメディア配信用じゃない
009289
垢版 |
2019/07/15(月) 21:51:10.41ID:???
>>90
> 閲覧側が google ドメインに対して cookie のセットができないんで、その方向性に解はないと思うよ。

閲覧側の問題ですか・・
PHP使ってGoogleから発行されたcookieを閲覧側に横流しすることって出来ますか?

>>91
一応Googleドライブで動画の埋め込みコードを発行してたりするので(iframeを使ったコードですが)
メディア配信を意識してないわけでは無いようです
0093nobodyさん
垢版 |
2019/07/15(月) 23:11:15.79ID:???
CORSの問題にしか見えんのだが
0094nobodyさん
垢版 |
2019/07/16(火) 16:29:01.18ID:???
>>92
そのGoogleドライブが発行する埋め込みコードじゃダメなのか?
009589
垢版 |
2019/07/16(火) 22:29:54.65ID:???
>>94
「動画の埋め込み」機能で発行されるコードは再エンコードされた動画だったりします
(たとえ最高の1080pを選んでも)
元動画が60pでうpしたのに埋め込み再生される動画は30pに落とされるとかざらにあります

>>88
の方法はそれを回避して動画をオリジナルの画質で再生する方法なんですが
動画の容量が数十MBのものまでしか使えないのが問題でして・・・

>>93
CORS・・・初めて耳にしました
ちょっと調べてみます
009788
垢版 |
2019/07/17(水) 20:13:03.81ID:???
>>96
> PHPサーバーに動画をキャッシュしてストリーミングしてしまえ

無料レンタルサーバーなんですよね、
そんなことしたら怒られそうで・・・
0098nobodyさん
垢版 |
2019/07/18(木) 15:12:29.01ID:???
画像特化CDNのCloudinary最近動画配信機能強化してなかった?
無料枠で納まるか知らんが。
0099nobodyさん
垢版 |
2019/07/19(金) 18:02:04.79ID:???
よくわからんが1個の動画容量が数MBでも問題ないだろ
メタデータ作ってHLSで繋いで再生すればいいだけで
0100nobodyさん
垢版 |
2019/07/26(金) 11:59:46.48ID:???
PDOでのデータベース操作が上手くいかないので質問させてください

mysql> SELECT number FROM testtable;
+--------+
| number |
+--------+
| 204 |
| 226 |
| 234 |
| 246 |
+--------+
4 rows in set (0.00 sec)

このようなnumberカラムを持つtesttableで、特定の値(仮に今回は3番目の234とします)より大きいnumberを持つレコードのみ+1するということが目的なのですが、
直接mysqlで以下のstatement:
>UPDATE testtable SET number = number + 1 WHERE number > 234;
を実行すると

Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> SELECT number FROM testtable;
+--------+
| number |
+--------+
| 204 |
| 226 |
| 234 |
| 247 |
+--------+

となり、目的が達せられます
0101nobodyさん
垢版 |
2019/07/26(金) 12:01:14.15ID:???
しかし、これをaxiosでPOST requestしたphpの関数上で行うとおかしな結果になります

======

try {

$connection = new PDO(
'mysql:host=' . $host . ';dbname=' . $dbname,
$username,
$password,
$options
);

$connection->exec(
'update testtable set number = number + 1 where number > 234'
);

echo 'run only once.';

} catch ~~~~

=====

上記がphp内のPDOで同じstatementを実行している部分で、
この実行の後に、numberカラムを確認すると
0102nobodyさん
垢版 |
2019/07/26(金) 12:01:52.20ID:???
mysql> select number from testtable;
+--------+
| number |
+--------+
| 204 |
| 226 |
| 234 |
| 249 |
+--------+
4 rows in set (0.00 sec)

このようになぜか + 2 されてしまいます
exec内のstatementが意図せず2回実行しているのかと疑って、

$connection->exec(
'update testtable set number = number + 1 where number > 234'
);

の [ number = number + 1 ] を [ number = number + 2 ]
として変更すると + 4 されるので、恐らくその点については疑い通りなのですが、
一方でaxiosのresponseは、'run only once.'と期待通りになっていて
echoの内容が重なっていたりはしないので、このブロック全体が2回実行されているわけでもないようです
結局何がどうなっての結果なのかさっぱり分かっていないという状態です

上記の挙動について、考え得る原因やなにか自分に落ち度があればその点ご指摘いただけますでしょうか
長々と質問してしまい申し訳ありませんが、どうぞよろしくお願いいたします
0103nobodyさん
垢版 |
2019/07/26(金) 12:09:46.76ID:???
たまにあるのが、ブラウザの拡張機能が悪さしているケース。
何故か、2回アクセスしてたりする。
アクセスログ見てみるといいよ。
0104nobodyさん
垢版 |
2019/07/26(金) 15:14:15.30ID:???
POSTが二回発行されてたら、echoじゃわからないんじゃね?
0105nobodyさん
垢版 |
2019/07/26(金) 15:37:13.70ID:???
formのsubmitとajaxが2つ動いてるパターンIEでよくある。
0106nobodyさん
垢版 |
2019/07/28(日) 19:18:24.72ID:???
遅くなってしまいすみません

>>103
まさにこちらがどんピシャリでchromeでは上のような挙動になるのに、Edgeだとちゃんと動きました
ですがchromeの何が悪さをしているかは謎のままなので、これからどのように特定すればいいのか少し調べてみます
ありがとうございました

>>104
axiosのresponseが2件重複しているかは最初に調べて、postの重複でないことは確認しておりました
0109nobodyさん
垢版 |
2019/07/30(火) 22:55:37.68ID:???
faviconちゃいます?
0110nobodyさん
垢版 |
2019/08/02(金) 19:19:39.72ID:???
指定したディレクトリ配下全ての拡張子jpegをjpgに書き換えるコード

function jpeg2jpg($path)
{
$array = glob($path.'/*',GLOB_ONLYDIR);
foreach ($array as $filename)
{
jpeg2jpg($filename);
}

$array = glob($path.'/*.jpeg');
foreach ($array as $filename)
{
$newpath = str_replace(".jpeg", ".jpg", $filename);
rename($filename, $newpath);
}
}

これをもっと綺麗なコードにしたいんですが何かありませんか?
0111nobodyさん
垢版 |
2019/08/04(日) 11:50:01.70ID:5btAphd0
>>110
それで十分綺麗だと思うけど。
ファイルの検索とリネームを分けるこんな方法もある。

function files($path)
{
yield from glob($path.'/*.jpeg');
foreach (glob($path.'/*', GLOB_ONLYDIR) as $dir) {
yield from files($dir);
}
}

foreach (files('images/') as $jpeg) {
$jpg = str_replace(".jpeg", ".jpg", $jpeg);
echo "rename($jpeg, $jpg);\n";
}
0113nobodyさん
垢版 |
2019/08/04(日) 16:02:34.71ID:???
>>111
yieldって構文は知らなかった。ありがとう
0114nobodyさん
垢版 |
2019/08/11(日) 13:43:40.86ID:yc7XMF1E
file_get_contentsで2chの過去ログ保管サイトをスクレイピングしてるんだが、なぜか連続で更新すると内容を取得できないことがある
これってサイト側がスクレイピング対策のブロッキングを施してるってことなのかな?
0115nobodyさん
垢版 |
2019/08/11(日) 21:01:01.13ID:???
>>114
そうかもしれないし、違うかもしれない
事実はサイトの運営者のみが知る
人間っぽくないリクエストを弾く方法はいくつもある

高負荷のリクエストを送るIPをブロックしたり、
ハニーポット置いたり

Facebookはマウスの動きまで見てるらしいが
そこまでしてる所は稀だろう

1分間のリクエスト数に制限かけたり、
Exponential Backoffで時間置いてからリトライしたら?
https://github.com/bandwidth-throttle/token-bucket
https://github.com/stechstudio/backoff
0118nobodyさん
垢版 |
2019/08/26(月) 12:27:40.91ID:???
>>116
変数に$を付けて回るだけでほとんど丸コピーで動くから
perlとかphpといったスクリプト系の無料ツールを使うと良いよ
0119nobodyさん
垢版 |
2019/08/26(月) 14:55:37.96ID:???
さすがにそれはねーわw
■ このスレッドは過去ログ倉庫に格納されています