質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

4回答

9880閲覧

PHP読み書き早いのはどれ?

teityann1225

総合スコア158

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/08/13 08:50

編集2017/08/16 09:41

###読み書き早いのどれ?
PHP上級者に質問です。
上級者のかたは、短めの文字列を保存・読み込みする場合、どういった方法が読み書きが早いのですか?
おすすめを教えてください。
ちなみに、私がよく使うのは、fopen関数です。
排他処理は必要ないです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

raccy

2017/08/14 05:05

排他処理は必要なのですか?例えばカウンターのカウント値は排他処理をしないと同時に読み書きされるとおかしくなります。そのような処理が必要か必要で無いかで結構異なるのでは無いかと思いますが。
guest

回答4

0

file_get_contents関数とfile_put_contents関数を使うのがいいと思います。
短いデータであれば、バッファオーバーフローの心配がないので、1行ずつ読むといったような複雑な手順を踏む必要がないためです。

投稿2017/08/13 13:04

anndonut

総合スコア667

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

アンチfopenの意見もでているので、個人的には経験則としてfopenの一択

とくに昔はファイルI/Oでfopenしないでやったときのトラブルが多々有り
チェックが二度手間になるのでむしろ最初からfopenすることにしました
(今はどうなんでしょ?よくわかりませんがfopenなら昔ながらの安定感です)
fgetcsvなど基本的にopen/closeが原則ですからね

逆にあまり気にしないなら単純に読むだけならreadfile
ちょっとした設定が必要ならcURLがよろしいかと

投稿2017/08/14 04:10

yambejp

総合スコア114829

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ここの質問でもfopen使ってる人多いけどPHPでfopenはほとんど使ったことない。
前世紀末のPerl CGIがfopen使ってたからその後のPHPもそのまま真似しただけ。
Perlから移植されたPHPを見た人が間違ったやり方を覚えてしまった。
素のPHPで書くとしてももっと便利な関数がいっぱいあるのでfopen使う理由がない。

file_get_contentsがPHP4、file_put_contentsがPHP5?
少なくともそれ以降は一度も使ってない。

さらにその後のフレームワーク時代ではfile_*_contentsさえも使わない。
内部的には使ってるけど意識しない。
今はとにかく素のPHP関数を使わないようにしている。

投稿2017/08/13 17:32

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

短めの文字列を保存・読み込みする場合

⇒短い文字列(?)のであれば、そもそもファイルに保存せず、PHPの変数に初期値で設定します。
(対象のファイルをrequire_once等になります。)

⇒短くなく、容量が多い等であれば、
ファイル操作ではなく、DB操作にします。

その他、ログ出力も、DBに格納する事が多いです。

投稿2017/08/13 12:11

tomari_perform

総合スコア760

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomari_perform

2017/08/14 06:03

> PHP読み書き早いのはどれ? > 上級者のかた ⇒議論が少し盛んでアンチfopen?が多いようなので、 そもそもの選択肢に「DB操作」と「php内の変数定義」がない場合、 以下のどっちが早いか?について追加回答しておきます。 ①「fopen()+fread()+fclose()」「fopen()+fwrite()+fclose()」「(readfile())」 ②「file_get_contens()」「file_put_contents()」 ”処理速度”であれば、①の方が速く、 "開発速度"であれば、②の方が速いです。 理由は、②は後発でできた標準関数であり、 関数の中身では思いっきり①を行っています。 ※詳細はphpフォルダ内にfile_get_contens.php、file_put_contens.phpと言うファイルがあるので、  気になるなら中身を見てください。 そのため、"処理速度"としては、あらかじめ、どんなファイルが来るか分かって設計されている分、 余計な処理がない①の方が早く安定して処理ができます。 "開発速度"としては、記述行数が少なく、①周りでのバグが発生しないので、 (ファイルに対する設計をしない場合は運が良ければ)②で対応した方が早いです。 ①は(設計ができないとバグだらけになるので)玄人向き、 ②は初心者・誰でも向き、なイメージですかね。 ちなみに、「なぜ、(玄人が作れば)①の方が安定感があるのか」というと、 操作するファイルに対して”しっかり設計・製造しているため、設計を見直さなければならないような根本バグのリスクが低く”、 後発で追加された関数は、”バージョンアップで修正される可能性があり、 開発者によってはファイルに対する設計漏れ(関数の中身任せ)があり、 設計バグが発生する可能性がある"ためです。 (とはいえ、ここ10年以上変更されてない関数なので、そんな簡単に変更はないと思いますが) ちなみに、私ならデータベース…ですが、、、上記①②のどちらかを選べと言われても、ケースバイケースです。 その対象のファイルに対して、 誰が操作できるのか、 ファイルが削除される可能性を考えたり、 書き込まれる可能性を考えたり、 読み込み中に中身が変更されたら変更前と変更後のどちらを読み込むのかを考えたり、 どのくらいのデータ量なのか、 ファイルロックが必要なのか、etc... これらを考えずに「とりあえず動けば良いや」で、 ②にして(万が一バグが出ても)問題ないシステムであれば、②が楽ですが、 そういう考えのエンジニアにはなりたくないですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問