【PHP】下らねぇ質問はここに書き込みやがれ 8 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/03/15(水) 00:41:22.79ID:ko4BTSP20
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
2017/09/26(火) 03:39:41.11ID:hdyDplTp0
もうさ, [Winサーバ], [.NETアプリ], [外部端末のブラウザ], [PHP], [Ajaxとか使ってる動的ページ]使って何がしたいのか図示してくれよ
2017/09/26(火) 03:50:19.75ID:mvSUAuA/0
Docker Hub で、公式イメージでも探せ

それか、VirtualBox, Vagrant, Chef など
2017/09/26(火) 04:20:53.63ID:iIk2lbGJ0
じゃ質問をシンプルにするよ。
PHPでアクセスしてAjax使ってる動的ページを正しく動かす方法で
一番シンプルなものってなにかな?
色々調べてPhantomJSがあるのは分かったけど
レンタルサーバによってはインストールできない可能性があるのでその問題がありそう。
2017/09/26(火) 06:31:31.27ID:M58WkJeo0
ちょっと調べて見たければphp製のjavascriptエンジンはないので無理ではないかなぁ
2017/09/26(火) 06:32:15.60ID:M58WkJeo0
ちょっと調べて見たければ→ちょっと調べてみたけれど
640デフォルトの名無しさん (ワッチョイ 0f23-7Jrl)
垢版 |
2017/09/26(火) 08:09:15.81ID:iIk2lbGJ0
>>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をインストール
2017/09/26(火) 09:50:15.42ID:iIk2lbGJ0
自己解決
落としたバイナリがぶっ壊れてた。。
2017/09/26(火) 13:57:41.18ID:cwFxqDCFM
Headless Chromeもあるし
どうしてもPHPでやりたいってんならv8拡張がある
この場合ブラウザ側API全部再実装が必要だが
2017/09/26(火) 14:11:14.60ID:iIk2lbGJ0
>>642
PhantomJS試してるんだけどformをsubmitする処理とかだとなんか面倒そうなので
やっぱり他のでやった方がいいのかもしれない。
Headless Chrome?それも後で試してみるよ。ありがとう。
644デフォルトの名無しさん (ワッチョイ ffcd-JacX)
垢版 |
2017/09/27(水) 05:11:15.19ID:EHqNXxRy0
>>643
casperjsはphantomjsより扱いやすいよ
2017/09/28(木) 15:18:44.51ID:fKb4VnmR0
>>628
最後の1行読んだ感じでは
DBの正規化という言葉すら理解できてなさそうな臭いがするので
DBの設計から勉強し直してみてはどうだろうか?

根本的なところからおかしいので誰もまともに答えられないかと
646デフォルトの名無しさん (ワッチョイ 2391-TWXg)
垢版 |
2017/09/30(土) 20:51:24.62ID:CiKOls/60
フレームワーク、例えばcakePHPを習得するまでに
みんなどのくらいの期間かかった?
フレームワーク初体験で
2017/09/30(土) 22:47:17.93ID:h2RlFi9m0
新しい言語や技術は書籍で入門するのが当たり前という人にとっては
フレームワークはどれもたいへんだよ。
2017/10/01(日) 06:09:17.97ID:Ae9q61k/0
意欲の問題では
フレームワークは別になくてもいいわけで
なくてもいいものをわざわざ覚えるのかなんて思いながらやってると
なかなか身につかない
仕事でどうしても必要だとかそういう状況なら2週間で覚えるよ
649デフォルトの名無しさん (ワッチョイ 4d84-bz6c)
垢版 |
2017/10/01(日) 15:24:34.49ID:mkxY3wW+0
>>646

初めてのフレームワークでCakePHPなんか触った時点で迷宮に迷い込んで成長止まる。
2017/10/01(日) 20:10:56.14ID:GM1LmHU+0
PHPって将来あるの?5年もしたらもうオワコンじゃないの?
2017/10/01(日) 20:19:14.76ID:Ae9q61k/0
言語を意識するような時代が終わりはじめてるのでは
一定のユーザがいる状態であれば安泰だよ
2017/10/01(日) 20:24:12.95ID:qGSPhC6b0
>>650
そう思うならNode.jsでも使っとけばいいんじゃね?
2017/10/01(日) 20:43:25.47ID:xDL2/91Y0
PHPが終わるとは思わん
ただタイプヒンティング強化してるからジェネリクスが欲しい

RFCにはあるけど誰も実装書かないんだろうなー
2017/10/01(日) 20:51:44.63ID:ycCVTNJ30
世界中にある動的Webサイトの過半数がPHPで動いてるんでしょ?
WordPressも含めて
2017/10/01(日) 20:53:18.27ID:qGSPhC6b0
なんか知らんけど恨みがあるんじゃね?PHPに
656デフォルトの名無しさん (ワッチョイ 2391-TWXg)
垢版 |
2017/10/01(日) 21:39:11.63ID:eMQOw+pd0
>>649
んじゃ、初めてのフレームワークでおすすめって何よ?w
2017/10/01(日) 22:53:55.25ID:UOMkiKCA0
>>656
CodeIgniter
2017/10/01(日) 23:04:09.52ID:UOMkiKCA0
>>654
むしろWordPressだけで過半数以上
これらのユーザーがPHPを意識してるとは思えないが
世界中で稼働しているWEB言語のシェアとしてはPHPは圧倒的
逆にWordPressの代替となるアプリが流行すればPHPは一気に消え失せる可能性はある

とはいえWordPressのようなパッケージアプリを除いた純粋にPHPを開発言語として利用しているシェアも
けっこう高いはずなので急にRubyやPythonやその他の新興言語に入れ替わるもんじゃないとは思う
その他の言語がなぜ入り込んでこないかというと、Perlの頑張りがあるからじゃないかと密かに思ってる
派遣を即席で育てて現場に投入できるっていう利点もあるから少なくとも日本だと衰退しないんじゃないかな
2017/10/02(月) 01:21:56.57ID:VyNVpuqG0
Laravelって誰も触れんな
日本では流行ってないか?
めちゃくちゃ使いやすいと思うけど
660デフォルトの名無しさん (ワッチョイ 4dc9-bz6c)
垢版 |
2017/10/02(月) 09:30:10.62ID:yY+xy6Qa0
>>658

代替となるアプリもPHPで作られるにきまってんじゃんw
PHPはフレームワークを作るための言語だよ?

なお、オレは最近は静的型付き言語ばかり書いている。とにかく、楽。
2017/10/02(月) 09:53:14.55ID:T1SDxagl0
おわったっていいじゃん
一生を捧げる言語を一つ選ぶような話じゃないでしょ。
今日の昼はA定食にしようかB定食にしようかって話で、B定食が今後なくなってもA定食食べればいい。

それより食堂がなくなる心配したほうがいい
2017/10/02(月) 21:00:14.97ID:fIRtXeXL0
ec-cubeのソースを見ていたら
require_once が書かれてなくて、useだけ書かれているファイルが沢山ありました。

なんで、エラーにならないの?
2017/10/02(月) 21:17:59.72ID:T8QXjIur0
>>662
composer.jsonのautoloadセクションにオートローディングの設定書いてりゃrequire_onceが必要なのはエントリポイントだけ
2017/10/02(月) 21:28:04.49ID:V+ucx/B30
ソース見ないとわからんけど、__autoload とか使ってるんじゃ無い?
2017/10/02(月) 21:30:47.93ID:fIRtXeXL0
>>663
おー、わかった
サンクス
2017/10/05(木) 12:46:13.98ID:HZkkfHm10
テスト
2017/10/05(木) 13:00:26.21ID:HZkkfHm10
コード貼ると書き込めないようで・・・
https://ideone.com/UMVJrY

いずれも問題なく動作するのですが
mb系の関数ってどういうところで使うんでしょう?
2017/10/05(木) 13:48:00.22ID:PIRKucuZ0
strlenの値見てみればいいじゃん
669デフォルトの名無しさん (ワッチョイ 46eb-8BZG)
垢版 |
2017/10/07(土) 03:33:19.78ID:E8QcxmPR0
cakeのヘンなURLはみんな一々普通の書式に書き換えてるの?

/index/limit:3/page:2 ←キモい
index/?page=2    ←普通こんな感じだよね

フレームワークってたいへんだね
670デフォルトの名無しさん (ワッチョイ 457c-N+2N)
垢版 |
2017/10/07(土) 04:28:12.75ID:n7/qhps90
動けばいいのよ
2017/10/07(土) 07:48:18.63ID:gc7GFpiH0
>>669
むしろ下のURLの方が汚らしいんじゃね
2017/10/07(土) 08:58:47.62ID:CQDT89una
>>671
あまり言ってやるな
2017/10/08(日) 06:58:12.38ID:CWK8ZE8n0
>>669
反吐が出そうなスタイルから一般的なスタイルにしたきゃ
paramType を querystring にすりゃいい
2017/10/08(日) 19:54:00.65ID:31mgpPhM0
>>673
dクス 直った。あー気持ち悪かったw
2017/10/08(日) 21:19:07.77ID:Uwv5PG/i0
静的Pathにするのって、Google対策だっけ?
2017/10/09(月) 12:03:26.40ID:YlLc/E6M0
>>659
世界ではLaravel主流になろうとしてるけど、ちょこちょこバージョン上げすぎなんじゃ
日本語翻訳された頃には次のバージョン出てたらかなわん
2017/10/09(月) 13:13:37.43ID:h4S41BKFa
cake3も同じだわ
2017/10/10(火) 17:56:47.10ID:xdjFdlld0
Symfonyはどうなの?
合計10億ダウンロードを達成したようだが

https://symfony.com/stats/downloads
2017/10/11(水) 03:47:35.08ID:KMdfjBPl0
Symfonyは文字数が多くなる気がして
個人的にはイマイチ子
2017/10/13(金) 20:01:46.42ID:s758Uzmra
phpのプレイグラウンドサイトでいいところがあれば教えて下さい
https://www.tehplayground.com
とりあえず検索して見つかったここを使ってますが
もっといいところありますか?
2017/10/13(金) 20:02:50.62ID:s758Uzmra
>>678
すごいスピードで増えてますね
日本の借金のようです
682デフォルトの名無しさん (ワッチョイ 2beb-KNNp)
垢版 |
2017/10/13(金) 21:02:49.56ID:NQNcqrHf0
Mac Sierra + XAMPPでCakePHP3のインストールが出来ないのだけど、
みんなどうやってインスコしてるの?
composerはインスコできたけど、intlが入らない

バージョン2はコピペで済んだから楽だったのにな〜・・・
2017/10/13(金) 21:28:05.09ID:s758Uzmra
>>667
ここ良さそうですね
php以外にも大量に書けますし
2017/10/13(金) 23:35:56.43ID:s758Uzmra
git for windowsを入れたら
gitbashの中でphpも実行できるので便利ですね?
コマンドラインと大差ないといえばないですが
gitbashは任意のフォルダから始められるところがいいです
685デフォルトの名無しさん (ワッチョイ f97c-4jF/)
垢版 |
2017/10/14(土) 04:10:36.29ID:TNxvk7D00
sourcetreeでいいよ
どうしてもコマンド打ちたいなら別だけど
2017/10/14(土) 07:17:33.63ID:sv7zl76da
atlassianってtrello買収のニュースで聞いたことがありましたが
こういうものを作っていたんですね
とりあえずインストールしてみました
2017/10/14(土) 16:05:22.67ID:sv7zl76da
正規表現では一重引用符、二重引用符ともに
エスケープする必要がないと知りました
エスケープをしても問題が出ないので今まで気づきませんでした

preg_match('/\"/','"',$matches);

var_dump($matches);



preg_match('/"/','"',$matches);

var_dump($matches);


どちらの結果も同じになります
何故エスケープする必要のない引用符をエスケープしても
問題が出ないのでしょうか?
2017/10/14(土) 18:01:08.37ID:sv7zl76da
よく考えてみると、引用符をエスケープしなければいけないのは、
それが文字列と外界との境界を形成する特殊な文字だからで、
正規表現では文字列の境界をデリミタが形成するので、
引用符は普通の文字と全く変わりがない、
だから他の「普通の文字」をエスケープしても同じことではないか、
と思ってqで試してみたらやはり同じ動作になりました

preg_match('/\q/','q',$matches);

var_dump($matches);

正規表現エンジンは、
意味のないエスケープ文字
を単に無視するように出来ているのでしょうか?
2017/10/14(土) 18:22:55.67ID:WLIJLkznd
エスケープされた文字列を解釈するのはPHPのエンジンであり、解釈された文字列は、PHPの文字列になる。
正規表現エンジンは、当然PHPの文字列を、正規表現を表す文字列として解釈する。
最初の解釈で、無意味なエスケープはバックスラッシュが無視されるのだから、何も悪いことは起きない。
2017/10/14(土) 18:34:55.85ID:sv7zl76da
たしかにPHPの場合正規表現もまず最初に普通の文字列に入れられるので
>>688の言い方は適当ではなかったです
やはり正規表現エンジンは無意味なエスケープをただ無視するように作られているのですね
ありがとうございました
2017/10/15(日) 11:18:23.57ID:CEYZTvIx0
PHP初心者です。
PHPの実行モデルがイマイチ分からないのですが、
これはイベントモデルではなくただのテンプレートエンジンで、
前回の結果(または鯖上でのコンテキスト)を引き継ぐことなく、
毎回毎回ゼロから構築する必要があるって認識で合っていますか?

具体的には、Webページ全体で使われるクラスやdefine()している場合、
それらを毎回includeする必要があるのでしょうか?(今のところそう見えます)

クライアントJavaScriptの場合はページ遷移がない限り一度構築した物は使えます。
Nodeは使ったことがないですが、多分同じです。
(これらはイベントモデルだからですが)
毎回毎回全構築となると、余分な構築を省かないと実行速度が気になります。
ドメイン全体で単一アプリを提供する場合は
PHPではなくNode等の方が向いているということなのでしょうか?

例えば、dbアクセス用にクラスを作った場合、
それぞれのWebページからはその全メソッドを使うことは通常あり得ません。
だからプログラム的に美しく一つのクラスに纏めるより、
フィールドを継承し、今使うメソッドだけの子クラスに無駄に分割した方が速いのか?とも思えます。
あるいはspl_autoload_register()した場合に、
名前参照だけではなくコンパイル済み状態で格納されるから速度上の問題はない、とかありますか?
2017/10/15(日) 11:55:30.86ID:s8ygMoJ80
>>691
サーバサイドアプリケーションは大体そんなもんだと思うが
HTTPでセッションを跨いだクライアントの同一性保証なんて不可能だし

コードのパースとかの時間が気になるという意味ならopcacheのようなキャッシュ機構はある


とりあえずサーバサイドアプリケーションについて真面目に勉強するならLaravelとかSymfonyのチュートリアルくらいは触ってみたら
クライアントサイドとは全く違うから
2017/10/15(日) 13:46:10.80ID:CEYZTvIx0
>>692
了解です。ありがとうございます。
何らかの機構を備えていると勝手に信じていたので、軽く衝撃でした。
(ちなみにGoとかも同じですかね?ご存知であれば)

ただこれならPHPは各ページ毎に様々なことをするのには向いていますが、
(とはいえこれが通常のHP用途の90%以上を占めますが)
掲示板サイト等、ドメインで単一アプリを提供する際には本質的に遅いことになります。
別サイトで「こんなのどうよ?」と提案したところ、
「PHPでは無理だから止めろ、どうせNodeを使うことになるぞ」と避難轟々だったのも分かります。
この状況でフレームワークを使っていること自体が結構信じがたいです。
とはいえ今回は共用鯖等超軽量環境向けの為、NodeやGoは選択出来ず、PHPしかないのですが。
(参考) http://postd.cc/websocket-shootout/


別件ですが、CSRF脆弱性対策について、
これは単発のリンクを踏んだ(表示した)時用の対策であって、
ガチでのクライアントスクリプト等による攻撃向けではない、という事で合っていますか?

例えば、あるページを表示し、そこのJavaScriptが実行されるなら、
ajaxでhtmlを取得し、CSRFトークンを取得して、
掲示板にその人が書き込んだように見せかけることは簡単に出来ますが。
2017/10/15(日) 14:31:37.78ID:s8ygMoJ80
>>693
お前さんが何をしたいのか分からんし衝撃受けるのも勝手だが, クライアントサイドの常識をサーバサイドに持ち込むな
PHPに限らずRubyだろうがPythonだろうが何も変わらん

NodeやGoや更に言えばC/C++でサーバ作るというのは考えられるがメンテコストが膨らむしデプロイも面倒
その必要が本当にあるのかよく考えろ

> CSRF
Same Origin Policy
2017/10/15(日) 17:17:04.22ID:u42Q3jAo0
>>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
2017/10/15(日) 17:24:11.11ID:L1ItWz+aa
>>695
Webrickのこと言ってんのか?
テストはともかく実用環境でWebrickなんか使わねぇよ
実環境ならUnicorn, PumaとかPassengerがアプリケーションサーバだよ
2017/10/15(日) 22:50:14.72ID:lMinf0FC0
遅い早いって2ch読み書きするのをストレスに感じないのであれば杞憂でしょう
ボトルネックになる部分はPHPの機構なんかよりもネットワーク間の問題のほうが大きいわけで
2017/10/16(月) 00:01:36.25ID:OoF3Ic3Va
自分もリクエストのたびにこの巨大なフレームワークを読むのか?
とひるんだ時がありましたが
そこは実行コードをキャッシュする仕組みでカバーできるんですね
というか今の人はスタートがnode.jsとかなんだなーという驚きがあります
2017/10/16(月) 00:42:39.22ID:DJrtJlQd0
node.jsってレンサバで動くんか???
2017/10/16(月) 02:50:04.46ID:N7MUl21Ra
vpsでやろ。
2017/10/16(月) 08:53:25.48ID:twPANPDV0
>>699
https://qiita.com/azk0305/items/0bdb0fdab4bc8ebb5909
2017/10/16(月) 23:32:43.30ID:DJrtJlQd0
ふぇ〜さくらってスゴいのね
2017/10/17(火) 01:14:58.17ID:HUD/bT/k0
別にサクラはすごくないだろ
この手の方法はわりとどのレンサバでもできる
2017/10/17(火) 04:14:34.59ID:UUhSDchZ0
>>698
メモリを犠牲にして専用のアプリケーションサーバとそれ専用のフレームワークを作るのは
非常に面倒だけど別に難しいことじゃないのでPHPで作ってもいいのよ
2017/10/17(火) 06:07:25.14ID:C8ORuPRh0
質問です。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です。
2017/10/17(火) 09:57:21.02ID:RHJUWC0z0
>>705
1回のクエリで実行しようとしたらそらそうなるでしょ
あと一意性を保証したいならトランザクション分離レベルをRepeatable Read相当(SQLiteではIMMEDIATEだったっけ)にする必要がある
2017/10/17(火) 10:56:38.81ID:s8lIkCI50
>>695みたいなPHPのコストについての話が出る度に思うが
こういう人って今までどの程度の規模のサービスを扱った事があるんだろ?

10年ぐらい前に俺が個人の趣味の延長で開発してaspとして金取ってたサービス
800万PV前後/日程度だったが
当時のPHP4系・MySQL3系・Apach1系の組み合わせのサーバー1台(DBすら分けてない)で運用できてた

レンタル費用をケチろうと思ったんだろう
貸出先が業者にまんまUIパクったようなものを数百万で作らせたら
全然PV裁けなくなって業者に文句言ったら
捌けるようになるまでサーバーを増やせと言われたという笑い話

800万PVなんてここのプロ様に比べたらレベルが低すぎるだろうから
最低1億PV/日ぐらいは想定してるんだろうなきっと
2017/10/17(火) 11:13:26.21ID:RHJUWC0z0
でも実際物理で殴る方がお安く済む, でしょう?
2017/10/17(火) 14:02:18.91ID:0jVjcAN80
>>707
800万pvのサイト今もやってるの?
2017/10/17(火) 14:45:24.76ID:s8lIkCI50
>>709
UIまんまパクったものを業者に作らせてると知った時に
そっちへサービス切り替えた瞬間に全部停止する事にしたから当然今はやってない
当時は他でネタ扱いされる程に儲けてたし

ちなみに何故それを知ったかというとその業者の開発者の内の1名から
技術的な質問をされたから
当然教えるわけないというか「コイツ頭おかしいんじゃね?」と思った思い出

>>708
今はそうだろうね
当時のこの話の場合、結局パクったシステムのサーバー運用コストの方が高くなったという笑い話
2017/10/17(火) 21:06:15.90ID:rwpxP9zha
PHPでHTMLをパースして、
JavaScriptのquerySelectorみたいなもので要素を選択したいのですが
そういうライブラリみたいなものありますか?
2017/10/17(火) 21:39:14.67ID:uXsqtlL/0
phpquery
2017/10/17(火) 21:50:33.21ID:rwpxP9zha
>>712
自分でしこしこ書いてたんですが、もうあったんですね
この数日の努力とはなんだったのか・・。
でもありがとうございます
2017/10/18(水) 00:06:15.43ID:catz1Ji3a
>>680の件ですが
http://phpfiddle.org/
を見つけました
関数の補完があるのが良さそうです
2017/10/18(水) 00:30:04.05ID:catz1Ji3a
JavaScriptのプレイグラウンドはcdnからライブラリを読み込めますが
PHPのプレイグラウンドでライブラリを読めるものはないのでしょうか?
2017/10/18(水) 00:45:02.72ID:c6Rft4Lma
というかプレイグラウンドなのにライブラリ読み込めないって
全然遊べないですよね・・
2017/10/18(水) 05:41:41.19ID:IAqZZNli0
>>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には出来ません。
2017/10/18(水) 05:42:26.75ID:IAqZZNli0
次の質問です。
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
2017/10/18(水) 06:48:41.64ID:QGH5jOmla
>>718
迷惑だな
2017/10/18(水) 09:38:34.01ID:ZpnTdM5ra
>>713の件ですが
動作を確かめていますが、
phpquery、jqueryのセレクタが全部動いて素晴らしいですね
2017/10/18(水) 09:42:25.90ID:rF9hS7IgM
>>718
どんなマシン使ってるか知らんし、どれくらい書き込んでるし分からんが、いくら何でも遅すぎる
根本的になにかが間違ってると思うよ
2017/10/18(水) 12:36:34.56ID:v7V1Syde0
8Mpv/day=100pv/sが言い過ぎってさ…
実際に10年前に今より貧弱な環境で稼働させて
aspとして金を稼いでたサービスなんだけど(MAXで1000万/日超えた日もあった)

PHP4だったというのもあるけどさ
オブジェクト指向なんて全く理解してなかったしフレームワークも使ってない
クラス1個も使わずにfunctionとヒアドキュメントの組み合わせ
名前空間なんてものも当然なかった

DBへのアクセスが極力発生しないようにはしてたけど俺のレベルは糞低いぞ
サーバーのログはテキストでも壊れない…って事は全部テキストキャッシュにしてそれを読めばいい!と何でもテキストにしてたw
頭の悪い俺なりの発想
2017/10/18(水) 12:37:11.21ID:v7V1Syde0
昔こんな人と仕事をした事がある
色んな言語やデザインパターンを熟知してて
PHPも「これぞオブジェクト指向だ」と唸る程に素晴らしいコードを書ける
めちゃくちゃ頭が良いのが少し話すだけで分かるような人だった(後から知ったが東大卒だった)

でもその人が作ったサービスは激重で運用できなかった
俺は技術もないし頭が悪いからその人の何が悪いかは分からなかったけどw

お前らすごいね
実行レベル?イベントモデル?
pThreadだのGoだのNode.jsだのCloudFlareだの
俺には全然分からんわw

それでどんなサービスができるの?何人ぐらいに使ってもらってどれくらい捌けるの?
って事にしか興味がない

だってさ、使う人にとっては何の言語で書いてるとか関係ないじゃん
これだからPHPerは…って言われるんだろうけどこれでも金はそこそこ自慢できるぐらいは稼いできたからなぁ…
2017/10/18(水) 14:36:39.14ID:ZpnTdM5ra
PHPもwebrickやnode.jsみたいに
それ自体でサーバになればテストに便利なのに
と思って検索したら標準でビルトインウェブサーバーっていうのがあったんですね
2017/10/18(水) 21:26:02.74ID:451ejlL00
君は知らなかったかもしれないがそれ標準で組み込まれてもう5年半なんだ
2017/10/18(水) 22:56:18.69ID:/mn5vVDsa
長い間情報収集を怠っていたので
世の中想像以上に便利になっててびっくりします
2017/10/19(木) 04:05:45.17ID:lZeER9v70
>>721
こちらは桁が分かってないので助かります。
マシンは2007年製のポンコツで、書き込みは数文字だけですね。

レイテンシからスループットへの換算はやはり無理があるとして、
レイテンシだけにしても遅いので、問題もあるのだとは思います。(外部サイトの方が速い)
http://www.techempower.com/benchmarks/#section=data-r4&;hw=ph&test=db


>>722-723
opcacheの無い状態だと、コードを美しく整えれば整えるほど遅くなるから、
それを最初に確認したのです。>>691

君が書いたコードは細切れのバラバラで、
結果的に使う部分だけ走行するから速かったのでしょう。
それの方がよければそうすればいいだけです。

> 全部テキストキャッシュ
結果的に静的ファイルでキャッシュが効いたということでしょう。
今も同じ問題がCloudFlareにもあります。

> って事にしか興味がない
結果指向なのは正しいと思いますよ。
プログラミングはあくまで手段であり、目的ではないので。
特にネット上だと本末転倒になっている人も散見されます。
全く考えないのも問題ですが、考えすぎて手が止まっているのも問題です。
なおPHPerは最も馬鹿にされているらしいですが、JavaScripterよりマシな気はしますよ。
そしてデザインパターン/言語コレクターは使い物にならないと個人的には思います。
2017/10/19(木) 04:06:52.86ID:lZeER9v70
次の質問です。
以下環境で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

或いは他プロファイラーでいいのがありますか?
2017/10/19(木) 12:16:50.62ID:NzzKiK+50
> プログラミングはあくまで手段であり、目的ではないので。
> 特にネット上だと本末転倒になっている人も散見されます。
> 全く考えないのも問題ですが、考えすぎて手が止まっているのも問題です。

自己紹介乙
2017/10/19(木) 12:28:28.36ID:FE92wYZta
僕はプログラミングが目的で仕事はついでです
2017/10/19(木) 22:44:13.21ID:KjwMHyuL0
Windows CLIアプリで、EMAILなんかのJIS(ISO-2022-JP)文字コードのファイルを、
読み込んで変換して表示することは出来るのですが、
PHP自体をJISにして、そのPHPに書かれている日本語をechoすると、
undifined variable $Bのようなnoticeが出ます。
もちろんちゃんとコードページにあった文字コード(cp932)に変換はしているのですが、
変換以前に日本語が変数と認識されてしまうようで、うまくいきません。
PHPをJISで保存するなんてことは普通しませんが、
JISでPHPを保存した場合でも、Windows CLIでうまく動作させる方法はありますか?
ttp://tsuttayo.jpn.org/bbs/read.php?FID=2&TID=519
このような記事を見つけて、書かれてる設定を加えてみたのですが、エラーは消えませんでした。
2017/10/20(金) 20:31:39.76ID:OAuKO2/4a
PHPをJISで実行しなければいけない理由は何ですか?
2017/10/21(土) 08:07:53.66ID:7N/u1SNi0
>>732
もし数行で対処出来るようなら取り入れようという感じのもので、
出来ないなら出来ないで構わないのですが、
JISで上書きしなおされるというイレギュラーに対処するためです。
2017/10/21(土) 10:33:40.68ID:LXe9cSfz0
PHPで作った自作のフォームに書き込みがなされると
メールで通知してくれるようにしている。

鯖の移転を考えてるんだけど(具体的にはByetという海外無料鯖)
あいにく候補の移転先はsendmailに非対応だったりする
(スパムメール対策だとか)

こういうときってどうやったらフォームへの書き込みを自分宛に
通知させることができるかな?
2017/10/21(土) 13:19:00.37ID:jXM7J8Fl0
>>733
PHPCSに掛けよう
大抵のルールセットはソースがUTF-8以外で書かれていればエラー扱いにしてくれる

internal_encodingの問題じゃないかとは思うが, 不正な文字コードで保存された場合にはリポジトリにpushされる時点でエラー通知が飛ぶようにするべきだな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況